galvani-v0.38/0000755000175000017500000000000014713174213013124 5ustar burkardburkardgalvani-v0.38/icon/0000755000175000017500000000000014713174213014054 5ustar burkardburkardgalvani-v0.38/icon/galvani.svg0000644000175000017500000002126714713174213016226 0ustar burkardburkard image/svg+xml g galvani-v0.38/icon/scalable/0000755000175000017500000000000014713174213015622 5ustar burkardburkardgalvani-v0.38/icon/scalable/galvani.svg0000644000175000017500000002126714713174213017774 0ustar burkardburkard image/svg+xml g galvani-v0.38/icon/128x128/0000755000175000017500000000000014713174213015011 5ustar burkardburkardgalvani-v0.38/icon/128x128/galvani.png0000644000175000017500000001772514713174213017154 0ustar burkardburkardPNG  IHDR>a pHYs'^'^XtEXtSoftwarewww.inkscape.org<bIDATxy|ՕUZZ{kpXbǐ0dB&%f2L6! !!lL񂱱1clڥ֭޻jIVWuNԿϧ>=ܪSs ܅A qd`#s(GF82 0ǑQ9t!#/GAC @UØ̇c:~b* {:Bd0eIV7SR=x;c2J3H;dޟj~ ZQU;7y*ERR9Qx̗"(²nY~RD2/tdRJ{{8dWr~>2=M>siAf--C*,'*iB4D.冗NW CHH|A%r hI=KQy,mT `w;E5h92OVvYcE +(֥( WuӰx}b!qH JZuKF0EM HRC0-dcӥ{\ JMDHRr뼊QNI;29q  .eI?M?}Sqez9ql4,,$CҐ&yRVp( mu <(ϭO2>pP6PYn'H ?2KQ=(rPc8j 3UVhhFa%4$eϡva} RմhVhDDEC?@vnٹd܄~C?Xo(Sw˔"3H }I> ٚs WmB. _G,Aj&' zx4N+YEs\Rj0v!iiMWx9HDI~Ҕ j0[,IUo}A|R͹9gx~3ٻ=`f_\s*P?'a٪ƅӒdJ%sF"=v=0`@Ξ`[K𺇩l?l/U0="J|[PȟUOd0.h;]ћ9s͹=h{8n}5,;"chas떽ϳk9S?Өv YE挃bk\X<%xHlx%M7ˏRyW{Ew/" zA i2JNWOYdbL`||7"Ja_@ ΃g̳tʥ"t-[+kWy,_eΉKxg! dv䧿BU#"m uۦ~F `vзE%C!¡A-)c3 sqL*HbI) D2c[?Oay%%D1;n R0Hyu={}sѵx(#1%.]EB O OaԥY@j@A'J7.]k #,FVe Gx;j3ǃEMS'w_gAUӂsZm2'Toc^}c\׺?T1/v^ok2!j& wkdd~ޟ־noh/Է`1ҍ\jF*xN ,xɕD4ʚ|kzD ދ^w/G5'ь{9T?_8P̅gh6 B|L=I?@5ɟq22!y`Z@58I`#A%y.ZJ0ڭ*52yANr``bb݉4 gwߣ֟Y罼o0 8zP' \!B@iq0C7zR!= "DUu\RJh=>DѸɚ,IXV*&o o'~9C+:-XLͼ3j[I,*F_~NVyG>+Qj }i]:Q\&PXVA'b1&ȘLf*d9RŬ[%/n= _96K܀nᙓ~niGPrriAk늷8r{9yݗ?f.ZT3TktXһ]P;WTYj^= `P#cyuIJjڟ2vY?;}RE G@EEģCk:F^B++cBDⱇPM&zn#v/0!B-sw{"oT7p+Y7lDM"EG>Zv+ϊUHEi x)w!pE߅/oګf_x)1BAgz5=n'jwThzuGM} 4Kev!D=7OmlSD1*K$BVm%bIzV w[2|6Yv es@< Mk7'0m "O`dX'2or'e9ZT<9ם"˸ "|#np80-d=w\Éާ,&N<Ļosp~@aI] C+BU%+hHDaY_m{LNiKY^@AI|3(]9"7}9xs_TU`Lv{pr (?~7N]SHQdeU{^cӬN^Ypx 8U=.iٹ"~=M?q ":N$}(XB8zO~Ѹ/ȵq.]"Ob!!>؀ 8;hr .9pUM\`{˟C+wl^.`ԞX?y* ?݆-̨7\6.qIhxd)Ǝ~kf=B{ /)@~K3 u, t&ݚ.*fhYSm!ŀ UaPhRUlsPO&Er"27LJ~Q6Ζf׻feQ^@n~>6{`Ő5nc r9ѸДge8;hN ,],ݯ0Em!+cDQt`r~f& ho((r=mHs 920Eݲ,Kȡ! bY <$:8 q<5ʺnW).݃4F,Z~] O4cxX7#b_+Ոa۔L8Hg8z@Af{%gM 4BF4@k?AAq O~BÒlfGc7N3У J|YV*^xTɱA%'/~A$4lI|t1#IDZw3 NWbɟ~M /₫o5{X[|-H5/?>軈+ W;f$OcnhMI)ɚ2ҔVT_.cqO4M&J+[Z>|ٕsoi 2Aח6lWf'gol"-]Oa!`[&IW84Nz,[>ԨtQZ=2 J_@En-E**f`R:RBr8L0ce,  i@K04_fXv `Ɍg(BLJDNJn%Ӓ'PU##ԼqOsl8olA dg%ϋcl14]g`ˉ{=~ % aͲ(I(a''0MCD K˨/F@KV׬lpR#$(9Ea3caY^h`y"MKz4ή[>y",#&/d5ʝn' LbP+c]kޝqb@cs[荿D3i=FZ0 ;{.TCۚ%(/M[{鷿m_IgmS-y% aLpKD1-Z{p_pպy譟2+e1lTś2UUli[^uSAWk ?ڗqk/,-}UX5JY(S;}C}]qWTUC uAUUONP~}/n=oWpW ho֏'p b۱eOi ~)+0kgd+]aR}Yةovh+~?n{R;ouXmYDǃE#wTm#媛oy3ޞ~(Nʢxaff1K? c<~?o{vO ;i<ٿ p|ïgߋ/p읷SH rucsDHKL g/)c69{ù\}Aڷ|ƙ!7|u^L 1f$hf(&P1HDq[hXytթ] 9~¡>Y cEBJK)iM `\Fr!])&⥇X JtdhMD!Djϣv~-0ܜ62]|aBFVHtOAS!m "z )}^$768$HJ.b41 ;Q}>¡ I } yWTՆ6B K%XV S&c[9]4RdY ˘fj ejk6X Rkf29꒥!x^ACL|t=s1zOt(f6tOѱq  ؕ1p&h3ПG%'Ƈ{p(-FʻJfNLdȡCdd  QTR{CY\ }]]fjbҥ ȒLN~#N]Uޕ!8$M(},E-Xzlj a/eVќz)(*|O&5`vz-f.dVp8|H +PvvvVmje0f;2IO(_&=6s>W83Bxn9@fzQe ޑ y58T ?gcAɲٰX-9JBUD"Ham;~E _=d0qۧO;x wU! f@_qϧ??eLYFqحVq +UcEi!$d ]osD` 629qd`#s(GF82 0ǑQ9y+- IENDB`galvani-v0.38/icon/32x32/0000755000175000017500000000000014713174213014635 5ustar burkardburkardgalvani-v0.38/icon/32x32/galvani.png0000644000175000017500000000340214713174213016763 0ustar burkardburkardPNG  IHDR szz pHYs ntEXtSoftwarewww.inkscape.org<IDATXŗkUW<=\c cqit*Tk5Q6&Xh~A#j>0D0mSl* bf30 3s=p\D,/neݵe0+  O_{]c0Pc26_>͙D›)]{ >XeQI(dq@j޷O|4(:{#/ea/鷜bed qǢƀIM 'm9;~ӜZ>ZFkMQ8jv!ؠDȦ0]xw1Y|,}'Lq.i3r8,cL3АIgj4U gyy'ޢ8e6кbkS^k|f{}k}ǞP& qP lFV,ah>w2+DA(Pa>fiP,f]!,A!df@],4xl<_3~O7`ٚu,{70O5{1Yƒ/GtM|aKa҄9ob;1iI*o5 (e#N?林0i±ChYچI,L Y?ʀm[G2 >2dCȢdnbc{$кlnaѡݻ=Mb @B1l? HP!"d؝[yŽ c #7EA5C7", ", c #6D8EAC", "' c #7599B9", ") c #7FA5C6", "! c #6E8EAB", "~ c #7699B8", "{ c #80A6C6", "] c #6C8CA7", "^ c #799DBB", "/ c #7092AE", "( c #7698B6", "_ c #80A6C5", ": c #6F8FAA", "< c #779AB7", "[ c #81A7C4", "} c #7090A9", "| c #789BB6", "1 c #995F6F", "2 c #7A95AF", "3 c #82A7C4", "4 c #6C8BA3", "5 c #789AB5", "6 c #708FA8", "7 c #69879F", "8 c #445766", "9 c #27323A", "0 c #181F24", "a c #101519", "b c #171E23", "c c #171D22", "d c #28333C", "e c #566F82", "f c #87778C", "g c #AE1B1F", "h c #7798B2", "i c #83A8C3", "j c #7191A8", "k c #7A9CB5", "l c #28333B", "m c #020202", "n c #000000", "o c #252F37", "p c #273139", "q c #0A0D0F", "r c #4C6271", "s c #AB2D34", "t c #947184", "u c #84A8C2", "v c #7291A7", "w c #7B9CB4", "x c #4E6373", "y c #050607", "z c #000101", "A c #323F49", "B c #7292A8", "C c #425461", "D c #668297", "E c #8F8297", "F c #B11C20", "G c #84A7C0", "H c #85A9C2", "I c #6F8DA1", "J c #7B9CB3", "K c #7291A6", "L c #7B9BB2", "M c #37454F", "N c #030405", "O c #4A5E6C", "P c #263037", "Q c #010202", "R c #7695AB", "S c #A82B31", "T c #906777", "U c #7A9BB1", "V c #86A9C1", "W c #7492A6", "X c #7D9DB3", "Y c #868598", "Z c #89A0B6", "` c #4E6270", " . c #526776", ".. c #0E1214", "+. c #171C21", "@. c #8A7C8D", "#. c #86A8BF", "$. c #86AAC0", "%. c #7493A5", "&. c #7D9EB2", "*. c #9C616D", "=. c #B11518", "-. c #AF2024", ";. c #87A7BD", ">. c #6F8DA0", ",. c #2E3B42", "'. c #7A9BAF", "). c #303D45", "!. c #A5353C", "~. c #996977", "{. c #87AAC0", "]. c #708E9F", "^. c #7C9DB1", "/. c #7392A4", "(. c #828D9F", "_. c #B31012", ":. c #798696", "<. c #A72E33", "[. c #8F6C7A", "}. c #283239", "|. c #020303", "1. c #6D8B9C", "2. c #586F7E", "3. c #455763", "4. c #83899B", "5. c #B21012", "6. c #7E99AC", "7. c #7B9CAF", "8. c #88ABBF", "9. c #7594A5", "0. c #7E9FB2", "a. c #A5474F", "b. c #9F5963", "c. c #996E7B", "d. c #A83E46", "e. c #6A8696", "f. c #010101", "g. c #293339", "h. c #465862", "i. c #66808F", "j. c #A44B54", "k. c #9A525C", "l. c #89ABBF", "m. c #7694A5", "n. c #7F9FB2", "o. c #8BA2B5", "p. c #B40F11", "q. c #8CA0B2", "r. c #414E58", "s. c #566B78", "t. c #2C373D", "u. c #81A1B4", "v. c #8CA1B4", "w. c #B51012", "x. c #8493A5", "y. c #8AACBE", "z. c #73909F", "A. c #7F9FAF", "B. c #7693A3", "C. c #975F68", "D. c #A33D43", "E. c #AA292D", "F. c #45181B", "G. c #6D8897", "H. c #809DAD", "I. c #A73136", "J. c #B11214", "K. c #8296A5", "L. c #111517", "M. c #985A64", "N. c #A24147", "O. c #7E9DAE", "P. c #8BACBD", "Q. c #7895A4", "R. c #81A0B0", "S. c #AF2327", "T. c #958693", "U. c #9A6974", "V. c #790101", "W. c #111618", "X. c #9F626B", "Y. c #AA373C", "Z. c #A1444B", "`. c #9F5E68", " + c #6E8996", ".+ c #2C363B", "++ c #B02024", "@+ c #958996", "#+ c #8BADBD", "$+ c #7896A4", "%+ c #8C838F", "&+ c #B11D20", "*+ c #81A1B0", "=+ c #8097A4", "-+ c #A70000", ";+ c #150000", ">+ c #1C2327", ",+ c #839CAA", "'+ c #B41415", ")+ c #9195A2", "!+ c #8D7F8B", "~+ c #B02225", "{+ c #415159", "]+ c #44555D", "^+ c #8C828E", "/+ c #B11F21", "(+ c #8CADBC", "_+ c #75919D", ":+ c #819FAD", "<+ c #9D3E44", "[+ c #995961", "}+ c #7894A1", "|+ c #728C99", "1+ c #560000", "2+ c #780000", "3+ c #1D2427", "4+ c #94565D", "5+ c #A53A3F", "6+ c #AD2023", "7+ c #91737D", "8+ c #857882", "9+ c #580607", "0+ c #190000", "a+ c #576B75", "b+ c #9D3F45", "c+ c #9A5860", "d+ c #809EAC", "e+ c #8DAEBB", "f+ c #7A97A2", "g+ c #8FA8B4", "h+ c #B40F10", "i+ c #90A1AD", "j+ c #83A2AE", "k+ c #8CADBA", "l+ c #0D0B0C", "m+ c #900000", "n+ c #710303", "o+ c #B21214", "p+ c #94949F", "q+ c #968993", "r+ c #B2181A", "s+ c #9F0A0B", "t+ c #630000", "u+ c #A50000", "v+ c #440000", "w+ c #7995A0", "x+ c #8EA9B6", "y+ c #919FAB", "z+ c #8EAEBB", "A+ c #7B97A2", "B+ c #9E6F78", "C+ c #A7383C", "D+ c #84A2AE", "E+ c #404F55", "F+ c #080000", "G+ c #500000", "H+ c #482022", "I+ c #82A0AC", "J+ c #6A828B", "K+ c #20282B", "L+ c #2A3337", "M+ c #121618", "N+ c #160000", "O+ c #9E0304", "P+ c #9E5359", "Q+ c #8EADBA", "R+ c #9E6B73", "S+ c #A7373B", "T+ c #8FAFBA", "U+ c #78929B", "V+ c #84A1AB", "W+ c #AC282B", "X+ c #8B6E75", "Y+ c #7B969F", "Z+ c #779199", "`+ c #242C2F", " @ c #060707", ".@ c #344044", "+@ c #78929C", "@@ c #332E31", "#@ c #A8292C", "$@ c #AC2628", "%@ c #B31213", "&@ c #857D85", "*@ c #83A0AA", "=@ c #90AFBA", "-@ c #7D97A1", ";@ c #9696A0", ">@ c #B41718", ",@ c #86A2AC", "'@ c #86A3AD", ")@ c #8FAEB9", "!@ c #5E737A", "~@ c #2F3A3D", "{@ c #242B2E", "]@ c #2B3538", "^@ c #3F4C51", "/@ c #758E97", "(@ c #6A8088", "_@ c #4E5F65", ":@ c #998A93", "<@ c #96949D", "[@ c #90B0B9", "}@ c #7D98A0", "|@ c #A55458", "1@ c #A45A5E", "2@ c #86A4AC", "3@ c #435156", "4@ c #779198", "5@ c #91B0B8", "6@ c #7A9197", "7@ c #B41213", "8@ c #8C8F96", "9@ c #7C979E", "0@ c #86A2AA", "a@ c #607479", "b@ c #63787E", "c@ c #829EA5", "d@ c #0E1112", "e@ c #1E2426", "f@ c #85A1A8", "g@ c #92B1B8", "h@ c #906B6F", "i@ c #AE3335", "j@ c #88A5AB", "k@ c #8FADB4", "l@ c #040505", "m@ c #283132", "n@ c #4B5B5F", "o@ c #6E868B", "p@ c #93B1B7", "q@ c #8F7073", "r@ c #9D8388", "s@ c #89A5AA", "t@ c #778F94", "u@ c #070809", "v@ c #809A9F", "w@ c #88A4A9", "x@ c #56686C", "y@ c #4A595B", "z@ c #94B2B6", "A@ c #7B9497", "B@ c #88A4A8", "C@ c #7F989C", "D@ c #536467", "E@ c #364243", "F@ c #485658", "G@ c #526365", "H@ c #414E50", "I@ c #161A1B", "J@ c #090B0B", "K@ c #56686A", "L@ c #88A2A6", "M@ c #95B2B6", "N@ c #80999D", "O@ c #8AA5A9", "P@ c #90ACB0", "Q@ c #5F7174", "R@ c #2E3738", "S@ c #141819", "T@ c #040404", "U@ c #1F2526", "V@ c #506062", "W@ c #8AA5A8", "X@ c #96B3B5", "Y@ c #7F989A", "Z@ c #92AEB0", "`@ c #87A1A3", " # c #80999B", ".# c #88A2A4", "+# c #8AA5A7", "@# c #96B3B4", "## c #7E9697", "$# c #8EA9AA", "%# c #839D9E", "&# c #89A4A5", "*# c #97B4B4", "=# c #829B9B", "-# c #8CA7A7", ";# c #97B3B2", "># c #98B4B3", ",# c #7F9594", "'# c #88A1A0", ")# c #7F9695", "!# c #8AA4A3", "~# c #96B2B1", "{# c #92ADAA", "]# c #99B5B3", "^# c #95B1AF", "/# c #91ABA9", "(# c #97B3B1", "_# c #92ADAB", ":# c #869D9A", "<# c #92ACA9", "[# c #99B4B1", "}# c #9AB5B2", "|# c #879F9C", "1# c #869C97", "2# c #849C98", "3# c #869D99", "4# c #859B98", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ ", "# $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % ", "& & * = = - = = = - = = - = = - = = - = = = - = = - = = - = = - = = = ; & & ", "> > , > > ' > > > ' > > ' > > ' > > ' > > > ' > > ' > > ' > > ' > > > ' > > ", ") ) ! ) ) ~ ) ) ) ~ ) ) ~ ) ) ~ ) ) ~ ) ) ) ~ ) ) ~ ) ) ~ ) ) ~ ) ) ) ~ ) ) ", "{ { ] ^ ^ / ^ ^ ^ / ^ ^ / ^ ^ / ^ ^ / ^ ^ ^ / ^ ^ / ^ ^ / ^ ^ / ^ ^ ^ ( { { ", "_ _ : _ _ < _ _ _ < _ _ < _ _ < _ _ < _ _ _ < _ _ < _ _ < _ _ < _ _ _ < _ _ ", "[ [ } [ [ | [ [ [ | [ [ | [ [ | [ [ | [ [ [ | [ [ | [ [ | [ [ | [ [ 1 2 [ [ ", "3 3 4 5 5 6 5 5 5 6 5 5 6 5 5 6 5 5 6 7 8 9 0 a b c d e 6 5 5 6 5 f g h 3 3 ", "i i j i i k i i i k i i k i i k i j l m n c o p q n n r k i i k i s t k i i ", "u u v u u w u u u w u u w u u w x y z A B u w u C n n D w u u w E F G w u u ", "H H I J J K J J J K J J K J L M n N O J J J K J P n Q R K J J K S T J U H H ", "V V W V V X V V V Y Z V X V ` n n .X V V V X V ..n +.V X V V @.F #.V X V V ", "$.$.%.$.$.&.$.$.*.=.-.;.&.>.y n ,.$.&.$.$.$.&.'.n n ).$.&.$.$.!.~.$.$.&.$.$.", "{.{.].^.^./.^.(._.:.<.[./.}.n |.1.^./.^.^.^./.2.n n 3.^./.^.4.5.6.^.^.7.{.{.", "8.8.9.8.8.0.8.a.b.0.c.d.e.f.n g.8.8.0.8.8.8.0.h.n n i.8.0.8.j.k.8.8.8.0.8.8.", "l.l.m.l.l.n.o.p.o.n.q.p.r.n n s.l.l.n.l.l.l.n.t.n z u.l.n.v.w.x.l.l.l.n.l.l.", "y.y.z.A.A.B.C.D.A.B.A.E.F.n f.G.H.I.J.K.A.A.B...n L.A.A.B.M.N.B.A.A.A.O.y.y.", "P.P.Q.P.P.R.S.T.P.R.P.U.V.n W.R.X.Y.Z.`.P.P. +n n .+P.P.R.++@+R.P.P.P.R.P.P.", "#+#+$+#+#+%+&+#+#+*+#+=+-+;+>+,+'+)+!+~+#+#+{+n n ]+#+#+^+/+#+*+#+#+#+*+#+#+", "(+(+_+:+:+<+[+:+:+}+:+|+1+2+3+4+5+:+}+6+7+8+9+0+n a+:+:+b+c+:+}+:+:+:+d+(+(+", "e+e+f+e+g+h+i+e+e+j+e+k+l+m+n+o+p+e+j+q+r+s+t+u+v+w+e+x+h+y+e+j+e+e+e+j+e+e+", "z+z+A+z+B+C+z+z+z+D+z+z+E+F+G+H+w+z+I+J+K+L+M+N+O+P+Q+R+S+z+z+D+z+z+z+D+z+z+", "T+T+U+V+W+X+V+V+V+Y+V+V+Z+`+n n n @m n .@+@f.n @@#@$@%@&@V+V+Y+V+V+V+*@T+T+", "=@=@-@;@>@,@=@=@=@'@=@=@'@)@!@~@{@]@^@/@=@(@n n _@,@:@<@'@=@=@'@=@=@=@'@=@=@", "[@[@}@|@1@2@[@[@[@2@[@[@2@[@[@2@[@[@2@[@[@3@n n 4@2@[@[@2@[@[@2@[@[@[@2@[@[@", "5@5@6@7@8@9@0@0@0@9@0@a@b@0@0@9@0@0@9@0@c@d@n e@0@9@0@0@9@0@0@9@0@0@0@f@5@5@", "g@g@h@i@g@j@g@g@g@j@k@l@m@g@g@j@g@g@j@g@n@n f.o@g@j@g@g@j@g@g@j@g@g@g@j@g@g@", "p@p@q@r@p@s@p@p@p@s@t@n u@v@p@s@p@p@w@x@m n y@p@p@s@p@p@s@p@p@s@p@p@p@s@p@p@", "z@z@A@B@B@C@B@B@B@C@D@n n @E@F@G@H@I@n J@K@C@B@B@C@B@B@C@B@B@C@B@B@B@L@z@z@", "M@M@N@M@M@O@M@M@M@O@P@Q@R@S@ @n n T@U@V@W@M@O@M@M@O@M@M@O@M@M@O@M@M@M@O@M@M@", "X@X@Y@Z@Z@`@Z@Z@Z@`@Z@Z@`@Z@Z@ #.#Z@`@Z@Z@Z@`@Z@Z@`@Z@Z@`@Z@Z@`@Z@Z@Z@+#X@X@", "@#@###$#$#%#$#$#$#%#$#$#%#$#$#%#$#$#%#$#$#$#%#$#$#%#$#$#%#$#$#%#$#$#$#&#@#@#", "*#*#=#*#*#-#*#*#*#-#*#*#-#*#*#-#*#*#-#*#*#*#-#*#*#-#*#*#-#*#*#-#*#*#*#-#*#*#", ";#>#,#'#'#)#'#'#'#)#'#'#)#'#'#)#'#'#)#'#'#'#)#'#'#)#'#'#)#'#'#)#'#'#'#!#>#~#", "{#]#^#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#(#]#_#", ":#<#[#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#[#<#|#", " 1#2#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#2#4# "}; galvani-v0.38/icon/48x48/0000755000175000017500000000000014713174213014653 5ustar burkardburkardgalvani-v0.38/icon/48x48/galvani.png0000644000175000017500000000500714713174213017004 0ustar burkardburkardPNG  IHDR00W pHYsodtEXtSoftwarewww.inkscape.org< IDAThyl?3{س61 Mp $!$E!@[(ARAhKU BZ(TҢE)EJQ*(4 6!8qpķ;{]m*J{7+g{_Vvl9"w:gaL4-Vi d9 ?<$|ecxj4R,  i1&1Kxt=FM wATppg1%Z\t1Ui S1@UxsD@7zf=SogOo[_c9ѓ$zL`F .* i{j2;'B,`K5UES`b1% zdAHT,"hZ}@b[n\UzbvqMOvܴЉ,-a\Gpͳ_E˺`]O?DrZ,n9^yoDRЁ GQ7-F=UZ(S"!m~#-1kRNt T7aZEKВہ틌m.7y~Pnc6 $9]ou䶙_g9um`6!X9P>FS]HE9 F8(o{<;:_gѡ(:yk~!ٝ9pnM&NWlz6zDVt]畍 e%X;'cak5ӕ߰ nXԃeۨ^8'g /SZ}:b4Lue+s=cETr $c_7p[K572U2uAgIG PQ[O$Ln #+QPJ4Hml6pM_N,J߲\n5Suh +Wp>SHdF.t*vb/6LLΧہa?W&A@Sc,'jp!c :ekΛv2v\%XRLɻJ44߃[ ΙkG(`- ^⃧ %D^5 xz} w d;~u;at5Y!rc.}Т+(ٵ$#{ ӯlo5`ޓ݇ `X+l x'QlvjŔYhiٌr{ݽ9q6&BlFd9sy9ކt[ê[og5k }n~O)}>(''_h[WB8Lhle4\}GD$P@6rp' q\K_<# O98m3*0J8ٔh'Jf`6%Ϟ=4,3EŢXgbk<{'^d(#٥4@=@|#GɧJi͆(2LٿHL4'pp`]y(?;4Ufak0ۃf#Pc ݑowS(؝4YR ([6m`2[DD0\v }]Q (J:Ngbw?0߼vGOCccH6;M.[_ϼ˗.$v)ggr,,@r /G…fs8 l6<8 a 9S+%!NѕhZTTt1c Mct3̡,tME48! PI+UX_.bx2Yt@F$:)ˣgJvŌʴe%Ͽ%$5K%e5'ooVbfP0HPo2EEeG0p%β|ٖZa7 IENDB`galvani-v0.38/icon/64x64/0000755000175000017500000000000014713174213014647 5ustar burkardburkardgalvani-v0.38/icon/64x64/galvani.png0000644000175000017500000000752614713174213017010 0ustar burkardburkardPNG  IHDR@@iq pHYsctEXtSoftwarewww.inkscape.org<IDATxy\u6[w*hцHBZXTA,E2RơANBؖST%DA&v"6@m0K{GL 2;;w{,閯pp+pѩ^~Q\Eq ~sDح?{x*PqBj͊mhՏ)/RRtZ S@S =ɜ±@s' jz/=\UF{t0@]}q" Sbt`R(e߿R# ]<͸JYe!^?]׳ Aä+X*hNm߿(%|O`6oz|ʸ(љ܏)ם _ϐX/EpQ+3]%ۆmU+I$؇;QX(JJEٌ-JW &rqq@$^E54Y?^X8X54)M ͅrHcU*RR椮Ʉd *۬ gW fX;sD]u8lHJM гbÃdi4SE}K+NkDB2?E|J @nIp@q)g+], 4rttK&FKk+oWɏRD$:czWl 1M&3hq2s@ T.^~ع) 9Tr UR", -q:et:z}\ߎ(&jIS>d8-(xwgNbא76gJK.ߕd0к}x?Uu\8gѥ| 3%ö/!u|a/^Jj3X)$cF{$49REl)&#w&P}>P '(L[NRc}"u<Gza}ND#Fn~+:v7HY~#nJ*^x ;OU5 X$Twמ?-c[y~D=|pߓηqh`D&A AMP8@|>T ˾h }>A|RvoLd0`؝`1Zǖ)!@1},[l7 ::{."_RϘi-/~f>'9|zTb`ɕ^[H}7zlǶUD(E _}cn3nE‘}ڈu&Q("S5 ΅ă}$Q;6&:$='? 7r{p nk3pτq&4_G(TF7mIPAc9qJΟEΛ9oC/%2{&۶)'5ڶW]ÁPZY5f hHkqWU[ \̲= &F#<b=sh/9gXf;i\i4#kjХ,$8̄u^y ,C3f ,/rW2 gp[1765Ap Tn]Z,`Sc#QRkش$'MƵ{ {֡W.7pEߵ7RC&*KI p6V8PI$6CHK /qʝut7]ȚZNUUΏ~p3a-p7p p݁hn7Hh OaTE MoJrlֹx…[vڜyytq+q?9G3vR*N|̉#]|v\*</`mk;4wv E+G#F S~@TjF9󠥙Bb$D:UVkWs! G[^z6tE2jXncy~CݫV3?ù~B:RJ&MIsM>\D. u*⤔e:ӅyW8~pQh0\9r{  >ڧ 3y*マoNx7qER8Kw:>4A&MD̓PȚp,t]ˮfpӉ:MF2bʹA(duKbF,ӧ @= ^TٌЄl ,վ=)|`ڹs34!ЊN)1w2Ȼ؂ޅJI'CQ҉)|@<fV1G!fMy6FRfMR?Jc2$mch1oo&>SRz:QAJu~=ݬ_]dI]{l+n.u~Cvrm(PJ}M0]B]^ѦB!؁}޾7`]|r&8"ʯ E{D/X0r8c {.o~E}}baD)&a2ܳ_v q)g  r~ozcڟ߼T2~(rLWx4Y{1(L "EQ=k.fJ)A@Ǥ3!GY\&&8P`[,8JJNVv6KH%X&~zvm}]]||==DBIn>nju:/YBk[[E0N3AcgW` JE̙wE&@G/W :SR HHI<E+]%+((æsR)>' 668@H8m1VJ0J1OvV;J1F VrRS'E2tZxX 4Z&NjH N$Bإ͚ҳY]-1_t1rQt=K& 7+m=p](ƝQJӥ\[:pp+e xIENDB`galvani-v0.38/galvani.appdata.xml0000644000175000017500000000234314713174213016702 0ustar burkardburkard com.gitlab.galvani galvani.desktop GPL-2.0-or-later CC0-1.0 Galvani Reads data from a device with graphical plots and evaluation

Galvani reads data from a digital multimeter or other measurement device through a serial interface. Data are plotted graphically and can be evaluated in different forms (Peak-Integration of Chromatogramms, Differential Analysis and other). Additionally data can be produced by a simulation.

Science DataVisualization NumericalAnalysis https://gitlab.com/galvn/galvani/
galvani-v0.38/configure.ac0000644000175000017500000000142014713174213015407 0ustar burkardburkarddnl Process this file with autoconf to produce a configure script. dnl Created by Anjuta application wizard. AC_INIT(galvani, 0.38) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIRS([m4]) AM_INIT_AUTOMAKE([1.11]) AM_SILENT_RULES([yes]) AC_PROG_CXX dnl *************************************************************************** dnl Internationalization dnl *************************************************************************** GETTEXT_PACKAGE=galvani AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.21]) LT_INIT PKG_CHECK_MODULES(LIBSERIAL,libserial) PKG_CHECK_MODULES(GALVANI, [gtkmm-3.0 ]) AC_OUTPUT([ Makefile src/Makefile po/Makefile.in ]) galvani-v0.38/src/0000755000175000017500000000000014713174213013713 5ustar burkardburkardgalvani-v0.38/src/ui/0000755000175000017500000000000014713174213014330 5ustar burkardburkardgalvani-v0.38/src/ui/eval.ui0000644000175000017500000017733614713174213015637 0ustar burkardburkard False Data Evaluation dialog False vertical 2 False end Close True True True True True end 0 False False 0 True False vertical 20 True False Linear Regression False True 2 0 True True True in True False True natural natural True True True natural natural False word 10 False False True True 1 True True 1 evaloptions_ok1 True False gtk-apply True False gtk-cancel True False go-previous 0.10 90 0.10 10 0.01 100 0.01 10 100 0.01 10 False Data evaluation center 700 450 dialog False vertical 2 False end Reset True True True image6 True True end 0 Cancel True True True image5 True True 1 OK True True True image4 True True end 2 False False end 1 True True left True True in True False natural natural True False vertical True False start 5 5 200 True False start Channel X: 0.05000000074505806 False True 0 False True 10 0 True False start 200 True False start 20 Titrator Volume 2.2351741291171123e-10 False True 0 True True Time -> Volume start center True False True 1 True True start center 7 0,00 number voltime 0.10 3 True if-valid False True 10 2 True False ml/min False True 3 False True 2 1 True False start 200 True False start 20 Thermocouple 2.2351741291171123e-10 False True 0 True False none Cu/CuNi Ni/NiCr False True 1 False True 2 2 True False start 200 True False start 20 Inversion 2.2351741291171123e-10 False True 0 True True x -> 1/x start center True False True 1 False True 2 3 True False start 200 True False start 20 Logarithm 2.2351741291171123e-10 False True 0 True True x -> log x start center True False True 1 False True 2 4 True False start 5 5 200 True False start Channel Y: 0.05000000074505806 False True 0 False True 10 6 True False start 200 True False start 20 Thermocouple 2.2351741291171123e-10 False True 0 True False none Cu/CuNi Ni/NiCr False True 1 False True 2 7 True False start 200 True False start 20 Inversion 2.2351741291171123e-10 False True 0 True True x -> 1/x start center True False True 1 False True 2 8 True False start 200 True False start 20 Logarithm 2.2351741291171123e-10 False True 0 True True x -> log x start center True False True 1 False True 2 8 True False Data Transformation 0 False True True in True False True False vertical True False 200 True False start 20 Function Graph 0 False True 0 True True True start Colour of Function Graph True False False 1 False True 2 0 True False 200 True False start 20 Linear Regression 0 False True 0 True True end center False False 1 False True 2 1 True False 200 True False start 20 Differential Function 0 False True 0 True True end center False False 1 True False Minimum: False True 4 2 True True Percent of maximum derivative start center 5 0,01 number min_diffheight 0.10 1 True if-valid 0.01 False True 10 3 True False % 3 False True 4 False True 2 2 True False 200 True False start 20 Peak-Integration 0 False True 0 True True end center False False 1 True False Minimum: False True 4 2 True True Percent of Y-scale start center 5 0,00 number min_peakheight 0.10 2 True if-valid False True 10 3 True False % 3 False True 4 False True 2 3 True False vertical True False 200 True False start 220 Show Baseline 0 False True 1 True True end center False False 2 False True 0 True False 200 True False start 220 Show Peak Limits 0 False True 1 True True end center False False 2 False True 2 1 True False 200 True False start 220 Show Peak Area 0 False True 1 True True end center False False 2 False True 2 2 False True 2 4 1 True False Functions 0 1 False True True 0 evaloptions_reset evaloptions_cancel evaloptions_ok galvani-v0.38/src/ui/options.ui0000644000175000017500000123307114713174213016371 0ustar burkardburkard True False gtk-cancel True False gtk-apply False Choose File dialog True False vertical 2 False end Cancel True True True Abbrechen True True 0 Save True True True OK True True 1 False False 0 dmmoptions_save_cancel dmmoptions_save_ok 0.10 10 0.10 10 True False document-open True False document-save True False gtk-apply True False gtk-cancel True False go-previous True False document-open True False document-save 0.01 3600 1 0.001 10 15 1 10 15 1 10 1 4 1 10 1 4 1 10 0.10 10 0.10 10 -1 1 0.01 10 0.002 0.029999999999999999 0.005 0.001 10 0.01 0.0001 0.0001 10 0.10 10 0.10 10 20 300 180 10 10 1 20 1 1 10 0.10 10 0.10 10 -1 1 0.01 10 0.001 1 0.001 10 5 50 5 1 10 10000 1 10 10000 1 10 64 1 10 64 1 10 -100 1000 0.01 10 -1000 1000 0.01 10 -1000 1000 0.01 10 -1000 1000 0.01 10 False Settings center 900 620 dialog False vertical 2 False end Reset True True True image6 True True end 0 Cancel True True True image5 True True 1 OK True True True image4 True True end 2 False False end 0 True True left True True in True False natural natural True False vertical True False start 100 True False start 20 0 Background: 2.2351741291171123e-10 False True 0 True True True start Diagram background True False False 2 False True 0 True False start 100 True False start 20 Axes: 0 False True 0 True True True start Colour of Axes True False False end 1 False True 1 True False start 100 True False start 20 Grid: 2.2351741291171123e-10 False True 0 True False True True True start center True False True 0 True True True Colour of grid True False False 1 False True 1 False True 2 True False 100 True False start 20 Values: 0 0.10000000149011612 False True 0 True False vertical True False True False symbol for data points no symbol cross circle square diamond False True 0 True False symbol style 0 outline filled False True 1 True True magnitude of symbols in points start number symwidth True if-valid False True 2 False False 0 True False True False connection between data points no connection line curve False True 0 True False linestyle solid dashed dotted False True 1 True True True start Colour of data points True False False 2 False True 1 True True 1 False True 3 True False 100 True False start 20 Scaling: 0 0.05000000074505806 False True 0 True False vertical top True False 4 5 True False auto: False True 0 True True start center True False True 1 False True 0 True False start 6 manual: False True 1 True False 3 True False xmin: False True 0 True True start center 7 number xmin 0.10 2 True if-valid False True 1 True False xmax: False True 2 True True end center 7 number xmax 0.10 2 True if-valid 100 False True 3 False True 2 True False 3 True False ymin: False True 0 True True start center 7 number ymin 0.10 3 True if-valid False True 1 True False ymax: False True 2 True True end center 7 number ymax 0.10 3 True if-valid 1 False True 3 False True 3 True False 5 10 True False Show Zero: False True 0 True True False True 1 False True 4 True True 1 False True 4 True False start 100 True False start 20 Project title: 2.2351741291171123e-10 False True 0 True True Show Project title as headline in diagram start center True False True 1 False True 5 True False start Diagram False True True in True False True False vertical True False True False 120 True False start 20 Source 0 False True 0 True False Device or simulation start Time Digitalmultimeter Simulation False True 1 True False Type of simulation Linear False True 2 False True 0 False True 0 True False vertical True False 120 True False start 20 Typ 0 False True 0 True False Type of Device start True True False True 1 Load True True True image8 False True 2 Save True True True image9 False True 3 False True 0 True False start 120 True False start 20 Interface 0 False True 0 True False List of vailable ports. Connect serial USB-Adaptor first. start /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4 /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4 False True 1 60 True False end SCPI False True 2 True True Send SCPI commands? end center False True 3 120 True False end 20 Remote Control 0 False True 4 True True Remote Setup possible? end center False False 5 False True 1 False True 1 True False True False vertical True False vertical True False 120 True False Baudrate in bit/s start 20 Baudrate 0 False True 0 True False 600 1200 1800 2400 4800 9600 19200 38400 57600 115200 False True 1 False True 1 True False 120 True False Number of data bits start 20 Charsize 0 False True 0 True False Number of data bits True 7 8 False False True 1 False True 2 True False 120 True False start 20 Flow control 0 False True 0 True False True hardware software none False False True 1 False True 3 True False 120 True False Number of Stopbits start 20 Stopbits 0 False True 0 True False True 1 2 False False True 1 False True 4 True False 120 True False start 20 Parity 0 False True 0 True False True odd even none False False True 1 False True 5 True False 120 True False start 20 Polling 0 False True 0 True True Send Character for data polling end center False False 1 False True 6 True False 120 True False start 20 Bytes 0 False True 0 True True Number of transmitted Bytes 0 number num_bytes_1 True if-valid False True 1 False True 7 True False 120 True False start 20 Values 0 False True 0 True True Number of transmitted data values 1 number num_val_1 True if-valid 1 False True 1 False True 8 True False 120 True False start 20 Timeout 0 False True 0 True True Timeout in milliseconds 0 number timeout_1 2 True if-valid False True 1 False True 9 False True 0 True False vertical True False 120 True False start 20 Bytes (USB) 0 False True 0 True True Number of transmitted Bytes 0 number usb_bytes_1 True if-valid False True 1 False True 0 False True 1 False True 0 True False vertical True False vertical True False 150 True False start 20 Function 0 False True 0 True False Measurement function DC Voltage AC Voltage DC Current AC Current Resistance Conductivity pH Temperature False True 1 False True 0 True False 150 True False start 20 Range 0 False True 0 True False Function range True 200 mV 2 V 20 V 200 V 1000 V 200 uA 200 mA 20 A 200 Ohm 2 kOhm 20 kOhm 200 kOhm 2 MOhm 20 MOhm 200 mS pH °C False False True 1 False True 1 False True 0 True False vertical True False 150 True False start 20 DC Voltage 0 False True 0 True False Control String True False False True 1 False True 2 True False 150 True False start 20 AC Voltage 0 False True 0 True False Control String True False False True 1 False True 3 True False 150 True False start 20 DC Current (mA) 0 False True 0 True False Control String True False False True 1 False True 4 True False 150 True False start 20 AC Current (mA) 0 False True 0 True False Control String True False False True 1 False True 5 True False 150 True False start 20 DC Current (A) 0 False True 0 True False Control String True False False True 1 False True 6 True False 150 True False start 20 AC Current (A) 0 False True 0 True False Control String True False False True 1 False True 7 True False 150 True False start 20 Resistance 0 False True 0 True False Control String True False False True 1 False True 8 True False 150 True False start 20 Conductivity 0 False True 0 True False Control String True False False True 1 False True 9 True False 150 True False start 20 pH 0 False True 0 True False Control String True False False True 1 False True 10 True False 150 True False start 20 Temperature 0 False True 0 True False Control String True False False True 1 False True 11 False True 1 False True 1 False True 2 True False vertical True False 100 True False 120 Slope False True 0 True False end 20 auto: False True 1 True True select slope auto for random slope start center True False True 2 True True start 20 sim1_slope_val 0.10 2 if-valid False True 4 False True 0 True False 100 True False 120 Deviation False True 0 True False end 20 auto: False True 1 True True Select uncertainty of value. Effective deviation is randomized. start center True False True 2 True True start 20 sim1_shift_val 0.10 1 if-valid False True 3 True False start 10 % False True 4 False True 1 False True 3 1 True False Measurement Data Channel 1 (X) 1 False True True in True False True False vertical True False 120 True False start 20 Source 0 False True 0 True False Device or simulation start Digitalmultimeter Simulation Device False True 1 True False Type of simulation Linear Exponential Chromatogram pH False True 2 False True 0 True False vertical True False 120 True False start 20 Typ 0 False True 0 True False Type of Device start True Lutron PH-207 True False True 1 False True 0 True False start 120 True False start 20 Interface 0 False True 0 True False List of vailable ports. Connect serial USB-Adaptor first. start /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4 /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4 False True 1 False True 1 False True 1 True False vertical True False 120 True False start 20 Typ 0 False True 0 True False Type of Device start True True False True 1 Load True True True image1 False True 3 Save True True True image2 False True 4 False True 0 True False start 120 True False start 20 Interface 0 False True 0 True False List of vailable ports. Connect serial USB-Adaptor first. start /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4 /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4 False True 1 60 True False end SCPI False True 2 True True Send SCPI commands? end center False False 3 120 True False end 20 Remote Control 0 False True 4 True True Remote Setup possible? end center False False 5 False True 1 False True 2 True False 120 True False start 20 Time Interval 0 False True 0 True True Time Interval in seconds 6 1,00 number mtime 0.04999999977648258 3 True if-valid 1 False True 1 False True 3 True False True False vertical True False vertical True False 120 True False start 20 Baudrate 0 False True 0 True False start 600 1200 1800 2400 4800 9600 19200 38400 57600 115200 False True 1 False True 1 True False 120 True False start 20 Charsize 0 False True 0 True False Number of data bits 0 True 7 8 False False True 1 False True 2 True False 120 True False start 20 Flow control 0 False True 0 True False True hardware software none False False True 1 False True 3 True False 120 True False start 20 Stopbits 0 False True 0 True False True 1 2 False False True 1 False True 4 True False 120 True False start 20 Parity 0 False True 0 True False True odd even none False False True 1 False True 5 True False 120 True False start 20 Polling 0 False True 0 True True Send Character for data polling end center False False 1 False True 6 True False 120 True False start 20 Bytes 0 False True 0 True True Number of transmitted Bytes 0 number num_bytes_2 True if-valid False True 1 False True 7 True False 120 True False start 20 Values 0 False True 0 True True Number of transmitted data values 1 number num_val_2 True if-valid 1 False True 1 False True 8 True False 120 True False start 20 Timeout 0 False True 0 True True Timeout in milliseconds 0 number timeout_2 2 True if-valid False True 1 False True 9 False True 0 True False vertical True False 120 True False start 20 Bytes (USB) 0 False True 0 True True Number of transmitted Bytes 0 number usb_bytes_2 True if-valid False True 1 False True 0 False True 1 False True 0 True False vertical True False vertical True False 150 True False start 20 Function 0 False True 0 True False Measurement function 0 DC Voltage AC Voltage DC Current AC Current Resistance Conductivity pH Temperature False True 1 False True 0 True False 150 True False start 20 Range 0 False True 0 True False Function range 1 True 200 mV 2 V 20 V 200 V 1000 V 200 uA 200 mA 20 A 200 Ohm 2 kOhm 20 kOhm 200 kOhm 2 MOhm 20 MOhm 200 mS pH °C False False True 1 False True 1 False True 0 True False vertical True False 150 True False start 20 DC Voltage 0 False True 0 True False Control String True False False True 1 False True 2 True False 150 True False start 20 AC Voltage 0 False True 0 True False Control String True False False True 1 False True 3 True False 150 True False start 20 DC Current (mA) 0 False True 0 True False Control String True False False True 1 False True 4 True False 150 True False start 20 AC Current (mA) 0 False True 0 True False Control String True False False True 1 False True 5 True False 150 True False start 20 DC Current (A) 0 False True 0 True False Control String True False False True 1 False True 6 True False 150 True False start 20 AC Current (A) 0 False True 0 True False Control String True False False True 1 False True 7 True False 150 True False start 20 Resistance 0 False True 0 True False Control String True False False True 1 False True 8 True False 150 True False start 20 Conductivity 0 False True 0 True False Control String True False False True 1 False True 9 True False 150 True False start 20 pH 0 False True 0 True False Control String True False False True 1 False True 10 True False 150 True False start 20 Temperature 0 False True 0 True False Control String True False False True 1 False True 11 False True 1 False True 1 False True 4 True False vertical True False start 100 vertical True False start 150 True False start 20 Slope 0 False True 0 True False start 20 auto: False True 1 True True Select slope. auto for random slope start center True False True 2 True True start 20 0,00 sim2_slope_val 0.10 2 if-valid False True 3 False True 0 True False start 150 True False start 20 Deviation 0 False True 0 True False start 20 auto: False True 1 True True Select uncertainty of value. Effective deviation is randomized. start center True False True 2 True True start 20 0,1 sim2_shift_val 0.10 1 if-valid 0.10 False True 3 True False start 10 % False True 4 False True 1 False True 0 True False start 100 vertical True False start 150 True False start 20 Initial value 0 False True 0 True False start 20 auto: False True 1 True True Select initial value. auto for random value start center True False True 2 True True start 20 20 0,10 sim2_int_val 0.10 2 if-valid 0.10 False True 3 False True 0 True False start 150 True False start 20 Time constant 0 False True 0 True False start 20 auto: False True 1 True True Select time constant. auto for random value start center True False True 2 True True start 20 20 0,001 sim2_tc_val 0.10 3 if-valid 0.001 False True 3 False True 1 True False start 150 True False start 20 Deviation 0 False True 0 True False start 20 auto: False True 1 True True Select uncertainty of value. Effective deviation is randomized. start center True False True 2 True True start 20 20 0,1 exp_shift_val 0.10 1 if-valid 0.10 False True 3 True False start 10 10 % False True 4 False True 2 False True 1 True False start 100 vertical True False start 150 True False start 20 Number of peaks 0 False True 0 True False start 20 auto: False True 1 True True Select number of peaks. start center True False True 2 True True start 20 1 sim2_np_val 0.10 if-valid 1 False True 3 False True 0 True False start 150 True False start 20 Maximum Retention 0 False True 0 True False start 20 auto: False True 1 True True Select maximum retention time. start center True False True 2 True True start 20 180 sim2_max_rt_val 0.10 if-valid 180 False True 3 False True 1 True False start 150 True False start 20 Peak width 0 False True 0 True False start 20 auto: False True 1 True True Select peak width. Effective peak width is randomized. start center True False True 2 True True select slope auto for random slope start 20 20 0,002 sim2_bf_val 0.10 3 if-valid 0.002 False True 3 False True 2 True False start 150 True False start 20 Drift 0 False True 0 True False start 20 auto: False True 1 True True Select baseline drift. start center True False True 2 True True start 20 20 0,0001 sim2_drift_val 0.10 4 if-valid 0.0001 False True 3 True False start 10 10 % False True 4 False True 3 False True 2 False True 5 2 True False Measurement Data Channel 2 (Y) 2 False True True 1 options_reset options_cancel options_ok galvani-v0.38/src/ui/galvani.ui0000644000175000017500000022403514713174213016316 0ustar burkardburkard 0.10 2 0.10 10 False False popup Error Message center-always dialog error ok False vertical 2 False True end False False 0 0.10 2 0.10 10 10 50 5 10 True False gtk-apply True False gtk-cancel True False gtk-apply False 400 260 dialog Galvani 0.22 Data logging from digital Devices Evaluation and Simulation of Measurement data Burkard Lutz b.lutz@online.de galvani.svg gpl-3-0 False vertical 2 False end OK True True True image3 True True end 0 False False 0 about_ok True False gtk-apply True False gtk-cancel True False Galvani 1200 900 True False vertical True False True False _File True True False True False New project New True False Read data from file Open True True False Save data to file Save True True False Export True True False True False Save diagram as PNG, SVG or EPS-File Export diagram True True False True False Print report Print True True False True False Quit True True False _View True True False True False Show measurement values in display Display True True True True False _Measurement True True False True False New measurement True True False Start measurement True True False Start with timer True True False Cancel measurement True True False Stop measurement True True False End measurement True True False _Evaluation True True False True False Evaluate measurement data Data True True False _Settings True True False True False Settings for data channel 1 (X) Data channel X True True False Settings for data channel 2 (Y) Data channel Y True True False Settings for data plot Diagram True True False True False Save all options to configuration file Save options True True False Load all options from configuration file Load options True True False Load options automatically at programm start AutoLoad options True True False Save options automatically at programm end AutoSave options True True True False _Help True True False gtk-help True False True True gtk-about True False True True False True 0 True False True False True icons 2 True False New Project True gtk-new False True True False Edit Project settings True gtk-properties False True True False Import data from file True gtk-open False True True False Save data True gtk-save False True True False Export Diagram True gtk-save-as False True True False Print Report True gtk-print False True True False New Measurement end True gtk-add False True True False Start Measurement end end True gtk-media-record False True True False Start Timer True gtk-refresh False True True False Cancel Measurement True gtk-cancel False True True False Stop Measurement end end True gtk-media-stop False True True False Delete diagram and end measurement True gtk-no False True True False Reset scale True gtk-revert-to-saved False True False True 0 True False Starting measurement . . . False True 1 True False False True 2 True False 5 0 none True False X: True True 3 True False 0 none True False Y: True True 4 False True 1 True True False True True 2 False mouse True dialog question ok-cancel False vertical 2 False end True True end False False 0 3600 1 10 False Start Timer to begin measurement mouse 400 dialog False vertical 2 False end Cancel True True True image5 True True 0 OK True True True image4 True True end 1 False False 0 True False vertical True False Start measurement in False True 10 0 True True center 2.2351741291171123e-10 timer_startval 0.10 True if-valid 10 False True 1 True False seconds False True 10 2 True True 1 cancel_timer start_timer 1 100 1 10 False Project Settings center-on-parent 600 400 dialog False vertical 2 False end Cancel True True True image2 True True 0 OK True True True image1 True True end 1 False False end 0 True False vertical True False 100 True False start Project Title: False True 0 True True True True 1 False True 0 True False vertical True False 100 True False start Function X-Axis: False True 0 True False start Time DC Voltage AC Voltage DC Current AC Current Resistance Conductivity pH Temperature False True 1 True True True Device Channel X Click to configure False True 2 False True 0 True False 100 True False start Function Y-Axis: False True 0 True False start DC Voltage AC Voltage DC Current AC Current Resistance Conductivity pH Temperature False True 1 True True True Device Channel Y Click to configure False True 2 False True 1 True False 100 vertical True False True False start Titrand (acid): False True 0 True False Hydrochloric acid Hydrobromic acid Bromic acid Hypochloric acid Chloric acid Hydrofluoric acid Hydroiodic acid Iodic acid Nitrous acid Nitric acid Sulfurous acid Sulfuric acid Phosphoric acid Formic acid Acetic acid Chloroacetic acid Dichloroacetic acid Trichloroacetic acid Benzoic acid Oxalic acid Tartaric acid Citric acid False True end 1 False True 0 True False vertical True False start 2 5 5 Titrator (base): Sodium hydroxide False True 0 False True 1 True False True False start Acid concentration [mol/L]: False True 0 True True start center 7 0,000 number ha_conc 0.10 1 True if-valid 1 False True 10 end 1 False True 2 True False True False start Base concentration [mol/L]: False True 0 True True start center 7 0,1 number b_conc 0.10 1 True if-valid 1 False True 10 end 1 False True 3 True False True False start Volume of acid [mL]: False True 0 True True start center 7 0,1 number ha_vol 0.10 True if-valid 10 False True 10 end 1 False True 4 True False True False start Titration velocity [ml/min]: False True 0 True True start center 7 0,000 number tit_volspeed 0.10 True if-valid 10 False True 10 end 1 False True 5 False True 2 False True 1 True False start 10 10 Comment: False False 2 True True True in 100 True True True natural natural word 10 projekt_comment True True 3 False True 1 projekt_prop_cancel projekt_prop_ok galvani-v0.38/src/ui/data_rw.ui0000644000175000017500000003200314713174213016306 0ustar burkardburkard True False True document-save True False dialog-cancel False True Choose File dialog True False False False vertical 2 False end Cancel True True True True image2 True True 0 Save True True True True image1 True True 1 False False 0 file_choose_cancel file_choose_ok True False gtk-cancel True False gtk-apply False Mapping of diagram functions center-on-parent 600 300 dialog False vertical 2 False end Cancel True True True image3 True True 0 OK True True True image7 True True end 1 False False end 0 True False vertical True False Select appropiate function False True 20 0 True False True False start Function X-Axis: True True 0 True True False False True 1 True False Time DC Voltage AC Voltage DC Current AC Current Resistance Conductivity pH Temperature Wavelength False True 2 False True 1 True False True False start Function Y-Axis: True True 0 True True False False True 1 True False DC Voltage AC Voltage DC Current AC Current Resistance Conductivity pH Temperature Absorption False True 2 False True 2 False True 1 trans_func_cancel trans_func_ok galvani-v0.38/src/mess.h0000644000175000017500000001422214713174213015034 0ustar burkardburkard/* * mess.h * * This file is part of galvani. * * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef MESS_H #define MESS_H #include "typedef.h" //Variablen extern Gtk::MenuItem* menu_mess_neu; extern Gtk::MenuItem* menu_mess_start; extern Gtk::MenuItem* menu_mess_start_timer; extern Gtk::MenuItem* menu_mess_cancel; extern Gtk::MenuItem* menu_mess_stop; extern Gtk::MenuItem* menu_mess_delete; extern Gtk::MenuItem* menu_eval_data; extern Gtk::MenuItem* menu_options_diag; extern Gtk::MenuItem* menu_options_deviceX; extern Gtk::MenuItem* menu_options_deviceY; extern Gtk::ToolButton* button_start; extern Gtk::ToolButton* button_timer; extern Gtk::ToolButton* button_stop; extern Gtk::ToolButton* button_cancel; extern Gtk::ToolButton* button_reset; extern Gtk::ToolButton* button_messung; extern Gtk::ToolButton* button_reset_scale; extern Gtk::Dialog* timer_dialog; extern Gtk::Button* start_timer; extern Gtk::Button* cancel_timer; extern Gtk::Button* device_x; extern Gtk::Button* device_y; extern Gtk::Box* projekt_options; extern Gtk::Box* tit_options; extern Gtk::ProgressBar* count_down_progress; extern Gtk::Label* count_down_start; extern Gtk::SpinButton* timer_start; extern Gtk::MessageDialog* error_dialog; extern Gtk::MessageDialog* delete_dialog; extern Gtk::Entry* projekt_title; extern Gtk::ComboBoxText* func_x; extern Gtk::ComboBoxText* func_y; extern Gtk::TextView* projekt_comment_view; extern Glib::RefPtr projekt_comment; extern Gtk::Dialog* projekt_prop; extern Gtk::MessageDialog* msg_dialog; extern Gtk::Label* display_x; extern Gtk::Label* display_y; extern Gtk::ComboBoxText* tit_ha; extern Gtk::SpinButton* tit_haconc; extern Gtk::SpinButton* tit_baseconc; extern Gtk::SpinButton* tit_havol; extern Gtk::SpinButton* tit_speed; extern Gtk::CheckMenuItem* menu_view_display; extern Diagramm* diag; extern std::time_t datum; extern Messung *project; extern std::vector mw; extern Multimeter dmm[2]; extern bool data_saved; extern bool project_defined; extern bool show_display; extern std::string fehlercode; extern std::string tmpdir; extern double mw_slope; extern double mw_axis; extern double tit_volspeed; extern bool eval_reglin; extern bool eval_diff; extern bool eval_integration; extern bool eval_titvolumen; extern double diff_min, diff_max; extern double peaks_area; extern std::vector diff; //maxima of diffential function extern int ndiff; //number of maxima of differential function extern double ps; //scale factor for printing lines in diagram extern double pf; //scale factor for printing lines in diagram extern double yb, yb_a0, yb_a1; // baseline value, intercept and slope //gobal Variables bool mess_done = false; // measurement done unsigned long long int mi=0; //index for actual value //Variables GTimer* mtimer; //timer for measurement double mt; //time variable for measurement in seconds gulong* microsec; //mikroseconds of time variable (not used) std::vector peaks; //peaks in Chromatogram sigc::connection countdown_timeout; //measurement timeout: timeout-handler double timer_cd; //timer count-down for starting measurement with timer bool save_autoscale; double xmin_reset, ymin_reset, xmax_reset, ymax_reset; std::vector tit_data; //titration data acid_data ha; //acid for simulation of titration curve int ai; //index of acid for simulation of titration curve extern std::vector acid; //Functions void new_project (); //new project void define_project(); //set project settings void show_settings_device_x (); // show project settings for channel X void show_settings_device_y (); // show project settings for channel Y void show_options_device_x(); // show options for channel X void configure_settings_device_x(); // configure options for channel X and show in project void show_options_device_y(); // show options for channel Y void configure_settings_device_y(); // configure options for channel Y and show in project void show_tit_options(); //show options for simulation of titration curve int get_acid_index(std::string name); // get index of acid for simulation of titration curve void set_messfunkt (int kanal, std::string funkt); //set function of channel X/Y std::string set_std_unit (std::string funkt); //set standard unit std::string set_std_range (std::string funkt); //set standard range void reset_mw (); //initialize array void init_diag(); //initialize diagram area void begin_mess(); //new measurement void cancel_mess(); //cancel measurement void start_mess(); //start measurement void start_mess_with_timer(); //start measurement with timer void get_val(); // get measurement value void new_val(mw_data val); //prepare next value void show_countdown (); bool show_countdown_progress (); void stop_mess(); //stop measurement void end_mess(); //end measurement and rearrange void fehler(std::string fehler_text); //error message bool dialog_ok (std::string msg); void save_data(); //save data void display_mw (m_record xval, m_record yval); //display numerical values on screen void toggle_display (); mw_data trafo (mw_data val); std::string eval_funkt(int kanal, std::string funkt); std::string eval_unit (int kanal, std::string unit); mw_data mv_av (std::vector &p); //calculate moving average mw_data tr_av (std::vector &p); //calculate triangular average void find_xy_minmax (); void reset_evaloptions (); void reset_diagscale (); double get_dbstr(std::string num_str); int get_intstr(std::string num_str); polyreg_data poly3_reg (std::vector &p); //polynom regression of data (third order) #endif galvani-v0.38/src/options.h0000644000175000017500000001554514713174213015571 0ustar burkardburkard/* * options.h * This file is part of galvani. * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef OPTIONS_H #define OPTIONS_H #include "typedef.h" // extern Variables extern Diagramm* diag; extern Messung *project; extern Gtk::Dialog* options_dialog; extern Gtk::Button* options_ok; extern Gtk::Button* options_cancel; extern Gtk::Button* options_reset; extern Gtk::Notebook* edit_options; extern Gtk::ColorButton* diag_bkcolor; extern Gtk::ColorButton* diag_axcolor; extern Gtk::ColorButton* diag_gridcolor; extern Gtk::ColorButton* diag_xycolor; extern Gtk::Switch* diag_gridsw; extern Gtk::Switch* diag_autoscalesw; extern Gtk::Switch* diag_zerosw; extern Gtk::Switch* diag_titlesw; extern Gtk::ComboBoxText* diag_symbol; extern Gtk::ComboBoxText* diag_graph; extern Gtk::ComboBoxText* diag_linestyle; extern Gtk::ComboBoxText* diag_symbolstyle; extern Gtk::SpinButton* diag_xmin; extern Gtk::SpinButton* diag_xmax; extern Gtk::SpinButton* diag_ymin; extern Gtk::SpinButton* diag_ymax; extern Gtk::SpinButton* diag_symw; extern Gtk::Box* dmm_serial_options[2]; extern Gtk::Box* dmm_usb_options[2]; extern Gtk::Box* dmm_dmm_options[2]; extern Gtk::Box* dmm_device_options; extern Gtk::Box* dmm_control_options[2]; extern Gtk::Box* dmm_function_control[2]; extern Gtk::ComboBoxText* dmm_typ[2]; extern Gtk::ComboBoxText* dmm_name[2]; extern Gtk::ComboBoxText* device_name; extern Gtk::ComboBoxText* dmm_simtyp[2]; extern Gtk::ComboBoxText* dmm_interface[2]; extern Gtk::ComboBoxText* device_interface; extern Gtk::ComboBoxText* dmm_baud[2]; extern Gtk::ComboBoxText* dmm_bits[2]; extern Gtk::ComboBoxText* dmm_flowcontrol[2]; extern Gtk::ComboBoxText* dmm_stopbits[2]; extern Gtk::ComboBoxText* dmm_parity[2]; extern Gtk::Switch* dmm_polling[2]; extern Gtk::SpinButton* dmm_num_bytes[2]; extern Gtk::SpinButton* dmm_usb_bytes[2]; extern Gtk::SpinButton* dmm_num_val[2]; extern Gtk::SpinButton* dmm_timeout[2]; extern Gtk::ComboBoxText* dmm_funktion[2]; extern Gtk::ComboBoxText* dmm_range[2]; extern Gtk::SpinButton* dmm_mtime; extern Gtk::Button* dmm_loadoptions[2]; extern Gtk::Button* dmm_saveoptions[2]; extern Gtk::FileChooserDialog* dmmoptions_save_dialog; extern Gtk::Button* dmmoptions_save_ok; extern Gtk::Button* dmmoptions_save_cancel; extern Gtk::Switch* dmm_remote_control[2]; extern Gtk::Box* dmm_control_options[2]; extern Gtk::Switch* dmm_scpi[2]; extern Gtk::ComboBoxText* dmm_DCV[2]; extern Gtk::ComboBoxText* dmm_ACV[2]; extern Gtk::ComboBoxText* dmm_DCmA[2]; extern Gtk::ComboBoxText* dmm_ACmA[2]; extern Gtk::ComboBoxText* dmm_DCA[2]; extern Gtk::ComboBoxText* dmm_ACA[2]; extern Gtk::ComboBoxText* dmm_Res[2]; extern Gtk::ComboBoxText* dmm_Cond[2]; extern Gtk::ComboBoxText* dmm_pH[2]; extern Gtk::ComboBoxText* dmm_Temp[2]; extern Gtk::Box* sim_linoptions[2]; extern Gtk::Box* sim_expoptions; extern Gtk::Box* sim_chromoptions; extern Gtk::Switch* sim_slope_switch[2]; extern Gtk::Switch* sim_shift_switch[2]; extern Gtk::SpinButton* sim_slope[2]; extern Gtk::SpinButton* sim_shift[2]; extern Gtk::Switch* sim_init_sw; extern Gtk::Switch* sim_tc_sw; extern Gtk::Switch* sim_expshift_sw; extern Gtk::SpinButton* sim_init; extern Gtk::SpinButton* sim_tc; extern Gtk::SpinButton* sim_expshift; extern Gtk::Switch* sim_np_sw; extern Gtk::Switch* sim_max_rt_sw; extern Gtk::Switch* sim_bf_sw; extern Gtk::Switch* sim_drift_sw; extern Gtk::SpinButton* sim_np; extern Gtk::SpinButton* sim_max_rt; extern Gtk::SpinButton* sim_bf; extern Gtk::SpinButton* sim_drift; extern std::string workdir; extern std::string confdir; extern std::string fehlercode; extern Multimeter dmm[2]; extern Multimeter idmm[10]; extern int mid; extern bool mess_done; extern bool eval_titvolumen; //Functions bool dialog_ok (std::string msg); void fehler(std::string fehler_text); //error message void set_options(); //set options void show_options_diag (); //show options for diagram void show_options_device_x (); //settings for channel X void show_options_device_y (); //settings for channel Y void set_range_options_device (int k); //set range options according to function void show_diag_settings (); //show actual settings void show_options_Kanal_XY (); void show_diag_manual_limits (bool manual); void show_dmm_control_options (bool state, int kanal); // signal expects function with 2 arguments, state is unused void show_simulation_options (int k); void show_simlin_options (bool state, int k); // show options for linear simulation void show_simexp_options (int k); // show options for exponential simulation void show_simchrom_options (int k); // show options for peak simulation (chromatogram) void set_options_diag (); //set options for diagram void set_device_options (int k); //set options for channel X,Y void restart_options_x (); void restart_options_y (); void reset_options_diag (); void reset_options_kanal_X (); void reset_options_kanal_Y (); bool dmm_exist (std::string name); // seeks name in array of installed dmms; sets index if found void select_dmm (int k); void save_dmm_options(int k); void load_dmm_options(int k); std::string read_dmmoption(std::string opt_item); void save_all_options (); void load_all_options (); void translate_functions (); bool is_known_function (std::string funct); std::string read_option(std::string opt_item); double get_dbstr(std::string num_str); int get_intstr(std::string num_str); bool get_boolstr(std::string num_str); typ get_dmmtyp(std::string t); void show_dmm_interface_options(int kanal); void show_dmm_function_control(bool state, int k); void set_messfunkt (int kanal, std::string funkt); //set function for channel X/Y std::string set_std_unit (std::string funkt); //set standard unit std::string set_std_range (std::string funkt); //set standard range void set_device_options_lutron_ph207 (); void preset_mtime (); //preset measuring timeout according to device option void set_mtime (); //set measuring timeout according to device std::vector get_usb_ports (); //Variables Gdk::RGBA std_axcol, std_gridcol, std_bkcol, std_xycol; double messintervall; int min_timeout; Glib::RefPtr filefilter_dmm; std::string dmm_file_id = "galvani_dmm_options"; std::string conf_file_id = "galvani_conf_options"; std::ifstream dmm_open_file; std::ifstream conf_open_file; std::vector ports; int id; //index of found dmm in array #endifgalvani-v0.38/src/typedef.h0000644000175000017500000003050314713174213015525 0ustar burkardburkard/* * typedef.h * This file is part of galvani. * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef TYPEDEF_H #define TYPEDEF_H #include //Typedef enum typ {TIME,DMM,DEVICE,LINEAR,EXP,PH,PEAK}; //Real device / simulation //Symbols for value points enum symbol {none,cross,square,diamond,circle}; enum linestyle {solid,pointed,dashed}; enum thermoval {no,CuNi,NiCr}; enum mfkt {DCV,ACV,DCmA,ACmA,DCA,ACA,Res,Cond,pH,Temp}; //functions for remote setup of dmm //Data classes class m_record // measurement results { public: std::string funktion; double digits; std::string unit; }; class mw_data //x,y value pair { public: double x; double y; }; class peak_data //peak in chromatogram { public: mw_data max; //x- and y-value of peak-maximum unsigned long long int mpos; //position of maximum in Array unsigned long long int xb1; //start (Basis) unsigned long long int xb2; //end (Basis) double area; //peak Area double percent; //percentage (concentration) }; class diffmax //maximum of differential function with gauss parameter { public: mw_data max; //x- and y-value of maximum double P; //amplitude (peak height) double m; //mean value double b; //standard deviation, half of peak diameter in half amplitude unsigned long long int xm; //position }; class polyreg_data //coefficients of polynom y = a0 + a1*x + a2*x² + a3*x³ { public: double a0 = 0; double a1 = 0; double a2 = 0; double a3 = 0; }; class acid_data //pks-data of acids used for simulation of titration curves { public: std::string name; int npks; //number of pks values double pks[3]; }; // Class definitions class PrintOP : public Gtk::PrintOperation { public: bool printoption_title = true; bool printoption_comment = true; bool printoption_diag = true; bool printoption_result = true; Glib::RefPtr print_op; Glib::RefPtr print_page; Gtk::PrintOperationAction print_action; void begin_print (const Glib::RefPtr& print_context);//initialize printing void draw_page(const Glib::RefPtr& print_context, int page_nr); //draw printpage on cairo context PrintOP(); virtual ~PrintOP(); private: Gtk::Switch titlesw, commentsw, diagsw, resultsw; Gtk::PageOrientation orientation; Glib::RefPtr print_settings; Cairo::RefPtr diag_sf; Cairo::RefPtr print_ct, diag_ct; Glib::RefPtr page_layout; Glib::RefPtr layout_line; Glib::ustring report_title, report_comment, report_results; Pango::FontDescription font; double pg_scale; std::vector PageBreaks; double page_width; double page_height; double dpi; //print resolution double top_margin, bottom_margin, left_margin, right_margin; //document margins in pt void set_printoptions(Gtk::Widget* printpage_options); //set items on printpage void draw_pagelayout(Glib::RefPtr page_layout, double start, int page_nr); //construct printpage Gtk::Widget* create_custom_widget(); //create printoptions (elements on print page) }; class Diagramm : public Gtk::DrawingArea { int x, y; public: Diagramm(GtkDrawingArea* cobject, const Glib::RefPtr &builder); double axcol_r=0.0, axcol_g=0.0, axcol_b=0.0; double gridcol_r=0.5, gridcol_g=0.5, gridcol_b=0.5; double bkcol_r=0.95, bkcol_g=0.95, bkcol_b=0.94; double xycol_r=1.0, xycol_g=0.0, xycol_b=0.0; double funktcol_r=0.0, funktcol_g=0.0, funktcol_b=1.0; int margin, width, height; int pxmin, pymin, pxmax, pymax; //pixel double xmin=0.0, ymin=0.0, xmax=10.0, ymax=1.0, x_n, y_n; //x,y coordinate system double xminval, xmaxval, yminval,ymaxval; //minima and maxima of values double xabsmax, yabsmax; //absolute maxima double xscale=10.0, yscale=1.0; //x,y-Scale (10s, 1V) double xrange=1.0, yrange=1.0; //scale factor for range double dx,dy; //Axes Fragmentation (scale divisions) double dxax=0.01, dyax=0.01; //Axes Fragmentation: scale factor int ax_dx=10, ax_dy=10; //Axes Fragmentation: resolution int axp,n,pos; //arbitrary point on axis for drawing grid bool grid=true; //draw grid? bool autoscale=true; bool showzero=false; bool showtitle=true; int grid_dx=5, grid_dy=5; //grid: resolution symbol mw_symbol=none; //Symbol for value point bool symbol_filled=true; int symw=5; //symbol magnitude in pixel bool mw_line=true; //draw line to connect points bool mw_curve=false; //draw curve to connect points linestyle mw_linestyle=solid; //line style bool reset_diag=true; bool m_started=false; bool show_peaklimits=true; bool show_peakarea=true; bool show_baseline=true; bool coord_saved = false; int mtime=1000; //measurement interval in milliseconds sigc::connection timeout_handler; //on_draw: timeout-handler bool start_mt(); //on_draw: start Timeout bool stop_mt(); //on_draw: stop Timeout std::string img_filename; std::string funktion_x; //functions and units for x,y-values std::string unit_x; std::string funktion_y; std::string unit_y; void reset_diagscale (); friend void eval_data (); friend void show_diag (); friend void PrintOP::begin_print (const Glib::RefPtr& print_context); friend void PrintOP::draw_page(const Glib::RefPtr& print_context, int page_nr); friend void export_diag (); Diagramm(); virtual ~Diagramm(); protected: //Override default signal handler: bool on_draw(const Cairo::RefPtr& ccontext) override; void draw_background (const Cairo::RefPtr &ccontext); void draw_coord (const Cairo::RefPtr &ccontext); int scale_x (double x); int scale_y (double y); void draw_cross (const Cairo::RefPtr &ccontext, int symwidth); void draw_square (const Cairo::RefPtr &ccontext, int symwidth, bool filled); void draw_diamond (const Cairo::RefPtr &ccontext, int symwidth, bool filled); void draw_circle (int x, int y, int symwidth, bool filled, const Cairo::RefPtr &ccontext); void draw_symbol (int x, int y, symbol symb, int symwidth, bool filled, const Cairo::RefPtr &ct); void draw_xyline (const Cairo::RefPtr &ccontext); void draw_xycurve (const Cairo::RefPtr &ccontext); void draw_xysymbol (const Cairo::RefPtr &ccontext); //-> &ct! void draw_lin_regression(const Cairo::RefPtr &ct); void draw_diff_funktion (const Cairo::RefPtr &ct); void draw_peak_integration (const Cairo::RefPtr &ct); void draw_selection_frame (double x_1, double y_1, double x_2, double y_2, const Cairo::RefPtr &ct); void find_xy_minmax (); void set_unit(); //select unit prefix and multiply value by appropiate faktor double get_scale_element (double scale); // calculate axis scale element void set_coord_limits (); double get_xcoord (double xp); double get_ycoord (double yp); bool on_motion_notify_event (GdkEventMotion *motion); bool on_button_press_event (GdkEventButton *pos); bool on_button_release_event (GdkEventButton *pos); bool on_timeout(); Cairo::RefPtr diag_sf; Cairo::RefPtr diag_ct; Glib::RefPtr diag_layout; private: Cairo::RefPtr sf; Pango::FontDescription font; double scale_width, scale_height; double scalefactor = 4.0; int diag_width, diag_height; double xmin_new, xmax_new, ymin_new, ymax_new; bool selection_frame = false; std::string downgrade_unit (std::string unit); std::string upgrade_unit (std::string unit); }; class Ctrl_string { public: mfkt fkt; //parameter function std::string ctrl; //string to send to dmm for setting up funktion }; class Multimeter { public: std::string dmm_name; //type of device std::string int_face; //interface LibSerial::SerialPort dmm_port; //connection to serial port (RS232C) int usb_port; //connection to usb port typ dmm_typ; //Connection Parameters LibSerial::BaudRate dmm_baud; LibSerial::CharacterSize dmm_charsize; LibSerial::FlowControl dmm_flowcontrol; LibSerial::StopBits dmm_stopbits; LibSerial::Parity dmm_parity; bool dmm_polling; //send character to device for gaining values? bool scpi; // can we communicate by scpi commands? bool usb; // connect to usb port? int num_bytes; // number of bytes transmitted int usb_bytes; // number of bytes transmitted over usb int num_val; // number of values transmitted size_t ms_timeout; // milliseconds //Variables std::string m_funkt; //measurement function std::string m_range; //value range bool connected = false; //is dmm connected to serial interface? bool remote_cfg = false; //can dmm be configured remote? Ctrl_string remote_ctrl_strings [10]; //control strings to configure dmm //Parameter for Simulation double m=0; //linear slope double rf; //linear shift (randomized) double exp_rf; //linear shift (randomized) bool auto_slope = true; bool auto_shift = true; bool auto_expshift = true; bool auto_tc = true; bool auto_init = true; bool auto_np = true; bool auto_rt = true; bool auto_bf = true; bool auto_drift = true; double a; //initial value of exp-funktion (decay curve) double k; //time constant of exp-funktion (decay curve) double max_rt; // peak max. retention time double bf; // peak width factor double P[20]; // peak magnitude double rt[20]; //retention time (at peak maximum) double b[20]; // half width of peak in half amplitude double drift; //drift of base line int n; //number of peaks double va = 10; //parameters of titration (concentration and volume of titrand and titrator) double ca = 1.0; double cb = 1.0; //Functions void connect_dmm (std::string int_face); bool connect_usb (std::string port); void disconnect_dmm (); void writeto_dmm (std::string wstr); std::string readfrom_dmm (); m_record read_dmm (); m_record get_std_unit (m_record messw); m_record get_mwert_dmm (std::string mwert); // Voltcraft, Metex and others m_record get_mwert_impo_dmi4 (std::string mwert); //Impo DMI4 m_record get_mwert_scpi (std::string mwert); // dmm with scpi std::string get_scpi_funkt(); // read measuring funktion from dmm with scpi std::string get_baud(); std::string get_charsize(); std::string get_flowcontrol(); std::string get_stopbits(); std::string get_parity(); void set_baud(std::string baudrate); void set_charsize(std::string charactersize); void set_flowcontrol(std::string flowcontrol); void set_stopbits(std::string stopbits); void set_parity(std::string parity); void setup (std::string funkt, std::string range); void set_ctrlstr (mfkt funktion, std::string ctrl); std::string get_ctrlstr (mfkt funktion); void set_tit_data (int npks); Multimeter (); virtual ~Multimeter (); protected: int random_nr (int min, int max); //compute random number between min and max double sim_linear (double x); double sim_exp (double x); double sim_ph (double x); double sim_peak (double x); m_record read_mm (); m_record read_device (); m_record read_lutron_ph207 (); private: //Parameter for pH-simulation int npks; //number of pks-values double pks1, pks2, pks3; //pKs-values }; class Messung { public: std::string datum; std::string title; std::string filename; std::string funktion_x; std::string funktion_y; std::string unit_x; std::string unit_y; std::string comment; std::string evalresults; Messung (); virtual ~Messung(); std::string upgrade_unit (std::string unit); std::string downgrade_unit (std::string unit); }; #endifgalvani-v0.38/src/print.h0000644000175000017500000000233114713174213015217 0ustar burkardburkard/* * print.h * This file is part of galvani. * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef PRINT_H #define PRINT_H #include "typedef.h" //extern variables extern bool eval_integration; extern bool eval_reglin; extern bool eval_diff; extern Messung *project; extern Diagramm* diag; extern PrintOP *printjob; //extern functions void fehler(std::string fehler_text); //error message void print_report(); //print report //variables double ps = 1.0; //scale factor for printing lines in diagram double pf = 1.0; //scale factor for printing fonts in diagram #endifgalvani-v0.38/src/print.cxx0000644000175000017500000003417014713174213015600 0ustar burkardburkard// print.cxx // This file is part of galvani. // Copyright (C) 2020-2024 Burkard Lutz // // 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, see . #include #include #include #include #include "print.h" PrintOP::PrintOP() { //set some properties of the print page pg_scale = PANGO_SCALE; ps = 2.0; // set scaling factor for printing lines in diagramm pf = 1.5; // set scaling factor for printing fonts in diagramm dpi = 300; print_op = Gtk::PrintOperation::create(); print_op->set_job_name (project->title); print_op->signal_begin_print().connect(sigc::mem_fun(this, &PrintOP::begin_print)); print_op->signal_draw_page().connect(sigc::mem_fun(this, &PrintOP::draw_page)); print_op->signal_create_custom_widget().connect(sigc::mem_fun(this, &PrintOP::create_custom_widget)); print_op->signal_custom_widget_apply().connect(sigc::mem_fun(this, &PrintOP::set_printoptions)); print_op->set_custom_tab_label (_("Page Elements")); print_op->set_unit (Gtk::UNIT_POINTS); print_page = Gtk::PageSetup::create (); orientation = Gtk::PAGE_ORIENTATION_PORTRAIT; print_page->set_orientation (orientation); print_settings = Gtk::PrintSettings::create(); print_settings->set_resolution (dpi); print_settings->set_quality (Gtk::PRINT_QUALITY_HIGH); top_margin = 30; bottom_margin = 40; left_margin = 30; right_margin = 30; print_page->set_top_margin (top_margin, Gtk::UNIT_POINTS); print_page->set_bottom_margin (bottom_margin, Gtk::UNIT_POINTS); print_page->set_left_margin (left_margin, Gtk::UNIT_POINTS); print_page->set_right_margin (right_margin, Gtk::UNIT_POINTS); print_op->set_default_page_setup (print_page); print_op->set_print_settings (print_settings); print_op->set_use_full_page (false); print_op->set_embed_page_setup (); } PrintOP::~PrintOP() { } void print_report () { printjob = new PrintOP; printjob->print_action = Gtk::PRINT_OPERATION_ACTION_PRINT_DIALOG; try { Gtk::PrintOperationResult result = printjob->print_op->run(printjob->print_action); } catch (const Gtk::PrintError& ex) { fehler (ex.what()); } return; } void PrintOP::set_printoptions(Gtk::Widget* printoption) //apply page settings in print dialog (custom widget) { printoption_title = titlesw.get_state(); printoption_comment = commentsw.get_state(); printoption_diag = diagsw.get_state(); printoption_result = resultsw.get_state(); return; } Gtk::Widget* PrintOP::create_custom_widget() //create printoptions (elements on print page) { auto printpage_options = Gtk::make_managed(Gtk::ORIENTATION_VERTICAL); // print title? auto titlebox = Gtk::make_managed(Gtk::ORIENTATION_HORIZONTAL, 100); titlebox->set_margin_top (50); printpage_options->pack_start (*titlebox, false, false); auto title = Gtk::make_managed(_("Title")); title->set_halign (Gtk::ALIGN_START); title->set_margin_start (20); title->set_size_request (100); titlebox->pack_start(*title, false, false); title->show(); titlebox->pack_start(titlesw, false, false); titlesw.set_state(printoption_title); titlesw.show(); titlebox->show(); // print comment? auto commentbox = Gtk::make_managed(Gtk::ORIENTATION_HORIZONTAL, 100); commentbox->set_margin_top (20); printpage_options->pack_start (*commentbox, false, false); auto comment = Gtk::make_managed(_("Comment")); comment->set_halign(Gtk::ALIGN_START); comment->set_margin_start(20); comment->set_size_request (100); commentbox->pack_start(*comment, false, false); comment->show(); commentbox->pack_start(commentsw, false, false); commentsw.set_state(printoption_comment); commentsw.show(); commentbox->show(); // print diagram? auto diagrambox = Gtk::make_managed(Gtk::ORIENTATION_HORIZONTAL, 100); diagrambox->set_margin_top (20); printpage_options->pack_start (*diagrambox, false, false); auto diagram = Gtk::make_managed(_("Diagram")); diagram->set_halign(Gtk::ALIGN_START); diagram->set_margin_start(20); diagram->set_size_request (100); diagrambox->pack_start(*diagram, false, false); diagram->show(); diagrambox->pack_start(diagsw, false, false); diagsw.set_state(printoption_diag); diagsw.show(); diagrambox->show(); // print result? auto resultbox = Gtk::make_managed(Gtk::ORIENTATION_HORIZONTAL, 100); resultbox->set_margin_top (20); printpage_options->pack_start (*resultbox, false, false); auto result = Gtk::make_managed(_("Evaluation")); result->set_halign(Gtk::ALIGN_START); result->set_margin_start(20); result->set_size_request (100); resultbox->pack_start(*result, false, false); result->show(); resultbox->pack_start(resultsw, false, false); resultsw.set_state(printoption_result); resultsw.show(); resultbox->show(); printpage_options->show(); return printpage_options; } void PrintOP::begin_print (const Glib::RefPtr& print_context) { int width, height; int pg_width, pg_height, img_width, img_height; int text_width, text_height; double img_space_width, img_space_height; double new_img_width=0, new_img_height=0; int print_pages = 1; double printpage_height = 0; double line_height; double scale_factor; Pango::Rectangle ink_rect, logical_rect; /////// Generate Layout ///////// // initialize Print-Context page_layout = print_context->create_pango_layout(); page_width = print_context->get_width(); page_height = print_context->get_height(); pg_width = static_cast(page_width * pg_scale); pg_height = static_cast(page_height * pg_scale); page_layout->set_width(pg_width); //calculate number of pages printpage_height = 0; PageBreaks.clear (); font = Pango::FontDescription("Serif 8"); page_layout->set_font_description(font); if (printoption_title) { font.set_size(18*pg_scale); page_layout->set_font_description(font); report_title = project->title; page_layout->set_text(report_title); page_layout->get_pixel_size(text_width, text_height); printpage_height += text_height + 10; } if (printoption_comment) { font.set_size(10*pg_scale); page_layout->set_font_description(font); report_comment = project->comment; page_layout->set_text(report_comment); page_layout->get_pixel_size(text_width, text_height); printpage_height += text_height; } if (printoption_diag) { img_space_height = page_height - printpage_height - bottom_margin - text_height; img_space_width = page_width - left_margin - right_margin; img_width = diag->diag_sf->get_width(); img_height = diag->diag_sf->get_height(); new_img_width = img_width; new_img_height = img_height; if (img_width > img_space_width) { new_img_width = img_space_width; new_img_height = new_img_width * img_height/img_width; if (new_img_height > img_space_height) { new_img_height = img_space_height; new_img_width = new_img_height * img_width/img_height; } } else if (img_height > img_space_height) { new_img_height = img_space_height; new_img_width = new_img_height * img_width/img_height; if (new_img_width > img_space_width) { new_img_width = img_space_width; new_img_height = new_img_width * img_height/img_width; } } printpage_height += new_img_height + 50; } if (printoption_result) { font.set_size(10*pg_scale); page_layout->set_font_description(font); if (eval_integration) { report_results = _("Peak-Integration:"); report_results += "\n"; } else if (eval_reglin) { report_results = _("Linear Regression:"); report_results += "\n"; } report_results += project->evalresults; page_layout->set_text(report_results); page_layout->get_pixel_size(text_width, text_height); } //Set the number of pages to print by determining the line numbers where page breaks occur const int line_count = page_layout->get_line_count(); for (int line = 0; line < line_count; ++line) { layout_line = page_layout->get_line(line); layout_line->get_extents(ink_rect, logical_rect); line_height = logical_rect.get_height() / pg_scale; if (printpage_height + line_height > page_height) { PageBreaks.push_back(line); printpage_height = 0; } printpage_height += line_height; } print_pages += PageBreaks.size(); print_op->set_n_pages(print_pages); return; } void PrintOP::draw_pagelayout(Glib::RefPtr page_layout, double start, int page_nr) { int start_page_line = 0; int end_page_line = 0; int line_index = 0; int baseline; double start_pos = 0; Pango::LayoutIter iter; Pango::Rectangle logical_rect; if(page_nr == 0) start_page_line = 0; else { start_page_line = PageBreaks[page_nr - 1]; start = top_margin; } if(page_nr < static_cast(PageBreaks.size())) end_page_line = PageBreaks[page_nr]; else end_page_line = page_layout->get_line_count(); page_layout->update_from_cairo_context (print_ct); //Render Pango LayoutLines over the Cairo context: iter = page_layout->get_iter(); line_index = 0; do { if(line_index >= start_page_line) { auto layout_line = iter.get_line(); logical_rect = iter.get_line_logical_extents(); baseline = iter.get_baseline(); if (line_index == start_page_line) start_pos = logical_rect.get_y() / pg_scale; print_ct->move_to(left_margin + logical_rect.get_x() / pg_scale, start + baseline / pg_scale - start_pos); layout_line->show_in_cairo_context(print_ct); } line_index++; } while(line_index < end_page_line && iter.next_line()); return; } void PrintOP::draw_page(const Glib::RefPtr& print_context, int page_nr) { int width, height; int img_width, img_height; int text_width, text_height; double img_space_width, img_space_height; int new_img_width=0, new_img_height=0; double scale_factor, pc_posx, pc_posy; Pango::TabArray tabs; print_ct = print_context->get_cairo_context (); // fill page with text and diagram print_ct->set_source_rgb(0.0, 0.0, 0.0); if (page_nr == 0) { font = Pango::FontDescription("Serif 8"); page_layout->set_font_description(font); print_ct->move_to (left_margin, top_margin); if (printoption_title) { font.set_size(18*pg_scale); page_layout->set_font_description(font); report_title = project->title; page_layout->set_text(report_title); page_layout->update_from_cairo_context (print_ct); page_layout->show_in_cairo_context(print_ct); page_layout->get_pixel_size(text_width, text_height); print_ct->get_current_point(pc_posx, pc_posy); print_ct->move_to (left_margin, pc_posy + text_height + 10); } if (printoption_comment) { font.set_size(10*pg_scale); page_layout->set_font_description(font); report_comment = project->comment; page_layout->set_text(report_comment); page_layout->update_from_cairo_context (print_ct); page_layout->show_in_cairo_context(print_ct); page_layout->get_pixel_size(text_width, text_height); print_ct->get_current_point(pc_posx, pc_posy); print_ct->move_to (left_margin, pc_posy + text_height); } if (printoption_diag) { page_layout->get_pixel_size(text_width, text_height); print_ct->get_current_point(pc_posx, pc_posy); text_height += trunc(pc_posy)-top_margin; img_space_height = page_height - bottom_margin - text_height; img_space_width = page_width - left_margin - right_margin; img_width = diag->diag_sf->get_width(); img_height = diag->diag_sf->get_height(); new_img_width = img_width; new_img_height = img_height; width = diag->width; height = diag->height; //correct width and height of image if (img_width > img_space_width) { new_img_width = img_space_width; new_img_height = new_img_width * img_height/img_width; if (new_img_height > img_space_height) { new_img_height = img_space_height; new_img_width = new_img_height * img_width/img_height; } } else if (img_height > img_space_height) { new_img_height = img_space_height; new_img_width = new_img_height * img_width/img_height; if (new_img_width > img_space_width) { new_img_width = img_space_width; new_img_height = new_img_width * img_height/img_width; } } scale_factor = new_img_width; scale_factor /= img_width; //print_ct mit pattern füllen: auto pattern = Cairo::SurfacePattern::create(diag->diag_sf); auto m = pattern->get_matrix(); m.scale(1/scale_factor, 1/scale_factor); m.translate(-left_margin,-text_height); pattern->set_matrix(m); print_ct->set_source(pattern); print_ct->rectangle (left_margin, text_height, new_img_width, new_img_height); print_ct->fill(); } if (printoption_result) { print_ct->set_source_rgb(0.0, 0.0, 0.0); font.set_size(10*pg_scale); page_layout->set_font_description(font); if (eval_integration) { report_results = _("Peak-Integration:"); report_results += "\n"; tabs = Pango::TabArray (3, false); tabs.set_tab (0, Pango::TAB_LEFT, 60* pg_scale); tabs.set_tab (1, Pango::TAB_LEFT, 120* pg_scale); tabs.set_tab (2, Pango::TAB_LEFT, 200* pg_scale); } else if (eval_reglin) { report_results = _("Linear Regression:"); report_results += "\n"; } else if (eval_diff) { report_results = _("Differential Function:"); report_results += "\n"; } print_ct->move_to (left_margin, pc_posy + new_img_height + 20); report_results += project->evalresults; page_layout->set_text(report_results); if (eval_integration) page_layout->set_tabs(tabs); print_ct->get_current_point(pc_posx, pc_posy); draw_pagelayout (page_layout, pc_posy, page_nr); } } else if (printoption_result) draw_pagelayout (page_layout, 0, page_nr); ps = 1.0; //reset scaling factor pf = 1.0; return; } galvani-v0.38/src/options.cxx0000644000175000017500000016502014713174213016136 0ustar burkardburkard// options.cxx // This file is part of galvani. // Copyright (C) 2020-2024 Burkard Lutz // // 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, see . #include #include #include #include "options.h" #include #include #include namespace fs = std::experimental::filesystem; ///////////////////////////////// DMM-Functions: Transform to Strings /////////////// std::string Multimeter::get_baud() { std::string baudrate; switch (dmm_baud) { case LibSerial::BaudRate::BAUD_600: baudrate = "600"; break; case LibSerial::BaudRate::BAUD_1200: baudrate = "1200"; break; case LibSerial::BaudRate::BAUD_1800: baudrate = "1800"; break; case LibSerial::BaudRate::BAUD_2400: baudrate = "2400"; break; case LibSerial::BaudRate::BAUD_4800: baudrate = "4800"; break; case LibSerial::BaudRate::BAUD_9600: baudrate = "9600"; break; case LibSerial::BaudRate::BAUD_19200: baudrate = "19200"; break; case LibSerial::BaudRate::BAUD_38400: baudrate = "38400"; break; case LibSerial::BaudRate::BAUD_57600: baudrate = "57600"; break; case LibSerial::BaudRate::BAUD_115200: baudrate = "115200"; break; default: baudrate = "9600"; } return baudrate; } void Multimeter::set_baud(std::string baudrate) { if (baudrate == "600") dmm_baud = LibSerial::BaudRate::BAUD_600; else if (baudrate == "1200") dmm_baud = LibSerial::BaudRate::BAUD_1200; else if (baudrate == "1800") dmm_baud = LibSerial::BaudRate::BAUD_1800; else if (baudrate == "2400") dmm_baud = LibSerial::BaudRate::BAUD_2400; else if (baudrate == "4800") dmm_baud = LibSerial::BaudRate::BAUD_4800; else if (baudrate == "9600") dmm_baud = LibSerial::BaudRate::BAUD_9600; else if (baudrate == "19200") dmm_baud = LibSerial::BaudRate::BAUD_19200; else if (baudrate == "38400") dmm_baud = LibSerial::BaudRate::BAUD_38400; else if (baudrate == "57600") dmm_baud = LibSerial::BaudRate::BAUD_57600; else if (baudrate == "115200") dmm_baud = LibSerial::BaudRate::BAUD_115200; else dmm_baud = LibSerial::BaudRate::BAUD_9600; return; } std::string Multimeter::get_charsize() { std::string charactersize; switch (dmm_charsize) { case LibSerial::CharacterSize::CHAR_SIZE_7: charactersize = "7"; break; case LibSerial::CharacterSize::CHAR_SIZE_8: charactersize = "8"; break; default: charactersize = "7"; } return charactersize; } void Multimeter::set_charsize(std::string charactersize) { if (charactersize == "7") dmm_charsize =LibSerial::CharacterSize::CHAR_SIZE_7; else if (charactersize == "8") dmm_charsize =LibSerial::CharacterSize::CHAR_SIZE_8; else dmm_charsize =LibSerial::CharacterSize::CHAR_SIZE_7; return; } std::string Multimeter::get_flowcontrol() { std::string flowcontrol; switch (dmm_flowcontrol) { case LibSerial::FlowControl::FLOW_CONTROL_HARDWARE: flowcontrol = "hardware"; break; case LibSerial::FlowControl::FLOW_CONTROL_SOFTWARE: flowcontrol = "software"; break; case LibSerial::FlowControl::FLOW_CONTROL_NONE: flowcontrol = "none"; break; default: flowcontrol = "none"; } return flowcontrol; } void Multimeter::set_flowcontrol(std::string flowcontrol) { if (flowcontrol == "hardware") dmm_flowcontrol = LibSerial::FlowControl::FLOW_CONTROL_HARDWARE; else if (flowcontrol == "software") dmm_flowcontrol = LibSerial::FlowControl::FLOW_CONTROL_SOFTWARE; else dmm_flowcontrol = LibSerial::FlowControl::FLOW_CONTROL_NONE; return; } std::string Multimeter::get_stopbits() { std::string stopbits; switch (dmm_stopbits) { case LibSerial::StopBits::STOP_BITS_1: stopbits = "1"; break; case LibSerial::StopBits::STOP_BITS_2: stopbits = "2"; break; default: stopbits = "2"; } return stopbits; } void Multimeter::set_stopbits(std::string stopbits) { if (stopbits == "1") dmm_stopbits = LibSerial::StopBits::STOP_BITS_1; else dmm_stopbits = LibSerial::StopBits::STOP_BITS_2; return; } std::string Multimeter::get_parity() { std::string parity; switch (dmm_parity) { case LibSerial::Parity::PARITY_EVEN: parity = "even"; break; case LibSerial::Parity::PARITY_ODD: parity = "odd"; break; case LibSerial::Parity::PARITY_NONE: parity = "none"; break; default: parity = "none"; } return parity; } void Multimeter::set_parity(std::string parity) { if (parity == "even") dmm_parity = LibSerial::Parity::PARITY_EVEN; else if (parity == "odd") dmm_parity = LibSerial::Parity::PARITY_ODD; else dmm_parity = LibSerial::Parity::PARITY_NONE; return; } //////////////////////////////// show options ////////////////////////////////// void show_options_diag () { edit_options->set_current_page (0); set_options(); return; } void show_options_device_x () { edit_options->set_current_page (1); set_options(); return; } void show_options_device_y () { edit_options->set_current_page (2); set_options(); return; } void show_diag_settings () { Gdk::RGBA color; //Colours color.set_rgba(diag->bkcol_r, diag->bkcol_g, diag->bkcol_b); diag_bkcolor->set_rgba(color); color.set_rgba(diag->gridcol_r, diag->gridcol_g, diag->gridcol_b); diag_gridcolor->set_rgba(color); color.set_rgba(diag->axcol_r, diag->axcol_g, diag->axcol_b); diag_axcolor->set_rgba(color); color.set_rgba(diag->xycol_r, diag->xycol_g, diag->xycol_b); diag_xycolor->set_rgba(color); //Switches diag_gridsw->set_state(diag->grid); diag_autoscalesw->set_state(diag->autoscale); diag_zerosw->set_state(diag->showzero); diag_titlesw->set_state(diag->showtitle); //Symbols if (diag->mw_symbol == cross) diag_symbol->set_active_text(_("cross")); else if (diag->mw_symbol == square) diag_symbol->set_active_text(_("square")); else if (diag->mw_symbol == circle) diag_symbol->set_active_text(_("circle")); else if (diag->mw_symbol == diamond) diag_symbol->set_active_text(_("diamond")); else diag_symbol->set_active_text(_("no symbol")); diag_symw->set_value(diag->symw); //Symbol style if (diag->symbol_filled) diag_symbolstyle->set_active_text(_("filled")); else diag_symbolstyle->set_active_text(_("outline")); //Line style if (diag->mw_linestyle == dashed) diag_linestyle->set_active_text(_("dashed")); else if (diag->mw_linestyle == pointed) diag_linestyle->set_active_text(_("dotted")); else diag_linestyle->set_active_text(_("solid")); //Connection between points if (diag->mw_line) diag_graph->set_active_text(_("line")); else if (diag->mw_curve) diag_graph->set_active_text(_("curve")); else diag_graph->set_active_text(_("no connection")); //manual scaling diag_xmin->set_value(diag->xmin); diag_xmax->set_value(diag->xmax); diag_ymin->set_value(diag->ymin); diag_ymax->set_value(diag->ymax); show_diag_manual_limits (diag_autoscalesw->get_state ()); return; } void show_diag_manual_limits (bool manual) { bool auto_scale; auto_scale = diag_autoscalesw->get_state(); if (auto_scale) { diag_xmin-> set_sensitive (false); diag_xmax-> set_sensitive (false); diag_ymin-> set_sensitive (false); diag_ymax-> set_sensitive (false); } else { diag_xmin-> set_sensitive (true); diag_xmax-> set_sensitive (true); diag_ymin-> set_sensitive (true); diag_ymax-> set_sensitive (true); } return; } void show_options_Kanal_XY () { int i; bool dmm_remote; preset_mtime (); // Set minimum values for Measurement intervall for (int k=0; k<=1; k++) { if (dmm[k].dmm_typ == TIME) { dmm_typ[k]->set_active_text(_("Time")); dmm_dmm_options[k]->hide(); dmm_serial_options[k]->hide(); dmm_usb_options[k]->hide(); dmm_simtyp[k]->hide(); dmm_control_options[k]->hide(); dmm_function_control[k]->hide(); sim_linoptions[k]->hide(); sim_expoptions->hide(); sim_chromoptions->hide(); } else if (dmm[k].dmm_typ == DMM) //DMM { dmm_dmm_options[k]->show(); sim_linoptions[k]->hide(); sim_expoptions->hide(); sim_chromoptions->hide(); if (k == 1) dmm_device_options->hide(); dmm_typ[k]->set_active_text(_("Digitalmultimeter")); dmm_simtyp[k]->hide(); dmm_interface[k]->remove_all(); ports = dmm[k].dmm_port.GetAvailableSerialPorts(); for (i=0; iappend (ports.at(i)); ports = get_usb_ports(); for (i=0; iappend (ports.at(i)); dmm_interface[k]->show(); // renew list of all installed dmm dmm_name[k]->remove_all (); for (i=1; i<=mid; i++) dmm_name[k]->append (idmm[i].dmm_name); dmm[k].m_range = set_std_range (dmm[k].m_funkt); dmm_name[k]->set_active_text(dmm[k].dmm_name); dmm_interface[k]->set_active_text(dmm[k].int_face); dmm_baud[k]->set_active_text(dmm[k].get_baud()); dmm_bits[k]->set_active_text(dmm[k].get_charsize()); dmm_flowcontrol[k]->set_active_text(dmm[1].get_flowcontrol()); dmm_stopbits[k]->set_active_text(dmm[k].get_stopbits()); dmm_parity[k]->set_active_text(dmm[k].get_parity()); dmm_polling[k]->set_state(dmm[k].dmm_polling); dmm_scpi[k]->set_state(dmm[k].scpi); dmm_num_bytes[k]->set_value(dmm[k].num_bytes); dmm_usb_bytes[k]->set_value(dmm[k].usb_bytes); dmm_num_val[k]->set_value(dmm[k].num_val); dmm_timeout[k]->set_value(dmm[k].ms_timeout); show_dmm_interface_options (k); dmm_remote_control[k]->set_state(dmm[k].remote_cfg); dmm_remote = dmm_remote_control[k]->get_state (); if (dmm_remote) { show_dmm_function_control(true, k); dmm_funktion[k]->set_active_text(dmm[k].m_funkt); dmm_range[k]->set_active_text(dmm[k].m_range); dmm_DCV[k]->set_active_text (dmm[k].get_ctrlstr (DCV)); dmm_ACV[k]->set_active_text (dmm[k].get_ctrlstr (ACV)); dmm_DCmA[k]->set_active_text (dmm[k].get_ctrlstr (DCmA)); dmm_ACmA[k]->set_active_text (dmm[k].get_ctrlstr (ACmA)); dmm_DCA[k]->set_active_text (dmm[k].get_ctrlstr (DCA)); dmm_ACA[k]->set_active_text (dmm[k].get_ctrlstr (ACA)); dmm_Res[k]->set_active_text (dmm[k].get_ctrlstr (Res)); dmm_Cond[k]->set_active_text (dmm[k].get_ctrlstr (Cond)); dmm_pH[k]->set_active_text (dmm[k].get_ctrlstr (pH)); dmm_Temp[k]->set_active_text (dmm[k].get_ctrlstr (Temp)); dmm_control_options[k]-> show(); } else dmm_control_options[k]-> hide(); } else if (dmm[k].dmm_typ == DEVICE) //Device { dmm_dmm_options[k]->hide(); dmm_serial_options[k]->hide(); dmm_usb_options[k]->hide(); dmm_control_options[k]->hide(); dmm_function_control[k]->hide(); dmm_simtyp[k]->hide(); sim_linoptions[k]->hide(); sim_expoptions->hide(); sim_chromoptions->hide(); if (k == 1) dmm_device_options->show(); dmm_typ[k]->set_active_text(_("Device")); device_interface->remove_all(); ports = dmm[k].dmm_port.GetAvailableSerialPorts(); for (i=0; iappend (ports.at(i)); ports = get_usb_ports(); for (i=0; iappend (ports.at(i)); device_interface->set_active_text(dmm[k].int_face); device_interface->show(); } else //Simulation { dmm_typ[k]->set_active_text(_("Simulation")); dmm_dmm_options[k]->hide(); dmm_device_options->hide(); dmm_serial_options[k]->hide(); dmm_usb_options[k]->hide(); dmm_control_options[k]->hide(); dmm_function_control[k]->hide(); switch (dmm[k].dmm_typ) { case LINEAR: dmm_simtyp[k]->set_active_text(_("Linear")); break; case EXP: dmm_simtyp[k]->set_active_text(_("Exponential")); break; case PEAK: dmm_simtyp[k]->set_active_text(_("Chromatogram")); break; case PH: dmm_simtyp[k]->set_active_text("pH"); break; } dmm_simtyp[k]->show(); show_simulation_options (k); } } return; } void show_simulation_options (int k) //show options for linear simulation { std::string option; typ simtyp; option = dmm_simtyp[k]->get_active_text(); if (option == _("Linear")) simtyp = LINEAR; else if (option == _("Exponential")) simtyp = EXP; else if (option == _("Chromatogram")) simtyp = PEAK; else simtyp = PH; switch (simtyp) { case LINEAR: { dmm_simtyp[k]->set_active_text(_("Linear")); sim_slope[k]->set_value(dmm[k].m); sim_shift[k]->set_value(100*dmm[k].rf); //shift in percentage if (dmm[k].auto_slope) //slope { sim_slope_switch[k]->set_state(true); sim_slope[k]->set_sensitive (false); } else { sim_slope_switch[k]->set_state(false); sim_slope[k]->set_sensitive (true); } if (dmm[k].auto_shift) //shift factor { sim_shift_switch[k]->set_state(true); sim_shift[k]->set_sensitive (false); } else { sim_shift_switch[k]->set_state(false); sim_shift[k]->set_sensitive (true); } sim_linoptions[k]->show(); sim_expoptions->hide(); sim_chromoptions->hide (); } break; case EXP: { dmm_simtyp[k]->set_active_text(_("Exponential")); sim_init->set_value(dmm[k].a); sim_tc->set_value(dmm[k].k); sim_expshift->set_value(100*dmm[k].exp_rf); //shift in percentage if (dmm[k].auto_init) //initial value { sim_init_sw->set_state(true); sim_init->set_sensitive (false); } else { sim_init_sw->set_state(false); sim_init->set_sensitive (true); } if (dmm[k].auto_tc) //time constant { sim_tc_sw->set_state(true); sim_tc->set_sensitive (false); } else { sim_tc_sw->set_state(false); sim_tc->set_sensitive (true); } if (dmm[k].auto_expshift) //shift factor { sim_expshift_sw->set_state(true); sim_expshift->set_sensitive (false); } else { sim_expshift_sw->set_state(false); sim_expshift->set_sensitive (true); } sim_expoptions->show(); sim_linoptions[k]->hide(); sim_chromoptions->hide (); } break; case PEAK: { dmm_simtyp[k]->set_active_text(_("Chromatogram")); sim_np->set_value(dmm[k].n); sim_max_rt->set_value(dmm[k].max_rt); sim_bf->set_value(dmm[k].bf); sim_drift->set_value(100*dmm[k].drift); //drift in % if (dmm[k].auto_np) //number of peaks { sim_np_sw->set_state(true); sim_np->set_sensitive (false); } else { sim_np_sw->set_state(false); sim_np->set_sensitive (true); } if (dmm[k].auto_rt) //max. retention time { sim_max_rt_sw->set_state(true); sim_max_rt->set_sensitive (false); } else { sim_max_rt_sw->set_state(false); sim_max_rt->set_sensitive (true); } if (dmm[k].auto_bf) //peak width { sim_bf_sw->set_state(true); sim_bf->set_sensitive (false); } else { sim_bf_sw->set_state(false); sim_bf->set_sensitive (true); } if (dmm[k].auto_drift) //drift { sim_drift_sw->set_state(true); sim_drift->set_sensitive (false); } else { sim_drift_sw->set_state(false); sim_drift->set_sensitive (true); } sim_chromoptions->show (); sim_linoptions[k]->hide(); sim_expoptions->hide(); } break; case PH: { dmm_simtyp[k]->set_active_text("pH"); sim_linoptions[k]->hide(); sim_expoptions->hide(); sim_chromoptions->hide (); } break; } return; } void show_simlin_options (bool state, int k) // show options for linear simulation { bool autoslope_x, autoshift_x, autoslope_y, autoshift_y; autoslope_x = sim_slope_switch[0]->get_state (); autoshift_x = sim_shift_switch[0]->get_state (); autoslope_y = sim_slope_switch[1]->get_state (); autoshift_y = sim_shift_switch[1]->get_state (); if (autoslope_x) sim_slope[0]->set_sensitive (false); else sim_slope[0]->set_sensitive (true); if (autoshift_x) sim_shift[0]->set_sensitive (false); else sim_shift[0]->set_sensitive (true); if (autoslope_y) sim_slope[1]->set_sensitive (false); else sim_slope[1]->set_sensitive (true); if (autoshift_y) sim_shift[1]->set_sensitive (false); else sim_shift[1]->set_sensitive (true); return; } void show_simexp_options (int k) // show options for exponential simulation { bool auto_init, auto_tc, auto_shift; auto_init = sim_init_sw->get_state (); auto_shift = sim_expshift_sw->get_state (); auto_tc = sim_tc_sw->get_state (); if (auto_init) sim_init->set_sensitive (false); else sim_init->set_sensitive (true); if (auto_tc) sim_tc->set_sensitive (false); else sim_tc->set_sensitive (true); if (auto_shift) sim_expshift->set_sensitive (false); else sim_expshift->set_sensitive (true); return; } void show_simchrom_options (int k) // show options for peak simulation (chromatogram) { bool auto_np, auto_rt, auto_bf, auto_drift; auto_np = sim_np_sw->get_state (); auto_rt = sim_max_rt_sw->get_state (); auto_bf = sim_bf_sw->get_state (); auto_drift = sim_drift_sw->get_state (); if (auto_np) sim_np->set_sensitive (false); else sim_np->set_sensitive (true); if (auto_rt) sim_max_rt->set_sensitive (false); else sim_max_rt->set_sensitive (true); if (auto_bf) sim_bf->set_sensitive (false); else sim_bf->set_sensitive (true); if (auto_drift) sim_drift->set_sensitive (false); else sim_drift->set_sensitive (true); return; } void show_dmm_control_options (bool state, int kanal) { bool dmm_remote_ctrl; dmm_remote_ctrl = dmm_remote_control[kanal]->get_state(); if ((dmm_remote_ctrl) && (dmm[kanal].dmm_typ == DMM)) { show_dmm_function_control(true, kanal); dmm_control_options[kanal]-> show(); } else { dmm_function_control[kanal]->hide(); dmm_control_options[kanal]-> hide(); } return; } void show_dmm_function_control(bool state, int k) { bool dmm_remote_ctrl; dmm_remote_ctrl = dmm_remote_control[k]->get_state(); if ((dmm_remote_ctrl) && (dmm[k].dmm_typ == DMM)) { dmm_funktion[k]->remove_all (); if (dmm_DCV[k]->get_active_text () != "") dmm_funktion[k]->append(_("DC Voltage")); if (dmm_ACV[k]->get_active_text () != "") dmm_funktion[k]->append(_("AC Voltage")); if ((dmm_DCmA[k]->get_active_text () != "") || (dmm_DCA[k]->get_active_text () != "")) dmm_funktion[k]->append(_("DC Current")); if ((dmm_ACmA[k]->get_active_text () != "") || (dmm_ACA[k]->get_active_text () != "")) dmm_funktion[k]->append(_("AC Current")); if (dmm_Res[k]->get_active_text () != "") dmm_funktion[k]->append(_("Resistance")); if (dmm_Cond[k]->get_active_text () != "") dmm_funktion[k]->append(_("Conductivity")); if (dmm_pH[k]->get_active_text () != "") dmm_funktion[k]->append(_("pH")); if (dmm_Temp[k]->get_active_text () != "") dmm_funktion[k]->append(_("Temperature")); dmm_funktion[k]->set_active_text(dmm[k].m_funkt); set_range_options_device (k); dmm_range[k]->set_active_text(dmm[k].m_range); dmm_function_control[k]-> show(); } return; } void show_dmm_interface_options(int kanal) { std::string interface; interface = dmm_interface[kanal]->get_active_text(); if (interface.find ("tty")< interface.size()) { dmm_serial_options[kanal]->show(); dmm_usb_options[kanal]->hide(); } else if ((interface.find ("usb")< interface.size()) || (interface.find ("hid")< interface.size())) { dmm_serial_options[kanal]->hide(); dmm_usb_options[kanal]->show(); } else { dmm_serial_options[kanal]->hide(); dmm_usb_options[kanal]->hide(); } return; } void preset_mtime () //preset measuring timeout according to device option { double dmm1_timeout,dmm2_timeout; std::string dmm1_typ, dmm2_typ; dmm1_timeout = dmm_timeout[0]->get_value (); dmm2_timeout = dmm_timeout[1]->get_value (); dmm1_typ = dmm_typ[0]->get_active_text (); dmm2_typ = dmm_typ[1]->get_active_text (); if (dmm2_typ != _("Simulation")) min_timeout = dmm2_timeout; else min_timeout = 1; if ((dmm1_typ == _("Digitalmultimeter")) && (dmm1_timeout > min_timeout)) min_timeout = dmm1_timeout; dmm_mtime->set_range (0.001 * min_timeout, 3600); messintervall = 0.001 * diag->mtime; // measurement intervall in seconds dmm_mtime->set_value(messintervall); dmm_mtime->queue_draw(); return; } void restart_options_x () { std::string option; option = dmm_typ[0]->get_active_text(); if (option == _("Time")) dmm[0].dmm_typ = TIME; else if (option == _("Digitalmultimeter")) dmm[0].dmm_typ = DMM; else { dmm[0].dmm_typ = LINEAR; dmm_simtyp[0]->set_active_text(_("Linear")); } show_options_Kanal_XY (); return; } void restart_options_y () { std::string option; typ dmmtyp; dmmtyp = dmm[1].dmm_typ; option = dmm_typ[1]->get_active_text(); if (option == _("Digitalmultimeter")) dmm[1].dmm_typ = DMM; else if (option == _("Device")) dmm[1].dmm_typ = DEVICE; else { dmm[1].dmm_typ = LINEAR; if ((dmmtyp != DMM) && (dmmtyp != DEVICE)) dmm[1].dmm_typ = dmmtyp; } show_options_Kanal_XY (); return; } //////////////////////////////// set options ////////////////////////////////// void set_options () { std::string option, funkt_x_saved; typ dmm1_typ_saved, dmm2_typ_saved; int i, opt_page; // save starting values dmm1_typ_saved = dmm[0].dmm_typ; dmm2_typ_saved = dmm[1].dmm_typ; funkt_x_saved = project->funktion_x; show_diag_settings(); //diagram settings show_options_Kanal_XY (); //device settings options_dialog-> show (); //start dialog ////////////////////// Accept Settings /////////////////////// int result = options_dialog->run(); switch(result) { case(Gtk::RESPONSE_ACCEPT): { set_options_diag (); //set new options for diagram // device settings set_device_options (0); //set device options for channel X set_device_options (1); //set device options for channel Y set_mtime (); break; } case(Gtk::RESPONSE_CANCEL): { // reset dmm_typ dmm[0].dmm_typ = dmm1_typ_saved; dmm[1].dmm_typ = dmm2_typ_saved; project->funktion_x = funkt_x_saved; break; } case(Gtk::RESPONSE_DELETE_EVENT): //Reset { if (!dialog_ok (_("Reset options of current page?"))) break; opt_page = edit_options->get_current_page (); switch (opt_page) { case 0: // Reset Diagram Settings reset_options_diag (); break; case 1: // Reset DMM-Settings Channel X reset_options_kanal_X(); break; case 2: // Reset DMM-Settings Channel Y reset_options_kanal_Y(); break; } break; } } options_dialog->hide(); return; } void set_options_diag () // Diagram Settings { Gdk::RGBA color; std::string option; //Colours color = diag_bkcolor->get_rgba(); diag->bkcol_r = color.get_red(); diag->bkcol_g = color.get_green(); diag->bkcol_b = color.get_blue(); color = diag_axcolor->get_rgba(); diag->axcol_r = color.get_red(); diag->axcol_g = color.get_green(); diag->axcol_b = color.get_blue(); color = diag_gridcolor->get_rgba(); diag->gridcol_r = color.get_red(); diag->gridcol_g = color.get_green(); diag->gridcol_b = color.get_blue(); color = diag_xycolor->get_rgba(); diag->xycol_r = color.get_red(); diag->xycol_g = color.get_green(); diag->xycol_b = color.get_blue(); //Switches diag->grid = diag_gridsw->get_state(); diag->autoscale = diag_autoscalesw->get_state(); diag->showzero = diag_zerosw->get_state(); diag->showtitle = diag_titlesw->get_state(); //Symbols option = diag_symbol->get_active_text(); if (option == _("cross")) { diag->mw_symbol = cross; diag_symbolstyle->set_active_text(_("outline")); } else if (option == _("square")) diag->mw_symbol = square; else if (option == _("circle")) diag->mw_symbol = circle; else if (option == _("diamond")) diag->mw_symbol = diamond; else diag->mw_symbol = none; diag->symw = diag_symw->get_value(); //Symbol style option = diag_symbolstyle->get_active_text(); if (option == _("filled")) diag->symbol_filled = true; else diag->symbol_filled = false; //Line style option = diag_linestyle->get_active_text(); if (option == _("dashed")) diag->mw_linestyle = dashed; else if (option == _("dotted")) diag->mw_linestyle = pointed; else diag->mw_linestyle = solid; //Connection between points option = diag_graph->get_active_text(); if (option == _("line")) { diag->mw_line = true; diag->mw_curve = false; } else if (option == _("curve")) { diag->mw_line = false; diag->mw_curve = true; } else { diag->mw_line = false; diag->mw_curve = false; } //manual scaling diag->xmin = diag_xmin->get_value(); if (diag->xmin < 0) diag->xmin = 0; if (diag_xmax->get_value() > diag->xmin) diag->xmax = diag_xmax->get_value(); diag->xscale = diag->xmax - diag->xmin; diag->ymin = diag_ymin->get_value(); if ((diag->showzero) && (diag->ymin > 0)) diag->ymin = 0; if (diag_ymax->get_value() > diag->ymin) diag->ymax = diag_ymax->get_value(); if ((diag->showzero) && (diag->ymax < 0)) diag->ymax = 0; diag->yscale = diag->ymax - diag->ymin; return; } void set_device_options (int k) //set options for channel X,Y { std::string option; int i; option = dmm_typ[k]->get_active_text(); if (option == _("Time")) { dmm[k].dmm_typ = TIME; dmm[k].dmm_name = ""; project->funktion_x = _("Time"); } else if (option == _("Simulation")) //simulation { dmm[k].remote_cfg = false; dmm[k].dmm_name = ""; dmm[k].int_face = ""; option = dmm_simtyp[k]->get_active_text(); if (option == _("Exponential")) { dmm[k].dmm_typ = EXP; dmm[k].auto_init = sim_init_sw->get_state(); if (!dmm[k].auto_init) dmm[k].a = sim_init->get_value (); dmm[k].auto_tc = sim_tc_sw->get_state(); if (!dmm[k].auto_tc) dmm[k].k = sim_tc->get_value (); dmm[k].auto_expshift = sim_expshift_sw->get_state(); if (!dmm[k].auto_expshift) dmm[k].exp_rf = 0.01*sim_expshift->get_value (); //shift in percent } else if (option == _("Chromatogram")) { dmm[k].dmm_typ = PEAK; dmm[k].auto_np = sim_np_sw->get_state(); if (!dmm[k].auto_np) dmm[k].n = sim_np->get_value (); dmm[k].auto_rt = sim_max_rt_sw->get_state(); if (!dmm[k].auto_rt) dmm[k].max_rt = sim_max_rt->get_value (); dmm[k].auto_bf = sim_bf_sw->get_state(); if (!dmm[k].auto_bf) dmm[k].bf = sim_bf->get_value (); dmm[k].auto_drift = sim_drift_sw->get_state(); if (!dmm[k].auto_drift) dmm[k].drift = 0.01*sim_drift->get_value (); //drift in % } else if (option == "pH") { dmm[k].dmm_typ = PH; set_messfunkt (1, "pH"); eval_titvolumen = true; } else { dmm[k].dmm_typ = LINEAR; dmm[k].auto_slope = sim_slope_switch[k]->get_state(); if (!dmm[k].auto_slope) dmm[k].m = sim_slope[k]->get_value (); dmm[k].auto_shift = sim_shift_switch[k]->get_state(); if (!dmm[k].auto_shift) dmm[k].rf = 0.01*sim_shift[k]->get_value (); //shift in percent } if (dmm[k].connected) dmm[k].disconnect_dmm (); // make changes happen } else if (option == _("Device")) //device { dmm[k].dmm_typ = DEVICE; dmm[k].dmm_name = device_name->get_active_text(); dmm[k].int_face = device_interface->get_active_text(); if (dmm[k].dmm_name == "Lutron PH-207") set_device_options_lutron_ph207 (); // other devices following } else //DMM { dmm[k].dmm_typ = DMM; dmm[k].dmm_name = dmm_name[k]->get_active_text(); dmm[k].int_face = dmm_interface[k]->get_active_text(); dmm[k].set_baud (dmm_baud[k]->get_active_text()); dmm[k].set_charsize (dmm_bits[k]->get_active_text()); dmm[k].set_flowcontrol (dmm_flowcontrol[k]->get_active_text()); dmm[k].set_stopbits (dmm_stopbits[k]->get_active_text()); dmm[k].set_parity (dmm_parity[k]->get_active_text()); dmm[k].dmm_polling = dmm_polling[k]->get_state(); dmm[k].scpi = dmm_scpi[k]->get_state(); dmm[k].usb_bytes = dmm_usb_bytes[k]->get_value(); dmm[k].num_bytes = dmm_num_bytes[k]->get_value(); dmm[k].num_val = dmm_num_val[k]->get_value(); dmm[k].ms_timeout = dmm_timeout[k]->get_value(); dmm[k].remote_cfg = dmm_remote_control[k]->get_state(); if (dmm_remote_control[k]->get_state()) { set_messfunkt (k, dmm_funktion[k]->get_active_text()); dmm[k].m_range = dmm_range[k]->get_active_text(); dmm[k].set_ctrlstr (DCV, dmm_DCV[k]->get_active_text ()); dmm[k].set_ctrlstr (ACV, dmm_ACV[k]->get_active_text ()); dmm[k].set_ctrlstr (DCmA, dmm_DCmA[k]->get_active_text ()); dmm[k].set_ctrlstr (ACmA, dmm_ACmA[k]->get_active_text ()); dmm[k].set_ctrlstr (DCA, dmm_DCA[k]->get_active_text ()); dmm[k].set_ctrlstr (ACA, dmm_ACA[k]->get_active_text ()); dmm[k].set_ctrlstr (Res, dmm_Res[k]->get_active_text ()); dmm[k].set_ctrlstr (Cond, dmm_Cond[k]->get_active_text ()); dmm[k].set_ctrlstr (pH, dmm_pH[k]->get_active_text ()); dmm[k].set_ctrlstr (Temp, dmm_Temp[k]->get_active_text ()); } //edit existing dmm or install new one if (dmm_exist (dmm_name[k]->get_active_text())) i = id; else i = ++mid; idmm[i].dmm_name = dmm_name[k]->get_active_text(); idmm[i].set_baud (dmm_baud[k]->get_active_text()); idmm[i].set_charsize (dmm_bits[k]->get_active_text()); idmm[i].set_flowcontrol (dmm_flowcontrol[k]->get_active_text()); idmm[i].set_stopbits (dmm_stopbits[k]->get_active_text()); idmm[i].set_parity (dmm_parity[k]->get_active_text()); idmm[i].dmm_polling = dmm_polling[k]->get_state(); idmm[i].scpi = dmm_scpi[k]->get_state(); idmm[i].usb_bytes = dmm_usb_bytes[k]->get_value(); idmm[i].num_bytes = dmm_num_bytes[k]->get_value(); idmm[i].num_val = dmm_num_val[k]->get_value(); idmm[i].ms_timeout = dmm_timeout[k]->get_value(); idmm[i].remote_cfg = dmm_remote_control[k]->get_state(); if (dmm_remote_control[k]->get_state()) { idmm[i].set_ctrlstr (DCV, dmm_DCV[k]->get_active_text ()); idmm[i].set_ctrlstr (ACV, dmm_ACV[k]->get_active_text ()); idmm[i].set_ctrlstr (DCmA, dmm_DCmA[k]->get_active_text ()); idmm[i].set_ctrlstr (ACmA, dmm_ACmA[k]->get_active_text ()); idmm[i].set_ctrlstr (DCA, dmm_DCA[k]->get_active_text ()); idmm[i].set_ctrlstr (ACA, dmm_ACA[k]->get_active_text ()); idmm[i].set_ctrlstr (Res, dmm_Res[k]->get_active_text ()); idmm[i].set_ctrlstr (Cond, dmm_Cond[k]->get_active_text ()); idmm[i].set_ctrlstr (pH, dmm_pH[k]->get_active_text ()); idmm[i].set_ctrlstr (Temp, dmm_Temp[k]->get_active_text ()); } } return; } void set_mtime () //set measuring timeout according to selected device { if ((dmm[1].dmm_typ == DMM) || (dmm[1].dmm_typ == DEVICE)) min_timeout = dmm[1].ms_timeout; else min_timeout = 1; if ((dmm[0].dmm_typ == DMM) && (dmm[0].ms_timeout > dmm[1].ms_timeout)) min_timeout = dmm[0].ms_timeout; diag->mtime = trunc (1000 * dmm_mtime->get_value()); if (diag->mtime < min_timeout) diag->mtime = min_timeout; return; } void set_range_options_device (int k) { std::string funkt; funkt = dmm_funktion[k]->get_active_text(); dmm_range[k]->remove_all(); if ((funkt == _("DC Voltage")) || (funkt == _("AC Voltage"))) { dmm_range[k]->append("200 mV"); dmm_range[k]->append("2 V"); dmm_range[k]->append("20 V"); dmm_range[k]->append("200 V"); dmm_range[k]->append("1000 V"); dmm_range[k]->set_active_text("200 mV"); } else if ((funkt == _("DC Current")) || (funkt == _("AC Current"))) { dmm_range[k]->append("200 uA"); dmm_range[k]->append("200 mA"); dmm_range[k]->append("20 A"); dmm_range[k]->set_active_text("200 mA"); } else if (funkt == _("Resistance")) { dmm_range[k]->append("200 Ohm"); dmm_range[k]->append("2 kOhm"); dmm_range[k]->append("20 kOhm"); dmm_range[k]->append("200 kOhm"); dmm_range[k]->append("2 MOhm"); dmm_range[k]->append("20 MOhm"); dmm_range[k]->set_active_text("200 Ohm"); } else if (funkt == _("Conductivity")) { dmm_range[k]->append("200 mS"); dmm_range[k]->set_active_text("200 mS"); } else if (funkt == _("pH")) { dmm_range[k]->append("pH"); dmm_range[k]->set_active_text("pH"); } else if (funkt == _("Temperature")) { dmm_range[k]->append("°C"); dmm_range[k]->set_active_text("°C"); } dmm_function_control[k]->queue_draw (); return; } bool dmm_exist (std::string name) //seek for dmm-name in array of installed dmms and set index { int i; bool exist; exist = false; for (i=0; i<=mid; i++) if (idmm[i].dmm_name == name) //position 0 not used, name is empty { exist = true; // dmm is installed id = i; //set index break; } if (!exist) id = 0; return exist; } void select_dmm (int k) { int i; std::string name, ctrl_str; bool dmm_remote; name = dmm_name[k]->get_active_text (); if (name == "") return; for (i=0; i<=mid; i++) { if (idmm[i].dmm_name == name) { // copy settings to actual dmm dmm_baud[k]->set_active_text(idmm[i].get_baud()); dmm_bits[k]->set_active_text(idmm[i].get_charsize()); dmm_flowcontrol[k]->set_active_text(idmm[i].get_flowcontrol()); dmm_stopbits[k]->set_active_text(idmm[i].get_stopbits()); dmm_parity[k]->set_active_text(idmm[i].get_parity()); dmm_polling[k]->set_state(idmm[i].dmm_polling); dmm_scpi[k]->set_state(idmm[i].scpi); dmm_usb_bytes[k]->set_value(idmm[i].usb_bytes); dmm_num_bytes[k]->set_value(idmm[i].num_bytes); dmm_num_val[k]->set_value(idmm[i].num_val); dmm_timeout[k]->set_value(idmm[i].ms_timeout); dmm_remote_control[k]->set_state(idmm[i].remote_cfg); dmm_remote = dmm_remote_control[k]->get_state (); if (dmm_remote) { ctrl_str = (idmm[i].m_funkt); dmm_funktion[k]->remove_all(); dmm_funktion[k]->append (ctrl_str); dmm_funktion[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].m_range); dmm_range[k]->remove_all(); dmm_range[k]->append (ctrl_str); dmm_range[k]->set_active_text(ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (DCV)); dmm_DCV[k]->remove_all(); dmm_DCV[k]->append (ctrl_str); dmm_DCV[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (ACV)); dmm_ACV[k]->remove_all(); dmm_ACV[k]->append (ctrl_str); dmm_ACV[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (DCmA)); dmm_DCmA[k]->remove_all(); dmm_DCmA[k]->append (ctrl_str); dmm_DCmA[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (ACmA)); dmm_ACmA[k]->remove_all(); dmm_ACmA[k]->append (ctrl_str); dmm_ACmA[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (DCA)); dmm_DCA[k]->remove_all(); dmm_DCA[k]->append (ctrl_str); dmm_DCA[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (ACA)); dmm_ACA[k]->remove_all(); dmm_ACA[k]->append (ctrl_str); dmm_ACA[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (Res)); dmm_Res[k]->remove_all(); dmm_Res[k]->append (ctrl_str); dmm_Res[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (Cond)); dmm_Cond[k]->remove_all(); dmm_Cond[k]->append (ctrl_str); dmm_Cond[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (pH)); dmm_pH[k]->remove_all(); dmm_pH[k]->append (ctrl_str); dmm_pH[k]->set_active_text (ctrl_str); ctrl_str = (idmm[i].get_ctrlstr (Temp)); dmm_Temp[k]->remove_all(); dmm_Temp[k]->append (ctrl_str); dmm_Temp[k]->set_active_text (ctrl_str); dmm_control_options[k]->show(); show_dmm_function_control (true, k); } else dmm_control_options[k]->hide(); } } dmm_serial_options[k]->queue_draw (); dmm_usb_options[k]->queue_draw (); show_dmm_interface_options (k); return; } //////////////////// Reset options to standard values ///////////////////// void reset_options_diag () { //set standard values std_axcol.set_rgba(0.0,0.0,0.0); std_gridcol.set_rgba(0.5,0.5,0.5); std_bkcol.set_rgba(0.95,0.95,0.94); std_xycol.set_rgba(1.0,0.0,0.0); //Colours diag->bkcol_r = std_bkcol.get_red(); diag->bkcol_g = std_bkcol.get_green(); diag->bkcol_b = std_bkcol.get_blue(); diag->axcol_r = std_axcol.get_red(); diag->axcol_g = std_axcol.get_green(); diag->axcol_b = std_axcol.get_blue(); diag->gridcol_r = std_gridcol.get_red(); diag->gridcol_g = std_gridcol.get_green(); diag->gridcol_b = std_gridcol.get_blue(); diag->xycol_r = std_xycol.get_red(); diag->xycol_g = std_xycol.get_green(); diag->xycol_b = std_xycol.get_blue(); //Switches diag->grid = true; diag->autoscale = true; diag->showzero = false; diag->showtitle = true; //Symbols diag->mw_symbol = none; diag->symbol_filled = false; //Line style diag->mw_linestyle = solid; //Connection between points diag->mw_line = true; return; } void reset_options_kanal_X () { project->funktion_x = _("Time"); dmm[0].dmm_name = ""; dmm[0].int_face = ""; dmm[0].dmm_typ = TIME; return; } void reset_options_kanal_Y () { dmm[1].dmm_name = ""; dmm[1].int_face = ""; dmm[1].dmm_typ = DMM; dmm[1].dmm_baud = LibSerial::BaudRate::BAUD_9600; dmm[1].dmm_charsize = LibSerial::CharacterSize::CHAR_SIZE_7; dmm[1].dmm_flowcontrol = LibSerial::FlowControl::FLOW_CONTROL_NONE; dmm[1].dmm_stopbits = LibSerial::StopBits::STOP_BITS_2; dmm[1].dmm_parity = LibSerial::Parity::PARITY_NONE; dmm[1].dmm_polling = true; dmm[1].scpi = false; dmm[1].usb_bytes = 0; dmm[1].num_bytes = 0; dmm[1].num_val = 1; dmm[1].ms_timeout = 100; dmm[1].m_funkt = _("DC Voltage"); dmm[1].m_range = "2 V"; diag->mtime = 1000; return; } ///////////////// Save DMM Settings //////////////////////////// void save_dmm_options(int k) { std::ofstream dmm_save_file; std::string filename; dmmoptions_save_dialog->set_action (Gtk::FILE_CHOOSER_ACTION_SAVE); dmmoptions_save_ok->set_label(_("Save")); dmmoptions_save_dialog->set_current_folder(workdir); dmmoptions_save_dialog->set_current_name(dmm_name[k]->get_active_text () + ".dmm"); if (!filefilter_dmm) { filefilter_dmm = Gtk::FileFilter::create(); filefilter_dmm->add_pattern("*.dmm"); } dmmoptions_save_dialog->set_filter(filefilter_dmm); int result = dmmoptions_save_dialog->run(); if (result == Gtk::RESPONSE_CANCEL) { dmmoptions_save_dialog->hide(); return; } filename = dmmoptions_save_dialog->get_filename(); dmm_save_file.open (filename); if (!dmm_save_file.is_open()) { fehler (_("Error writing File")); dmmoptions_save_dialog->hide(); return; } //Write data dmm_save_file <get_active_text() <<"\n"; dmm_save_file <<"dmm_baud: " << dmm_baud[k]->get_active_text() <<"\n"; dmm_save_file <<"dmm_charsize: " << dmm_bits[k]->get_active_text() <<"\n"; dmm_save_file <<"dmm_flowcontrol: " << dmm_flowcontrol[k]->get_active_text() <<"\n"; dmm_save_file <<"dmm_stopbits: " << dmm_stopbits[k]->get_active_text() <<"\n"; dmm_save_file <<"dmm_parity: " << dmm_parity[k]->get_active_text() <<"\n"; dmm_save_file <<"dmm_polling: " << dmm_polling[k]->get_state() <<"\n"; dmm_save_file <<"dmm_num_bytes: " << dmm_num_bytes[k]->get_value_as_int () <<"\n"; dmm_save_file <<"dmm_num_val: " << dmm_num_val[k]->get_value_as_int () <<"\n"; dmm_save_file <<"dmm_timeout: " << dmm_timeout[k]->get_value () <<"\n"; dmm_save_file <<"dmm_remote_control: " << dmm_remote_control[k]->get_state() <<"\n"; dmm_save_file <<"dmm_scpi: " << dmm_scpi[k]->get_state() <<"\n"; dmm_save_file <<"dmm_usb_bytes: " << dmm_usb_bytes[k]->get_value_as_int () <<"\n"; if (dmm_remote_control[k]->get_state()) { dmm_save_file << "DCV: " << dmm_DCV[k]->get_active_text () <<"\n"; dmm_save_file << "ACV: " << dmm_ACV[k]->get_active_text () <<"\n"; dmm_save_file << "DCmA: " << dmm_DCmA[k]->get_active_text () <<"\n"; dmm_save_file << "ACmA: " << dmm_ACmA[k]->get_active_text () <<"\n"; dmm_save_file << "DCA: " << dmm_DCA[k]->get_active_text () <<"\n"; dmm_save_file << "ACA: " << dmm_ACA[k]->get_active_text () <<"\n"; dmm_save_file << "Res: " << dmm_Res[k]->get_active_text () <<"\n"; dmm_save_file << "Cond: " << dmm_Cond[k]->get_active_text () <<"\n"; dmm_save_file << "pH: " << dmm_pH[k]->get_active_text () <<"\n"; dmm_save_file << "Temp: " << dmm_Temp[k]->get_active_text () <<"\n"; } } catch (const Glib::FileError & ex) { fehlercode = ex.what(); fehler (fehlercode); dmmoptions_save_dialog->hide(); return; } dmm_save_file.close(); dmmoptions_save_dialog->hide(); return; } ///////////////// Load DMM Settings //////////////////////////// void load_dmm_options(int k) { std::string filename, line, dmm_nm, ctrl_str; size_t pos,dotpos; int i; dmmoptions_save_dialog->set_action (Gtk::FILE_CHOOSER_ACTION_OPEN); dmmoptions_save_ok->set_label(_("Open")); dmmoptions_save_dialog->set_current_folder(workdir); if (!filefilter_dmm) { filefilter_dmm = Gtk::FileFilter::create(); filefilter_dmm->add_pattern("*.dmm"); } dmmoptions_save_dialog->set_filter(filefilter_dmm); int result = dmmoptions_save_dialog->run(); if (result == Gtk::RESPONSE_CANCEL) { dmmoptions_save_dialog->hide(); return; } filename = dmmoptions_save_dialog->get_filename(); dmm_open_file.open (filename); //Import data if (dmm_open_file.is_open()) { getline(dmm_open_file,line); if (line != dmm_file_id) { fehler (_("No Galvani DMM configuration file")); dmm_open_file.close(); dmmoptions_save_dialog->hide(); return; } dmm_nm = read_dmmoption("dmm_name: "); // append new dmm to list dmm_name[0]->append (dmm_nm); dmm_name[1]->append (dmm_nm); // select new dmm dmm_name[k]->set_active_text (dmm_nm); dmm_baud[k]->set_active_text (read_dmmoption("dmm_baud: ")); dmm_bits[k]->set_active_text (read_dmmoption("dmm_charsize: ")); dmm_flowcontrol[k]->set_active_text (read_dmmoption("dmm_flowcontrol: ")); dmm_stopbits[k]->set_active_text (read_dmmoption("dmm_stopbits: ")); dmm_parity[k]->set_active_text (read_dmmoption("dmm_parity: ")); dmm_polling[k]->set_state(get_boolstr(read_dmmoption("dmm_polling: "))); dmm_num_bytes[k]->set_value(get_intstr(read_dmmoption("dmm_num_bytes: "))); dmm_num_val[k]->set_value(get_intstr(read_dmmoption("dmm_num_val: "))); dmm_timeout[k]->set_value(get_intstr(read_dmmoption("dmm_timeout: "))); dmm_remote_control[k]->set_state(get_boolstr(read_dmmoption("dmm_remote_control: "))); dmm_scpi[k]->set_state(get_boolstr(read_dmmoption("dmm_scpi: "))); dmm_usb_bytes[k]->set_value(get_intstr(read_dmmoption("dmm_usb_bytes: "))); if (dmm_remote_control[k]->get_state()) { ctrl_str = read_dmmoption("DCV: "); dmm_DCV[k]->append (ctrl_str); dmm_DCV[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("ACV: "); dmm_ACV[k]->append (ctrl_str); dmm_ACV[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("DCmA: "); dmm_DCmA[k]->append (ctrl_str); dmm_DCmA[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("ACmA: "); dmm_ACmA[k]->append (ctrl_str); dmm_ACmA[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("DCA: "); dmm_DCA[k]->append (ctrl_str); dmm_DCA[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("ACA: "); dmm_ACA[k]->append (ctrl_str); dmm_ACA[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("Res: "); dmm_Res[k]->append (ctrl_str); dmm_Res[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("Cond: "); dmm_Cond[k]->append (ctrl_str); dmm_Cond[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("pH: "); dmm_pH[k]->append (ctrl_str); dmm_pH[k]->set_active_text (ctrl_str); ctrl_str = read_dmmoption("Temp: "); dmm_Temp[k]->append (ctrl_str); dmm_Temp[k]->set_active_text (ctrl_str); } dmm_serial_options[k]->queue_draw (); dmm_usb_options[k]->queue_draw (); dmm_open_file.close(); } else fehler (_("Error reading File")); dmmoptions_save_dialog->hide(); return; } std::string read_dmmoption(std::string opt_item) { std::string opt = "", line; int pos; dmm_open_file.seekg(0,std::ios::beg); while (!dmm_open_file.eof()) { getline(dmm_open_file,line); pos = line.find (opt_item); if (pos <= line.length()) { opt = line.substr (pos + opt_item.length ()); break; } } return opt; } void save_all_options () { std::ofstream conf_save_file; std::string filename; filename = confdir + "/galvani.conf"; conf_save_file.open (filename); if (!conf_save_file.is_open()) { fehler (_("Error writing File")); return; } conf_save_file <axcol_r<<"\n"; conf_save_file <<"axcol_g: " << diag->axcol_g<<"\n"; conf_save_file <<"axcol_b: " << diag->axcol_b<<"\n"; conf_save_file <<"bkcol_r: " << diag->bkcol_r<<"\n"; conf_save_file <<"bkcol_g: " << diag->bkcol_g<<"\n"; conf_save_file <<"bkcol_b: " << diag->bkcol_b<<"\n"; conf_save_file <<"gridcol_r: " << diag->gridcol_r<<"\n"; conf_save_file <<"gridcol_g: " << diag->gridcol_g<<"\n"; conf_save_file <<"gridcol_b: " << diag->gridcol_b<<"\n"; conf_save_file <<"xycol_r: " << diag->xycol_r<<"\n"; conf_save_file <<"xycol_g: " << diag->xycol_g<<"\n"; conf_save_file <<"xycol_b: " << diag->xycol_b<<"\n"; //Switches conf_save_file <<"grid: " << diag->grid<<"\n"; conf_save_file <<"autoscale: " << diag->autoscale<<"\n"; conf_save_file <<"showzero: " << diag->showzero<<"\n"; conf_save_file <<"showtitle: " << diag->showtitle<<"\n"; //Symbols conf_save_file <<"mw_symbol: " << diag->mw_symbol<<"\n"; conf_save_file <<"symbol_filled: " << diag->symbol_filled<<"\n"; conf_save_file <<"symw: " << diag->symw<<"\n"; //Line style conf_save_file <<"mw_linestyle: " << diag->mw_linestyle<<"\n"; //Connection between points conf_save_file <<"mw_line: " << diag->mw_line<<"\n"; conf_save_file <<"mw_curve: " << diag->mw_curve<<"\n"; } catch (const Glib::FileError & ex) { fehlercode = ex.what(); fehler (fehlercode); return; } //////// DMM Settings //////////// try { ///////////// Kanal X ///////////////////// conf_save_file <<"Kanal X: " << project->funktion_x<<"\n"; conf_save_file <<"dmm1_typ: " << dmm[0].dmm_typ <<"\n"; conf_save_file <<"dmm1_name: " << dmm[0].dmm_name <<"\n"; conf_save_file <<"dmm1_interface: " << dmm[0].int_face <<"\n"; conf_save_file <<"dmm1_baud: " << dmm[0].get_baud() <<"\n"; conf_save_file <<"dmm1_charsize: " << dmm[0].get_charsize() <<"\n"; conf_save_file <<"dmm1_flowcontrol: " << dmm[0].get_flowcontrol () <<"\n"; conf_save_file <<"dmm1_stopbits: " << dmm[0].get_stopbits () <<"\n"; conf_save_file <<"dmm1_parity: " << dmm[0].get_parity() <<"\n"; conf_save_file <<"dmm1_polling: " << dmm[0].dmm_polling <<"\n"; conf_save_file <<"dmm1_num_bytes: " << dmm[0].num_bytes <<"\n"; conf_save_file <<"dmm1_num_val: " << dmm[0].num_val <<"\n"; conf_save_file <<"dmm1_timeout: " << dmm[0].ms_timeout <<"\n"; conf_save_file <<"dmm1_mfunkt: " << dmm[0].m_funkt <<"\n"; conf_save_file <<"dmm1_mrange: " << dmm[0].m_range <<"\n"; conf_save_file <<"dmm1_remote_control: " << dmm[0].remote_cfg <<"\n"; conf_save_file <<"dmm1_scpi: " << dmm[0].scpi <<"\n"; conf_save_file <<"dmm1_usb_bytes: " << dmm[0].usb_bytes <<"\n"; conf_save_file << "dmm1_DCV: " << dmm[0].get_ctrlstr (DCV) <<"\n"; conf_save_file << "dmm1_ACV: " << dmm[0].get_ctrlstr (ACV) <<"\n"; conf_save_file << "dmm1_DCmA: " << dmm[0].get_ctrlstr (DCmA) <<"\n"; conf_save_file << "dmm1_ACmA: " << dmm[0].get_ctrlstr (ACmA) <<"\n"; conf_save_file << "dmm1_DCA: " << dmm[0].get_ctrlstr (DCA) <<"\n"; conf_save_file << "dmm1_ACA: " << dmm[0].get_ctrlstr (ACA) <<"\n"; conf_save_file << "dmm1_Res: " << dmm[0].get_ctrlstr (Res) <<"\n"; conf_save_file << "dmm1_Cond: " << dmm[0].get_ctrlstr (Cond) <<"\n"; conf_save_file << "dmm1_pH: " << dmm[0].get_ctrlstr (pH) <<"\n"; conf_save_file << "dmm1_Temp: " << dmm[0].get_ctrlstr (Temp) <<"\n"; ///////////// Kanal Y ///////////////////// conf_save_file <<"Kanal Y: " << project->funktion_y<<"\n"; conf_save_file <<"dmm2_typ: " << dmm[1].dmm_typ <<"\n"; conf_save_file <<"dmm2_name: " << dmm[1].dmm_name <<"\n"; conf_save_file <<"dmm2_interface: " << dmm[1].int_face <<"\n"; conf_save_file <<"dmm2_baud: " << dmm[1].get_baud() <<"\n"; conf_save_file <<"dmm2_charsize: " << dmm[1].get_charsize() <<"\n"; conf_save_file <<"dmm2_flowcontrol: " << dmm[1].get_flowcontrol () <<"\n"; conf_save_file <<"dmm2_stopbits: " << dmm[1].get_stopbits () <<"\n"; conf_save_file <<"dmm2_parity: " << dmm[1].get_parity() <<"\n"; conf_save_file <<"dmm2_polling: " << dmm[1].dmm_polling <<"\n"; conf_save_file <<"dmm2_num_bytes: " << dmm[1].num_bytes <<"\n"; conf_save_file <<"dmm2_num_val: " << dmm[1].num_val <<"\n"; conf_save_file <<"dmm2_timeout: " << dmm[1].ms_timeout <<"\n"; conf_save_file <<"dmm2_mfunkt: " << dmm[1].m_funkt <<"\n"; conf_save_file <<"dmm2_mrange: " << dmm[1].m_range <<"\n"; conf_save_file <<"dmm2_remote_control: " << dmm[1].remote_cfg <<"\n"; conf_save_file <<"dmm2_scpi: " << dmm[1].scpi <<"\n"; conf_save_file <<"dmm2_usb_bytes: " << dmm[1].usb_bytes <<"\n"; conf_save_file << "dmm2_DCV: " << dmm[1].get_ctrlstr (DCV) <<"\n"; conf_save_file << "dmm2_ACV: " << dmm[1].get_ctrlstr (ACV) <<"\n"; conf_save_file << "dmm2_DCmA: " << dmm[1].get_ctrlstr (DCmA) <<"\n"; conf_save_file << "dmm2_ACmA: " << dmm[1].get_ctrlstr (ACmA) <<"\n"; conf_save_file << "dmm2_DCA: " << dmm[1].get_ctrlstr (DCA) <<"\n"; conf_save_file << "dmm2_ACA: " << dmm[1].get_ctrlstr (ACA) <<"\n"; conf_save_file << "dmm2_Res: " << dmm[1].get_ctrlstr (Res) <<"\n"; conf_save_file << "dmm2_Cond: " << dmm[1].get_ctrlstr (Cond) <<"\n"; conf_save_file << "dmm2_pH: " << dmm[1].get_ctrlstr (pH) <<"\n"; conf_save_file << "dmm2_Temp: " << dmm[1].get_ctrlstr (Temp) <<"\n"; conf_save_file <<"Messintervall: " << diag->mtime <<"\n"; } catch (const Glib::FileError & ex) { fehlercode = ex.what(); fehler (fehlercode); return; } conf_save_file.close(); return; } void load_all_options () { std::string filename, line; std::string mw_symbol, mw_linestyle, dmm_nm; size_t pos,dotpos; filename = confdir + "/galvani.conf"; conf_open_file.open (filename); //Read settings if (conf_open_file.is_open()) { getline(conf_open_file,line); if (line != conf_file_id) { fehler (_("No Galvani Configuration File")); conf_open_file.close(); return; } //////// Graphics Settings ////////// diag->axcol_r = get_dbstr (read_option("axcol_r: ")); diag->axcol_g = get_dbstr (read_option("axcol_g: ")); diag->axcol_b = get_dbstr (read_option("axcol_b: ")); diag->bkcol_r = get_dbstr (read_option("bkcol_r: ")); diag->bkcol_g = get_dbstr (read_option("bkcol_g: ")); diag->bkcol_b = get_dbstr (read_option("bkcol_b: ")); diag->gridcol_r = get_dbstr (read_option("gridcol_r: ")); diag->gridcol_g = get_dbstr (read_option("gridcol_g: ")); diag->gridcol_b = get_dbstr (read_option("gridcol_b: ")); diag->xycol_r = get_dbstr (read_option("xycol_r: ")); diag->xycol_g = get_dbstr (read_option("xycol_g: ")); diag->xycol_b = get_dbstr (read_option("xycol_b: ")); if (read_option("grid: ") == "1") diag->grid = true; else diag->grid = false; if (read_option("autoscale: ") == "1") diag->autoscale = true; else diag->autoscale = false; if (read_option("showzero: ") == "1") diag->showzero = true; else diag->showzero = false; if (read_option("showtitle: ") == "1") diag->showtitle = true; else diag->showtitle = false; mw_symbol = read_option("mw_symbol: "); if (mw_symbol == "1") diag->mw_symbol = cross; else if (mw_symbol == "2") diag->mw_symbol = square; else if (mw_symbol == "3") diag->mw_symbol = diamond; else if (mw_symbol == "4")diag->mw_symbol = circle; else diag->mw_symbol = none; if (read_option("symbol_filled: ") == "1") diag->symbol_filled = true; else diag->symbol_filled = false; diag->symw = get_intstr (read_option("symw: ")); mw_linestyle = read_option ("mw_linestyle: "); if (mw_linestyle == "1") diag->mw_linestyle = pointed; else if (mw_linestyle == "2") diag->mw_linestyle = dashed; else diag->mw_linestyle = solid; if (read_option("mw_line: ") == "1") diag->mw_line = true; else diag->mw_line = false; if (read_option("mw_curve: ") == "1") diag->mw_curve = true; else diag->mw_curve = false; //////// DMM Settings //////////// project->funktion_x = read_option("Kanal X: "); dmm[0].dmm_typ = get_dmmtyp (read_option("dmm1_typ: ")); dmm_nm = read_option("dmm1_name: "); dmm[0].dmm_name = dmm_nm; dmm_name[0]->prepend (dmm_nm); dmm_name[0]->set_active_text (dmm_nm); dmm[0].int_face = read_option("dmm1_interface: "); dmm[0].set_baud(read_option("dmm1_baud: ")); dmm[0].set_charsize(read_option("dmm1_charsize: ")); dmm[0].set_flowcontrol (read_option("dmm1_flowcontrol: ")); dmm[0].set_stopbits (read_option("dmm1_stopbits: ")); dmm[0].set_parity (read_option("dmm1_parity: ")); dmm[0].dmm_polling = get_boolstr (read_option ("dmm1_polling: " )); dmm[0].num_bytes = get_intstr(read_option("dmm1_num_bytes: ")); dmm[0].num_val = get_intstr(read_option("dmm1_num_val: ")); dmm[0].ms_timeout = get_intstr(read_option("dmm1_timeout: ")); dmm[0].m_funkt = read_option("dmm1_mfunkt: "); dmm[0].m_range = read_option("dmm1_mrange: "); dmm[0].remote_cfg = get_boolstr (read_option ("dmm1_remote_control: " )); dmm[0].scpi = get_boolstr (read_option ("dmm1_scpi: " )); dmm[0].usb_bytes = get_intstr(read_option("dmm1_usb_bytes: ")); dmm[0].set_ctrlstr (DCV, read_option("dmm1_DCV: ")); dmm_DCV[0]->append (read_option("dmm1_DCV: ")); dmm[0].set_ctrlstr (ACV, read_option("dmm1_ACV: ")); dmm_ACV[0]->append (read_option("dmm1_ACV: ")); dmm[0].set_ctrlstr (DCmA, read_option("dmm1_DCmA: ")); dmm_DCmA[0]->append (read_option("dmm1_DCmA: ")); dmm[0].set_ctrlstr (ACmA, read_option("dmm1_ACmA: ")); dmm_ACmA[0]->append (read_option("dmm1_ACmA: ")); dmm[0].set_ctrlstr (DCA, read_option("dmm1_DCA: ")); dmm_DCA[0]->append (read_option("dmm1_DCA: ")); dmm[0].set_ctrlstr (ACA, read_option("dmm1_ACA: ")); dmm_ACA[0]->append (read_option("dmm1_ACA: ")); dmm[0].set_ctrlstr (Res, read_option("dmm1_Res: ")); dmm_Res[0]->append (read_option("dmm1_Res: ")); dmm[0].set_ctrlstr (Cond, read_option("dmm1_Cond: ")); dmm_Cond[0]->append (read_option("dmm1_Cond: ")); dmm[0].set_ctrlstr (pH, read_option("dmm1_pH: ")); dmm_pH[0]->append (read_option("dmm1_pH: ")); dmm[0].set_ctrlstr (Temp, read_option("dmm1_Temp: ")); dmm_Temp[0]->append (read_option("dmm1_Temp: ")); project->funktion_y = read_option("Kanal Y: "); dmm[1].dmm_typ = get_dmmtyp (read_option("dmm2_typ: ")); dmm_nm= read_option("dmm2_name: "); dmm[1].dmm_name = dmm_nm; dmm_name[1]->prepend (dmm_nm); dmm_name[1]->set_active_text (dmm_nm); dmm[1].int_face = read_option("dmm2_interface: "); dmm[1].set_baud(read_option("dmm2_baud: ")); dmm[1].set_charsize(read_option("dmm2_charsize: ")); dmm[1].set_flowcontrol (read_option("dmm2_flowcontrol: ")); dmm[1].set_stopbits (read_option("dmm2_stopbits: ")); dmm[1].set_parity (read_option("dmm2_parity: ")); dmm[1].dmm_polling = get_boolstr (read_option ("dmm2_polling: " )); dmm[1].num_bytes = get_intstr(read_option("dmm2_num_bytes: ")); dmm[1].num_val = get_intstr(read_option("dmm2_num_val: ")); dmm[1].ms_timeout = get_intstr(read_option("dmm2_timeout: ")); dmm[1].m_funkt = read_option("dmm2_mfunkt: "); dmm[1].m_range = read_option("dmm2_mrange: "); dmm[1].remote_cfg = get_boolstr (read_option ("dmm2_remote_control: " )); dmm[1].scpi = get_boolstr (read_option ("dmm2_scpi: " )); dmm[1].usb_bytes = get_intstr(read_option("dmm2_usb_bytes: ")); dmm[1].set_ctrlstr (DCV, read_option("dmm2_DCV: ")); dmm_DCV[1]->append (read_option("dmm2_DCV: ")); dmm[1].set_ctrlstr (ACV, read_option("dmm2_ACV: ")); dmm_ACV[1]->append (read_option("dmm2_ACV: ")); dmm[1].set_ctrlstr (DCmA, read_option("dmm2_DCmA: ")); dmm_DCmA[1]->append (read_option("dmm2_DCmA: ")); dmm[1].set_ctrlstr (ACmA, read_option("dmm2_ACmA: ")); dmm_ACmA[1]->append (read_option("dmm2_ACmA: ")); dmm[1].set_ctrlstr (DCA, read_option("dmm2_DCA: ")); dmm_DCA[1]->append (read_option("dmm2_DCA: ")); dmm[1].set_ctrlstr (ACA, read_option("dmm2_ACA: ")); dmm_ACA[1]->append (read_option("dmm2_ACA: ")); dmm[1].set_ctrlstr (Res, read_option("dmm2_Res: ")); dmm_Res[1]->append (read_option("dmm2_Res: ")); dmm[1].set_ctrlstr (Cond, read_option("dmm2_Cond: ")); dmm_Cond[1]->append (read_option("dmm2_Cond: ")); dmm[1].set_ctrlstr (pH, read_option("dmm2_pH: ")); dmm_pH[1]->append (read_option("dmm2_pH: ")); dmm[1].set_ctrlstr (Temp, read_option("dmm2_Temp: ")); dmm_Temp[1]->append (read_option("dmm2_Temp: ")); diag->mtime = get_intstr (read_option("Messintervall: ")); conf_open_file.close(); } else fehler (_("Error Reading Configuration File")); if ((!is_known_function (project->funktion_x)) || (!is_known_function (project->funktion_y))) translate_functions (); if (project->funktion_x != _("Time")) dmm[0].m_funkt = project->funktion_x; dmm[1].m_funkt = project->funktion_y; return; } std::string read_option(std::string opt_item) { std::string opt = "", line; int pos; conf_open_file.seekg(0,std::ios::beg); while (conf_open_file.peek() != EOF) { getline(conf_open_file,line); pos = line.find (opt_item); if (pos <= line.length()) { opt = line.substr (pos + opt_item.length ()); break; } } return opt; } double get_dbstr(std::string num_str) { double result; std::string dezimal, error_str; size_t dotpos; struct lconv *lc = localeconv(); lc=localeconv(); dezimal = lc->decimal_point; if (dezimal == ",") { dotpos = num_str.find ("."); if (dotpos <= num_str.length()) num_str.replace (dotpos,1,","); } try { result = stod(num_str); } catch (const std::invalid_argument& ia) { error_str = _("Conversion to double: "); error_str += num_str; fehler(error_str); result = 0.0; } catch (const std::out_of_range& oor) { error_str = _("Conversion to double: "); error_str += num_str; fehler(error_str); result = 0.0; } return result; } int get_intstr(std::string num_str) { int result; std::string error_str; try { result = stoi(num_str); } catch (const std::invalid_argument& ia) { error_str = _("Conversion to integer: "); error_str += num_str; fehler(error_str); result = 0; } catch (const std::out_of_range& oor) { error_str = _("Conversion to integer: "); error_str += num_str; fehler(error_str); result = 0; } return result; } bool get_boolstr(std::string num_str) { bool result; std::string error_str; if (num_str == "1") result = true; else if (num_str == "0") result = false; else { error_str = _("Conversion to bool: "); error_str += num_str; fehler(error_str); result = false; } return result; } std::vector get_usb_ports () { std::vector ports; std::string found; const fs::path usbdev{"/dev"}; const fs::path usb{"/dev/usb"}; int usb_pos; for (auto const& dir_entry : fs::directory_iterator{usbdev}) { try { found = dir_entry.path(); } catch (const std::exception & ex) { } usb_pos = found.find ("usb"); if ((usb_pos < found.size()) && (!fs::is_directory(dir_entry))) ports.push_back (dir_entry.path()); } try { if (fs::exists(usb)) { for (auto const& dir_entry : fs::directory_iterator{usb}) { ports.push_back (dir_entry.path()); } } } catch (fs::filesystem_error const& ex) { } return ports; } ////////////// Set Device Options ////////////////// void set_device_options_lutron_ph207 () { dmm[1].set_baud ("9600"); dmm[1].set_charsize ("7"); dmm[1].set_stopbits ("2"); dmm[1].dmm_polling = false; dmm[1].num_bytes = 16; // min m_time: 2 Sec dmm[1].ms_timeout = 2000; project->funktion_y = "pH"; return; } galvani-v0.38/src/eval.cxx0000644000175000017500000006635414713174213015404 0ustar burkardburkard// eval.cxx // This file is part of galvani. // Copyright (C) 2020-2024 Burkard Lutz // // 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, see . #include #include #include #include #include "eval.h" using namespace std; void show_diag () { init_diag (); if (mw.size() != 0) { diag->add_events (Gdk::POINTER_MOTION_MASK | Gdk::BUTTON1_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); diag->signal_realize (); display_x->show (); display_y->show (); diag->queue_draw (); } else fehler (_("No data")); return; } void eval_data () { Gdk::RGBA color; std::string option; int opt_page; m_record xval, yval; if (mw.size() == 0) { fehler (_("No data")); return; } diag->add_events (Gdk::POINTER_MOTION_MASK | Gdk::BUTTON1_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); diag->signal_realize (); evaloptions->set_current_page (0); color.set_rgba(diag->funktcol_r, diag->funktcol_g, diag->funktcol_b); diag_funktcolor->set_rgba(color); if (project->funktion_x != _("Time")) evaloption_vol->set_sensitive (false); else evaloption_vol->set_sensitive (true); evaloption_vol->set_state(eval_titvolumen); evaloption_xreziproksw->set_state(eval_xreziprok); evaloption_yreziproksw->set_state(eval_yreziprok); evaloption_xlogsw->set_state(eval_xlog); evaloption_ylogsw->set_state(eval_ylog); if (project->funktion_x != _("DC Voltage")) evaloption_xtherm->set_sensitive (false); else evaloption_xtherm->set_sensitive (true); if (eval_xtherm == CuNi) evaloption_xtherm->set_active_text("Cu/CuNi"); else if (eval_xtherm == NiCr) evaloption_xtherm->set_active_text("Ni/NiCr"); else evaloption_xtherm->set_active_text("none"); if (project->funktion_y != _("DC Voltage")) evaloption_ytherm->set_sensitive (false); else evaloption_ytherm->set_sensitive (true); if (eval_ytherm == CuNi) evaloption_ytherm->set_active_text("Cu/CuNi"); else if (eval_ytherm == NiCr) evaloption_ytherm->set_active_text("Ni/NiCr"); else evaloption_ytherm->set_active_text(_("none")); evaloption_volspeed->set_value (60.0 * tit_volspeed); // ml/sec -> ml/min evaloption_reglin->set_state(eval_reglin); evaloption_diff->set_state(eval_diff); evaloption_integration->set_state(eval_integration); evaloption_minpeakscale->set_value(min_peakscale); evaloption_mindiffscale->set_value(min_diffscale); evaloption_show_baseline->set_state(diag->show_baseline); evaloption_show_peakarea->set_state(diag->show_peakarea); evaloption_show_peaklimits->set_state(diag->show_peaklimits); show_evaloptions_integration (1); ///////////////////////////////////////// evaloptions_dialog-> show (); ////////////////////// Accept options /////////////////////// int result = evaloptions_dialog->run(); switch(result) { case(Gtk::RESPONSE_ACCEPT): { color = diag_funktcolor->get_rgba(); diag->funktcol_r = color.get_red(); diag->funktcol_g = color.get_green(); diag->funktcol_b = color.get_blue(); eval_titvolumen = evaloption_vol->get_state(); eval_xreziprok = evaloption_xreziproksw->get_state(); check_xreziprok (); eval_yreziprok = evaloption_yreziproksw->get_state(); check_yreziprok (); eval_xlog = evaloption_xlogsw->get_state(); check_xlog (); eval_ylog = evaloption_ylogsw->get_state(); check_ylog (); option = evaloption_xtherm->get_active_text(); if (option == "Cu/CuNi") eval_xtherm = CuNi; else if (option == "Ni/NiCr") eval_xtherm = NiCr; else eval_xtherm = no; option = evaloption_ytherm->get_active_text(); if (option == "Cu/CuNi") eval_ytherm = CuNi; else if (option == "Ni/NiCr") eval_ytherm = NiCr; else eval_ytherm = no; tit_volspeed = evaloption_volspeed->get_value () / 60.0; // ml/min -> ml/sec if ((tit_volspeed == 0) || (project->funktion_x != _("Time"))) eval_titvolumen = false; eval_reglin = evaloption_reglin->get_state(); eval_diff = evaloption_diff->get_state(); eval_integration = evaloption_integration->get_state(); diag->show_baseline = evaloption_show_baseline->get_state(); diag->show_peakarea = evaloption_show_peakarea->get_state(); diag->show_peaklimits = evaloption_show_peaklimits->get_state(); min_peakscale = evaloption_minpeakscale->get_value (); min_diffscale = evaloption_mindiffscale->get_value (); break; } case(Gtk::RESPONSE_CANCEL): { break; } case(Gtk::RESPONSE_DELETE_EVENT): //Reset { if (!dialog_ok (_("Reset options of current page?"))) break; opt_page = evaloptions->get_current_page (); switch (opt_page) { case 0: // Reset Transformation { eval_titvolumen = false; eval_xreziprok = false; eval_yreziprok = false; eval_xlog = false; eval_ylog = false; eval_xtherm = no; eval_ytherm = no; tit_volspeed = 0.0; } case 1: // Reset functions { diag->funktcol_r = 0.0; diag->funktcol_g = 0.0; diag->funktcol_b = 1.0; eval_reglin = false; eval_integration = false; diag->show_baseline = true; diag->show_peakarea = true; diag->show_peaklimits = true; eval_diff = false; min_peakscale = 0.1; min_diffscale = 5.0; } } break; } } evaloptions_dialog->hide(); if (eval_reglin) lin_regression (); if (eval_integration) peak_integration (); if (eval_diff) diff_funktion (); show_diag(); if ((eval_reglin) || (eval_integration) || (eval_diff)) show_evalresults (); display_x->show (); display_y->show (); return; } void show_evaloptions_integration (int page) { bool int_opt; int_opt = evaloption_integration->get_state (); if (int_opt) integration_options->show(); else integration_options->hide(); return; } void check_xlog () { mw_data val; std::string error_str; for (unsigned long long int i=0; iunit_x == "min") data.x = 60.0 * data.x; if (project->unit_x == "h") data.x = 3600.0 * data.x; data.x = data.x * tit_volspeed; } if (eval_xtherm == CuNi) { if (project->unit_x == "V") data.x = 1000.0 * data.x; if (project->unit_x == "uV") data.x = 0.001 * data.x; data.x = trafo_cuni (data.x); } if (eval_ytherm == CuNi) { if (project->unit_y == "V") data.y = 1000.0 * data.y; if (project->unit_y == "uV") data.y = 0.001 * data.y; data.y = trafo_cuni (data.y); } if (eval_xtherm == NiCr) { if (project->unit_x == "V") data.x = 1000.0 * data.x; if (project->unit_x == "uV") data.x = 0.001 * data.x; data.x = trafo_nicr (data.x); } if (eval_ytherm == NiCr) { if (project->unit_y == "V") data.y = 1000 * data.y; if (project->unit_y == "uV") data.y = 0.001 * data.y; data.y = trafo_nicr (data.y); } if ((eval_xreziprok) && (data.x != 0)) data.x = 1/data.x; if ((eval_yreziprok) && (data.y != 0)) data.y = 1/data.y; if ((eval_xlog) && (data.x > 0)) data.x = log10(data.x); if ((eval_ylog) && (data.y > 0)) data.y = log10(data.y); return data; } void reset_evaloptions () { if ((project->funktion_y != "pH")) { eval_titvolumen = false; tit_volspeed = 0.0; } eval_xreziprok = false; eval_yreziprok = false; eval_xlog = false; eval_ylog = false; eval_reglin = false; eval_integration = false; eval_diff = false; eval_xtherm = no; eval_ytherm = no; diag->coord_saved = false; min_peakscale = 0.1; return; } std::string eval_funkt (int kanal, std::string funkt) { if (kanal == 0) { if (eval_titvolumen) funkt = _("Volume"); else if (eval_xtherm != no) funkt = _("Temperature"); if (eval_xreziprok) { if (funkt == _("Resistance")) funkt = _("Conductivity"); else if (funkt == _("Conductivity")) funkt = _("Resistance"); else funkt.insert (0, "1/ "); } if (eval_xlog) funkt.insert (0, "log "); } else { if (eval_ytherm != no) funkt = _("Temperature"); if (eval_yreziprok) { if (funkt == _("Resistance")) funkt = _("Conductivity"); else if (funkt == _("Conductivity")) funkt = _("Resistance"); else funkt.insert (0, "1/ "); } if (eval_ylog) funkt.insert (0, "log "); } return funkt; } std::string eval_unit (int kanal, std::string unit) { if (kanal == 0) { if (eval_titvolumen) unit = "ml"; else if (eval_xtherm != no) unit = "°C"; if (eval_xreziprok) { if (unit == "Ohm") unit = "S"; else if (unit == "S") unit = "Ohm"; else unit.insert (0, "1/ "); } if (eval_xlog) unit.insert (0, "log "); } else { if (eval_ytherm != no) unit = "°C"; if (eval_yreziprok) { if (unit == "Ohm") unit = "S"; else if (unit == "S") unit = "Ohm"; else unit.insert (0, "1/ "); } if (eval_ylog) unit.insert (0, "log "); } return unit; } void lin_regression () //linear regression of all measurement values { double mw_x, mw_y, sxx, sxy; unsigned long long int n; double x,y; mw_data data; if (mw.size() == 0) { fehler (_("Regression cannot be computed - no data available")); eval_reglin = false; return; } mw_x = mw_y = sxx = sxy = 0; n = 0; for (unsigned long long int i=0; i &p) //linear regression of data in array { double mw_x, mw_y, sxx, sxy; int np; double x,y; polyreg_data coeff; np = p.size(); mw_x = mw_y = sxx = sxy = 0; for (int i=0; i &p) { double sx1,sx2,sy,sy1,sy2,syy,s11,s12,s22; int np; polyreg_data coeff; sx1=sx2=sy=sy1=sy2=syy=s11=s12=s22=0.0; np = p.size(); for (int i=0; i &p) { double s,sx1,sx2,sx3,sy,sy1,sy2,sy3,syy,s11,s12,s13,s22,s23,s33; double a11,a12,a13,a22,a23,a33; int np; polyreg_data coeff; sx1=sx2=sx3=sy=sy1=sy2=sy3=syy=s11=s12=s13=s22=s23=s33=0.0; np = p.size(); for (int i=0; i p, q; //arrays for data values mw_data pxy; polyreg_data coeff, init_slope, end_slope; p.clear(); //fill array with first 5 values for (int i=0; i<5; i++) { pxy = trafo(mw.at(i)); p.push_back (pxy); } init_slope = reg_lin (p); //fill array with last 5 values for (int i=mi-5; i p; //array for data values std::vector m_av; //array for averages slope int np; //number of elements in p - must be odd int mp; //center of data array peaks.clear(); min_peakheight = min_peakscale / 100 * diag->yscale; np = 3; //set size of p mp = trunc (np / 2); //calculate center of p for (unsigned long long int i=np-1;i0) && (m_av.at(mp).y >=0) && (m_av.at(mp+1).y <0)) // peak-maximum found at center with peak slope > 0 { peak.mpos = i; //position of peak maximum in mw array peak.max.x = - diag->xrange*reg_lin (m_av).a0 / reg_lin (m_av).a1; //maximum corrected by linear regression of slopes gauss = peakreg_gauss (peak.mpos); // calculate gauss model of peak if (gauss.mpos == i) // regression with gauss model succeeded { peak.max.y = diag->yrange*gauss.max.y; } else // regression with gauss model failed { peak.max.y = diag->yrange*val.y; } peak = get_peakarea (peak); // add baseline value at val.x to min_peakheight if (val.y > (min_peakheight + (yb_a1 * val.x + yb_a0))) // if < min_peakheight -> forget peak { peaks.push_back (peak); } if (i p; //array for data values std::vector m_av; //array for averages slope int np; //number of elements in p - must be odd int mp; //center of data array peak.area = 0; np = 3; //set size of p mp = trunc (np / 2); //calculate center of p i = peak.mpos -1; // start left to peak maximum in mw_array peak.xb1 = 0; // set minimum value if i=np) //seek beginning of peak { m_av.clear(); val = trafo(mw.at(i)); yb = yb_a1 * val.x + yb_a0; for (int j=0; j= 0) && (m_av.at(mp+1).y > 0))) break; else i--; } i = peak.mpos +1; // start right to peak maximum in mw_array while (i= 0) && (m_av.at(mp+1).y > 0))) break; else i++; } //calculate peak area for (int k=peak.xb1; kyrange; } return peak; } peak_data peakreg_gauss (unsigned long long int max) { polyreg_data pc; //coefficients of polynom regression (maxima) peak_data peak; mw_data pxy; std::vector p; //array for data values int np, mp; np = 5; //set size of p p.clear(); mp = trunc (np / 2); //calculate center of p for (unsigned long long int k=max-mp;k<=max+mp;k++) //fill array with neighbours of max () { pxy = trafo (mw.at(k)); if (pxy.y >0) pxy.y = log (pxy.y); //logarithmic transformation else { peak.mpos = -1; //error: to few data -> cannot calculate regression return peak; } p.push_back(pxy); } pc = poly2_reg (p); //calculating gauss parameter for maximum by polynom regression peak.max.x = - (pc.a1 / (2*pc.a2)); //gauss parameter m is the corrected x-value of maximum peak.max.y = exp (pc.a0 - pow(pc.a1,2) / (4*pc.a2)); //gauss parameter P is the corrected y-value of maximum return peak; // error bei peaktest max = 23! } mw_data mv_av (std::vector &p) //calculate moving average { int np; //size of p int mp; //center of p mw_data av; //average of values in p av.y = 0.0; np = p.size(); mp = trunc (np/2); for (int k=0; k &p) //calculate triangular average { int np; //size of p int mp; //center of p mw_data av; //average of values in p int fi; //coefficient of i-th element int sfi; //sum of coefficients av.y = 0.0; np = p.size(); mp = trunc (np/2); fi = 0; sfi = 0; for (int k=0; k p; //array for calculating differential data values std::vector av; //array for triangular data averages std::vector dp; //array of differential values for searching for maxima int np; //number of elements in p - must be odd int mp; //center of p polyreg_data pc; //coefficients of polynom regression (maxima) ndiff = 0; diff_min = diff_max = 0.0; min_diffheight = min_diffscale / 100; //minimum peak height in derivative diff.clear(); dp.clear(); np = 5; //set size of p, must be at least =5 mp = trunc (np / 2); //calculate center of p for (unsigned long long int i=mp;ixrange*(av.at(mp+1).x - av.at(mp-1).x); //calculate derivatives dy = diag->yrange*(av.at(mp+1).y - av.at(mp-1).y); if (dx !=0) { dxy = dy/dx; if (dxy < diff_min) diff_min = dxy; if (dxy > diff_max) diff_max = dxy; pxy.x = diag->xrange*av.at(mp).x; pxy.y = dxy; if (dp.size() >= np) dp.erase(dp.begin()); dp.push_back (pxy); if (dp.size() >= np) //begin searching for maxima when dp has np elements { if ((dp.front().y < dp.at(1).y) && (dp.at(mp-1).y < dp.at(mp).y) && (dp.at(mp).y > dp.at(mp+1).y) && (dp.at(mp+1).y > dp.back().y)) // maximum found at center { diff_val.max = dp.at(mp); for (int k=0; k0 ! } pc = poly2_reg (dp); //calculating gauss parameter for maximum by polynom regression diff_val.P = exp (pc.a0 - pow(pc.a1,2) / (4*pc.a2)); diff_val.b = sqrt(abs(-1/(2*pc.a2))); //argument > 0! diff_val.m = - (pc.a1 / (2*pc.a2)); diff_val.max.x = diff_val.m; //gauss parameter m is the corrected x-value of maximum diff_val.max.y = diff_val.P; //gauss parameter P is the corrected y-value of maximum diff_val.xm = i; //position of maximum in mw_array diff.push_back (diff_val); //save parameters of max in array ndiff++; } } } } //find maximal value in differential function diff_maxval = 0; for (int k=0; k diff_maxval) diff_maxval = diff.at(k).max.y; } //eliminate noise from maxima found int k=0; while (k eval_layout; tabs = Pango::TabArray (3, true); tabs.set_tab (0, Pango::TAB_LEFT, 70); tabs.set_tab (1, Pango::TAB_LEFT, 140); tabs.set_tab (2, Pango::TAB_LEFT, 240); tabs.set_tab (3, Pango::TAB_LEFT, 320); if (eval_reglin) { eval_funktion->set_text (_("Linear Regression")); project->evalresults = _("Slope: ") + to_string(mw_slope) + "\n" + _("Intercept: ") + to_string(mw_axis) + "\n"; eval_result_items = Gtk::TextBuffer::create(); eval_result_items->set_text (project->evalresults); eval_results_view->set_buffer(eval_result_items); } else if (eval_diff) { eval_funktion->set_text (_("Differential Function")); if (ndiff == 0) project->evalresults = _("No Maxima found"); else { project->evalresults = _("Maxima:"); project->evalresults += "\n\n"; for (int i=0; ievalresults += " " + num_str (diff.at(i).max.x, 4) +"\n"; } eval_result_items = Gtk::TextBuffer::create(); eval_result_items->set_text (project->evalresults); eval_results_view->set_buffer(eval_result_items); } if (eval_integration) { eval_funktion->set_text (_("Peak-Integration")); if (peaks.size() == 0) project->evalresults = _("No Peaks found"); else { project->evalresults = _("Number"); project->evalresults += " \t"; project->evalresults += " "; project->evalresults +=_("Peak Maximum"); project->evalresults +=" \t"; project->evalresults +=_("Peak Area"); project->evalresults += " \t"; project->evalresults +=_("Percent"); project->evalresults += " \n\n"; for (int i=0; ievalresults += " " + to_string(i+1) + "\t" + num_str (peaks[i].max.x, 4) + "\t" + num_str (peaks[i].max.y, 4) + "\t" + num_str (peaks[i].area, 4) + "\t" + num_str (peaks[i].percent, 2) + "\n"; } eval_result_items = Gtk::TextBuffer::create(); eval_result_items->set_text (project->evalresults); eval_results_view->set_buffer(eval_result_items); eval_results_view->set_tabs (tabs); } eval_results_view->set_top_margin (20); eval_results_view->set_left_margin (20); eval_results_view->set_right_margin (20); eval_results_view->set_bottom_margin (30); eval_layout = eval_results_view->create_pango_layout(project->evalresults); eval_layout->get_pixel_size(text_width, text_height); win_width = text_width + 100; win_height = text_height + 100; if (win_width < min_width) win_width = min_width; if (win_height < min_height) win_height = min_height; eval_results->resize (win_width,win_height); eval_results->show (); int result = eval_results->run(); if (result == Gtk::RESPONSE_CLOSE) eval_results->hide(); return; } std::string num_str (double x, int n) { std::string str; double xn; int pos; xn = x * pow (10,n); xn = round (xn) / pow (10,n); str = to_string (xn); pos = str.find(','); //localconv ?! str.resize(pos + n+1); return str; } galvani-v0.38/src/spline.h0000644000175000017500000005726614713174213015376 0ustar burkardburkard/* * spline.h * * simple cubic spline interpolation library without external * dependencies * * --------------------------------------------------------------------- * Copyright (C) 2011, 2014, 2016, 2021 Tino Kluge (ttk448 at gmail.com) * * 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, see . * --------------------------------------------------------------------- * Modified for galvani * Copyright (C) 2020-2024 Burkard Lutz */ #ifndef TK_SPLINE_H #define TK_SPLINE_H #include #include #include #include #include "typedef.h" #ifdef HAVE_SSTREAM #include #include #endif // HAVE_SSTREAM // not ideal but disable unused-function warnings // (we get them because we have implementations in the header file, // and this is because we want to be able to quickly separate them // into a cpp file if necessary) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-function" // unnamed namespace only because the implementation is in this // header file and we don't want to export symbols to the obj files namespace { namespace tk { // spline interpolation class spline { public: // spline types enum spline_type { cspline = 30, // cubic splines (classical C^2) cspline_hermite = 31 // cubic hermite splines (local, only C^1) }; // boundary condition type for the spline end-points enum bd_type { first_deriv = 1, second_deriv = 2 }; protected: std::vector m_xy; // x,y coordinates of points // interpolation parameters // f(x) = a_i + b_i*(x-x_i) + c_i*(x-x_i)^2 + d_i*(x-x_i)^3 // where a_i = y_i, or else it won't go through grid points std::vector m_b,m_c,m_d; // spline coefficients double m_c0; // for left extrapolation spline_type m_type; bd_type m_left, m_right; double m_left_value, m_right_value; bool m_made_monotonic; void set_coeffs_from_b(); // calculate c_i, d_i from b_i size_t find_closest(double x) const; // closest idx so that m_x[idx]<=x public: // default constructor: set boundary condition to be zero curvature // at both ends, i.e. natural splines spline(): m_type(cspline), m_left(second_deriv), m_right(second_deriv), m_left_value(0.0), m_right_value(0.0), m_made_monotonic(false) { ; } spline(const std::vector& XY, spline_type type = cspline, bool make_monotonic = false, bd_type left = second_deriv, double left_value = 0.0, bd_type right = second_deriv, double right_value = 0.0 ): m_type(type), m_left(left), m_right(right), m_left_value(left_value), m_right_value(right_value), m_made_monotonic(false) // false correct here: make_monotonic() sets it { this->set_points(XY,m_type); if(make_monotonic) { this->make_monotonic(); } } // set all data points (cubic_spline=false means linear interpolation) int set_points(const std::vector& xy, spline_type type=cspline); // adjust coefficients so that the spline becomes piecewise monotonic // where possible // this is done by adjusting slopes at grid points by a non-negative // factor and this will break C^2 // this can also break boundary conditions if adjustments need to // be made at the boundary points // returns false if no adjustments have been made, true otherwise bool make_monotonic(); // evaluates the spline at point x double operator() (double x) const; double deriv(int order, double x) const; // solves for all x so that: spline(x) = y std::vector solve(double y, bool ignore_extrapolation=true) const; // returns the input data points std::vector get_xy() const { return m_xy; } }; namespace internal { // band matrix solver class band_matrix { private: std::vector< std::vector > m_upper; // upper band std::vector< std::vector > m_lower; // lower band public: band_matrix() {}; // constructor band_matrix(int dim, int n_u, int n_l); // constructor ~band_matrix() {}; // destructor void resize(int dim, int n_u, int n_l); // init with dim,n_u,n_l int dim() const; // matrix dimension int num_upper() const { return (int)m_upper.size()-1; } int num_lower() const { return (int)m_lower.size()-1; } // access operator double & operator () (int i, int j); // write double operator () (int i, int j) const; // read // we can store an additional diagonal (in m_lower) double& saved_diag(int i); double saved_diag(int i) const; void lu_decompose(); std::vector r_solve(const std::vector& b) const; std::vector l_solve(const std::vector& b) const; std::vector lu_solve(const std::vector& b, bool is_lu_decomposed=false); }; double get_eps(); std::vector solve_cubic(double a, double b, double c, double d, int newton_iter=0); } // namespace internal // --------------------------------------------------------------------- // implementation part, which could be separated into a cpp file // --------------------------------------------------------------------- // spline implementation // ----------------------- void spline::set_coeffs_from_b() { if ((m_xy.size()!=m_b.size()) || (m_xy.size()<3)) { return; } size_t n=m_b.size(); if(m_c.size()!=n) m_c.resize(n); if(m_d.size()!=n) m_d.resize(n); for(size_t i=0; i& xy, spline_type type) { if(xy.size()<3) { return -1; } m_type=type; m_made_monotonic=false; m_xy=xy; int n = (int) xy.size(); // check strict monotonicity of input vector x for(int i=0; i= m_xy[i+1].x) { break; return -1; } } // type==cspline_hermite) // hermite cubic splines which are C^1 (cont. differentiable) // and derivatives are specified on each grid point // (here we use 3-point finite differences) m_b.resize(n); m_c.resize(n); m_d.resize(n); // set b to match 1st order derivative finite difference for(int i=1; i b_i>=0 // input data monotonic decreasing --> b_i<=0 for(int i=0; i=m_xy[i].y) && (m_xy[i].y>=m_xy[ip1].y) && m_b[i]>0.0) ) { modified=true; m_b[i]=0.0; } } // if input data is monotonic (b[i], b[i+1], avg have all the same sign) // ensure a sufficient criteria for monotonicity is satisfied: // sqrt(b[i]^2+b[i+1]^2) <= 3 |avg|, with avg=(y[i+1]-y[i])/h, for(int i=0; i=0.0 && m_b[i+1]>=0.0 && avg>0.0) || (m_b[i]<=0.0 && m_b[i+1]<=0.0 && avg<0.0) ) { // input data is monotonic double r = sqrt(m_b[i]*m_b[i]+m_b[i+1]*m_b[i+1])/std::fabs(avg); if(r>3.0) { // sufficient criteria for monotonicity: r<=3 // adjust b[i] and b[i+1] modified=true; m_b[i] *= (3.0/r); m_b[i+1] *= (3.0/r); } } } if(modified==true) { set_coeffs_from_b(); m_made_monotonic=true; } return modified; } // return the closest idx so that m_x[idx] <= x (return 0 if x x) break; if (idx > 0) idx--; return idx; } double spline::operator() (double x) const { // polynomial evaluation using Horner's scheme size_t n=m_xy.size(); size_t idx=find_closest(x); double h=x-m_xy[idx].x; double interpol; if(xm_xy[n-1].x) { // extrapolation to the right interpol=(m_c[n-1]*h + m_b[n-1])*h + m_xy[n-1].y; } else { // interpolation interpol=((m_d[idx]*h + m_c[idx])*h + m_b[idx])*h + m_xy[idx].y; } return interpol; } double spline::deriv(int order, double x) const { if (order <= 0) { return -1; } size_t n=m_xy.size(); size_t idx = find_closest(x); double h=x-m_xy[idx].x; double interpol; if(xm_xy[n-1].x) { // extrapolation to the right switch(order) { case 1: interpol=2.0*m_c[n-1]*h + m_b[n-1]; break; case 2: interpol=2.0*m_c[n-1]; break; default: interpol=0.0; break; } } else { // interpolation switch(order) { case 1: interpol=(3.0*m_d[idx]*h + 2.0*m_c[idx])*h + m_b[idx]; break; case 2: interpol=6.0*m_d[idx]*h + 2.0*m_c[idx]; break; case 3: interpol=6.0*m_d[idx]; break; default: interpol=0.0; break; } } return interpol; } std::vector spline::solve(double y, bool ignore_extrapolation) const { std::vector x; // roots for the entire spline std::vector root; // roots for each piecewise cubic const size_t n=m_xy.size(); // left extrapolation if(ignore_extrapolation==false) { root = internal::solve_cubic(m_xy[0].y-y,m_b[0],m_c0,0.0,1); for(size_t j=0; j0) ? (m_xy[i].x-m_xy[i-1].x) : 0.0; double eps = internal::get_eps()*512.0*std::min(h,1.0); if( (-eps<=root[j]) && (root[j]0 && x.back()+eps > new_root) { x.back()=new_root; // avoid spurious duplicate roots } else { x.push_back(new_root); } } } } // right extrapolation if(ignore_extrapolation==false) { root = internal::solve_cubic(m_xy[n-1].y-y,m_b[n-1],m_c[n-1],0.0,1); for(size_t j=0; j0) { return m_upper[0].size(); } else { return 0; } } // defines the new operator (), so that we can access the elements // by A(i,j), index going from i=0,...,dim()-1 double & band_matrix::operator () (int i, int j) { int k=j-i; // what band is the entry if ((i<0) || (i>=dim()) || (j<0) || (j>=dim())) return m_upper[k][i]; if ((-num_lower() > k) || (k > num_upper())) return m_upper[k][i]; // k=0 -> diagonal, k<0 lower left part, k>0 upper right part if(k>=0) return m_upper[k][i]; else return m_lower[-k][i]; } double band_matrix::operator () (int i, int j) const { int k=j-i; // what band is the entry if ((i<0) || (i>=dim()) || (j<0) || (j>=dim())) return -1; if ((-num_lower() > k) || (k > num_upper())) return -1; // k=0 -> diagonal, k<0 lower left part, k>0 upper right part if(k>=0) return m_upper[k][i]; else return m_lower[-k][i]; } // second diag (used in LU decomposition), saved in m_lower double band_matrix::saved_diag(int i) const { if ((i < 0) || (i >= dim())) return -1; return m_lower[0][i]; } double & band_matrix::saved_diag(int i) { //if ((i < 0) || (i >= dim())) return -1.0; return m_lower[0][i]; } // LR-Decomposition of a band matrix void band_matrix::lu_decompose() { int i_max,j_max; int j_min; double x; // preconditioning // normalize column i so that a_ii=1 for(int i=0; idim(); i++) { if (this->operator()(i,i) == 0.0) return; this->saved_diag(i)=1.0/this->operator()(i,i); j_min=std::max(0,i-this->num_lower()); j_max=std::min(this->dim()-1,i+this->num_upper()); for(int j=j_min; j<=j_max; j++) { this->operator()(i,j) *= this->saved_diag(i); } this->operator()(i,i)=1.0; // prevents rounding errors } // Gauss LR-Decomposition for(int k=0; kdim(); k++) { i_max=std::min(this->dim()-1,k+this->num_lower()); // num_lower not a mistake! for(int i=k+1; i<=i_max; i++) { if (this->operator()(k,k) == 0.0) return; x=-this->operator()(i,k)/this->operator()(k,k); this->operator()(i,k)=-x; // assembly part of L j_max=std::min(this->dim()-1,k+this->num_upper()); for(int j=k+1; j<=j_max; j++) { // assembly part of R this->operator()(i,j)=this->operator()(i,j)+x*this->operator()(k,j); } } } } // solves Ly=b std::vector band_matrix::l_solve(const std::vector& b) const { std::vector x(this->dim()); if (this->dim() != (int)b.size()) return x; int j_start; double sum; for(int i=0; idim(); i++) { sum=0; j_start=std::max(0,i-this->num_lower()); for(int j=j_start; joperator()(i,j)*x[j]; x[i]=(b[i]*this->saved_diag(i)) - sum; } return x; } // solves Rx=y std::vector band_matrix::r_solve(const std::vector& b) const { std::vector x(this->dim()); if (this->dim() != (int)b.size()) return x; int j_stop; double sum; for(int i=this->dim()-1; i>=0; i--) { sum=0; j_stop=std::min(this->dim()-1,i+this->num_upper()); for(int j=i+1; j<=j_stop; j++) sum += this->operator()(i,j)*x[j]; x[i]=( b[i] - sum ) / this->operator()(i,i); } return x; } std::vector band_matrix::lu_solve(const std::vector& b, bool is_lu_decomposed) { std::vector x,y; if (this->dim() != (int)b.size()) return x; if(is_lu_decomposed==false) { this->lu_decompose(); } y=this->l_solve(b); x=this->r_solve(y); return x; } // machine precision of a double, i.e. the successor of 1 is 1+eps double get_eps() { //return std::numeric_limits::epsilon(); // __DBL_EPSILON__ return 2.2204460492503131e-16; // 2^-52 } // solutions for a + b*x = 0 std::vector solve_linear(double a, double b) { std::vector x; // roots if(b==0.0) { if(a==0.0) { // 0*x = 0 x.resize(1); x[0] = 0.0; // any x solves it but we need to pick one return x; } else { // 0*x + ... = 0, no solution return x; } } else { x.resize(1); x[0] = -a/b; return x; } } // solutions for a + b*x + c*x^2 = 0 std::vector solve_quadratic(double a, double b, double c, int newton_iter=0) { if(c==0.0) { return solve_linear(a,b); } // rescale so that we solve x^2 + 2p x + q = (x+p)^2 + q - p^2 = 0 double p=0.5*b/c; double q=a/c; double discr = p*p-q; const double eps=0.5*internal::get_eps(); double discr_err = (6.0*(p*p)+3.0*fabs(q)+fabs(discr))*eps; std::vector x; // roots if(fabs(discr)<=discr_err) { // discriminant is zero --> one root x.resize(1); x[0] = -p; } else if(discr<0) { // no root } else { // two roots x.resize(2); x[0] = -p - sqrt(discr); x[1] = -p + sqrt(discr); } // improve solution via newton steps for(size_t i=0; i1e-8) { x[i] -= f/f1; } } } return x; } // solutions for the cubic equation: a + b*x +c*x^2 + d*x^3 = 0 // this is a naive implementation of the analytic solution without // optimisation for speed or numerical accuracy // newton_iter: number of newton iterations to improve analytical solution // see also // gsl: gsl_poly_solve_cubic() in solve_cubic.c // octave: roots.m - via eigenvalues of the Frobenius companion matrix std::vector solve_cubic(double a, double b, double c, double d, int newton_iter) { if(d==0.0) { return solve_quadratic(a,b,c,newton_iter); } // convert to normalised form: a + bx + cx^2 + x^3 = 0 if(d!=1.0) { a/=d; b/=d; c/=d; } // convert to depressed cubic: z^3 - 3pz - 2q = 0 // via substitution: z = x + c/3 std::vector z; // roots of the depressed cubic double p = -(1.0/3.0)*b + (1.0/9.0)*(c*c); double r = 2.0*(c*c)-9.0*b; double q = -0.5*a - (1.0/54.0)*(c*r); double discr=p*p*p-q*q; // discriminant // calculating numerical round-off errors with assumptions: // - each operation is precise but each intermediate result x // when stored has max error of x*eps // - only multiplication with a power of 2 introduces no new error // - a,b,c,d and some fractions (e.g. 1/3) have rounding errors eps // - p_err << |p|, q_err << |q|, ... (this is violated in rare cases) // would be more elegant to use boost::numeric::interval const double eps = internal::get_eps(); double p_err = eps*((3.0/3.0)*fabs(b)+(4.0/9.0)*(c*c)+fabs(p)); double r_err = eps*(6.0*(c*c)+18.0*fabs(b)+fabs(r)); double q_err = 0.5*fabs(a)*eps + (1.0/54.0)*fabs(c)*(r_err+fabs(r)*3.0*eps) + fabs(q)*eps; double discr_err = (p*p) * (3.0*p_err + fabs(p)*2.0*eps) + fabs(q) * (2.0*q_err + fabs(q)*eps) + fabs(discr)*eps; // depending on the discriminant we get different solutions if(fabs(discr)<=discr_err) { // discriminant zero: one or two real roots if(fabs(p)<=p_err) { // p and q are zero: single root z.resize(1); z[0] = 0.0; // triple root } else { z.resize(2); z[0] = 2.0*q/p; // single root z[1] = -0.5*z[0]; // double root } } else if(discr>0) { // three real roots: via trigonometric solution z.resize(3); double ac = (1.0/3.0) * acos( q/(p*sqrt(p)) ); double sq = 2.0*sqrt(p); z[0] = sq * cos(ac); z[1] = sq * cos(ac-2.0*M_PI/3.0); z[2] = sq * cos(ac-4.0*M_PI/3.0); } else if (discr<0.0) { // single real root: via Cardano's fromula z.resize(1); double sgnq = (q >= 0 ? 1 : -1); double basis = fabs(q) + sqrt(-discr); double C = sgnq * pow(basis, 1.0/3.0); // c++11 has std::cbrt() z[0] = C + p/C; } for(size_t i=0; i1e-8) { z[i] -= f/f1; } } } // ensure if a=0 we get exactly x=0 as root // TODO: remove this fudge if(a==0.0) { if (z.size() >= 0) return z; // cubic should always have at least one root double xmin=fabs(z[0]); size_t imin=0; for(size_t i=1; ifabs(z[i])) { xmin=fabs(z[i]); imin=i; } } z[imin]=0.0; // replace the smallest absolute value with 0 } std::sort(z.begin(), z.end()); return z; } } // namespace internal } // namespace tk } // namespace #pragma GCC diagnostic pop #endif /* TK_SPLINE_H */ galvani-v0.38/src/mess.cxx0000644000175000017500000017121214713174213015412 0ustar burkardburkard// mess.cxx // // This file is part of galvani. // // Copyright (C) 2020-2024 Burkard Lutz // // 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, see . #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "spline.h" #include "mess.h" using namespace std; //////////////// Multimeter ///////////////////////// Multimeter::Multimeter () // DMM with standard values { dmm_name = ""; int_face = ""; dmm_typ = DMM; dmm_baud = LibSerial::BaudRate::BAUD_9600; dmm_charsize = LibSerial::CharacterSize::CHAR_SIZE_7; dmm_flowcontrol = LibSerial::FlowControl::FLOW_CONTROL_NONE; dmm_stopbits = LibSerial::StopBits::STOP_BITS_2; dmm_parity = LibSerial::Parity::PARITY_NONE; dmm_polling = true; scpi = false; usb = false; usb_bytes = 0; num_bytes = 0; num_val = 1; ms_timeout = 1000; m_funkt = _("DC Voltage"); m_range = "2 V"; remote_cfg = false; remote_ctrl_strings [0] = {DCV, ""}; remote_ctrl_strings [1] = {ACV, ""}; remote_ctrl_strings [2] = {DCmA, ""}; remote_ctrl_strings [3] = {ACmA, ""}; remote_ctrl_strings [4] = {DCA, ""}; remote_ctrl_strings [5] = {ACA, ""}; remote_ctrl_strings [6] = {Res, ""}; remote_ctrl_strings [7] = {Cond, ""}; remote_ctrl_strings [8] = {pH, ""}; remote_ctrl_strings [9] = {Temp, ""}; } Multimeter::~Multimeter () { } void Multimeter::set_ctrlstr (mfkt funktion, std::string ctrl) { for (int i=0; i<=9; i++) { if (remote_ctrl_strings[i].fkt == funktion) { remote_ctrl_strings[i].ctrl = ctrl; break; } } return; } std::string Multimeter::get_ctrlstr (mfkt funktion) { std::string ctrl; for (int i=0; i<=9; i++) { if (remote_ctrl_strings[i].fkt == funktion) { ctrl = remote_ctrl_strings[i].ctrl; break; } } return ctrl; } int Multimeter::random_nr (int min, int max) { int rand_nr; rand_nr = rand() % max + min; return rand_nr; } bool Multimeter::connect_usb (std::string port) { int flags; usb_port = open(port.c_str(), O_RDWR); if (usb_port == -1) { return false; } else { flags = fcntl(usb_port, F_GETFL, 0); fcntl(usb_port, F_SETFL, flags | O_NONBLOCK); return true; } } void Multimeter::connect_dmm (std::string int_face) { int usb_port, tty; std::string mstr="", error_str; std::string mwert=""; if ((dmm_typ != DMM) && (dmm_typ != DEVICE)) //simulation { srand (time(NULL)); if (auto_slope) m = 0.1 * random_nr (1, 10); // set standard slope 1 if (auto_shift) rf = 0.03; // set standard deviation 3% of slope if (auto_rt) max_rt = 180; // set maximum retention time for peaks if (auto_bf) bf = 0.005; // set peak width factor if (auto_expshift) exp_rf = 0.01; if (auto_init) a = 0.1 * random_nr (1, 10); if (auto_tc) k = 0.01 * random_nr (1, 10); if (auto_np) n = random_nr(3, 20); for (int i=0;i int_face.size())) usb = true; else usb = false; if (usb) connected = connect_usb (int_face); else //RS232C { try { dmm_port.Open (int_face); } catch (const std::exception& err) { return; } if (!dmm_port.IsOpen()) { return; } //Baudrate dmm_port.SetBaudRate (dmm_baud); //Zeichenbreite dmm_port.SetCharacterSize (dmm_charsize); //FlowControl dmm_port.SetFlowControl (dmm_flowcontrol); //Stopbits dmm_port.SetStopBits (dmm_stopbits); //Parity dmm_port.SetParity(dmm_parity) ; //DTR dmm_port.SetDTR (true); //RTS dmm_port.SetRTS (false); if (dmm_flowcontrol == LibSerial::FlowControl::FLOW_CONTROL_SOFTWARE) //only for Impo DMI4 ? { writeto_dmm ("V"); //say hello try { dmm_port.Read(mwert, num_bytes, ms_timeout); //read answer from dmm } catch (const LibSerial::ReadTimeout&) { if (mwert.size() == 0) return; } } connected = true; } } return; } void Multimeter::disconnect_dmm () { if ((dmm_typ == DMM) || (dmm_typ == DEVICE)) { if (usb) close(usb_port); else { try { dmm_port.Close (); } catch (...) { return; } } } connected = false; return; } void Multimeter::writeto_dmm (std::string wstr) { const char* cstr; wstr.append ("\r"); //append CR cstr = wstr.c_str(); if (usb) { int result = write(usb_port, cstr, strlen(cstr)); // if result == -1 write failed } else dmm_port.Write(wstr); //RS232C return; } std::string Multimeter::readfrom_dmm () { std::string mwert, extra_str; // Data transmitted bei device. extra_str is omitted. std::string error_str; char buffer[1024]; // buffer to read from usb std::string poll; // Polling character if (scpi) { dmm_polling = true; poll = "MEAS?"; } else poll = "D"; if (usb) { if (dmm_polling) writeto_dmm (poll); int result = read(usb_port, buffer, 1024); if (result == -1) { error_str = _("Device unreachable: ") + dmm_name; fehler(error_str); connected = false; close(usb_port); return (""); } if (result < usb_bytes) // transmission error? -> repeat reading { if (dmm_polling) writeto_dmm (poll); result = read(usb_port, buffer, 1024); if (result < usb_bytes) { error_str = _("Transmission error from ") + dmm_name; fehler(error_str); connected = false; close(usb_port); return (""); } } buffer[result] = '\0'; mwert.assign(buffer, result); } else //RS232C { if (!dmm_port.IsOpen()) { error_str = _("Device unreachable: ") + dmm_name; fehler(error_str); connected = false; return (""); } dmm_port.DrainWriteBuffer(); if (dmm_polling) writeto_dmm (poll); try { dmm_port.Read(mwert, num_bytes, ms_timeout); if (num_val > 1) for (int i=1; i <= num_val; i++) dmm_port.Read(extra_str, num_bytes, ms_timeout); } catch (const LibSerial::ReadTimeout&) {} if ((mwert.size() < 4) && (dmm_name != "Impo DMI4")) // device unreachable or device error -> retry // Impo DMI4 sends several strings of different length { dmm_port.DrainWriteBuffer(); usleep (100000); //wait 100 msec if (dmm_polling) writeto_dmm (poll); try { dmm_port.Read(mwert, num_bytes, ms_timeout); if (num_val > 1) for (int i=1; i <= num_val; i++) dmm_port.Read(extra_str, num_bytes, ms_timeout); } catch (const LibSerial::ReadTimeout&) {} } } return mwert; } void Multimeter::setup (std::string funkt, std::string range) { char prefix; std::string ctrl, error_str; if (range.length () > 0) prefix = range.at(range.length() - 1); // get range-prefix if (funkt == _("DC Voltage")) ctrl = get_ctrlstr (DCV); else if (funkt == _("AC Voltage")) ctrl = get_ctrlstr (ACV); else if (funkt == _("DC Current")) { if (prefix == ' ') ctrl = get_ctrlstr (DCA); else ctrl = get_ctrlstr (DCmA); } else if (funkt == _("AC Current")) { if (prefix == ' ') ctrl = get_ctrlstr (ACA); else ctrl = get_ctrlstr (ACmA); } else if (funkt == _("Resistance")) ctrl = get_ctrlstr (Res); else if (funkt == _("Conductivity")) ctrl = get_ctrlstr (Cond); else if (funkt == _("pH")) ctrl = get_ctrlstr (pH); else if (funkt == _("Temperature")) ctrl = get_ctrlstr (Temp); else { error_str = _("Funktion not set: ") + funkt; fehler(error_str); } writeto_dmm (ctrl); return; } double Multimeter::sim_linear (double x) { double result, r, sign; srand (time(NULL)); sign = random_nr (1,2); if (sign == 2) sign = -1; result = m * x; r = sign * 0.2 * random_nr (3,10) * rf * m; //effective shift in percent result = result + r; return result; } double Multimeter::sim_exp (double x) { double result, r, sign; srand (time(NULL)); sign = random_nr (1,2); if (sign == 2) sign = -1; result = a * exp (-k * x); r = sign * 0.1 * random_nr (1,10) * exp_rf * result; //effective shift in percent result = result + r; return result; } double Multimeter::sim_ph (double x) { double result; mw_data val; int i=0; while (i x) break; i++; } result = val.y; return result; } void Multimeter::set_tit_data (int npks) // calculate titration curve according to // R. de Levie: "General expressions for acid-base titrations of arbitrary mixtures", // Washington, 1995 (Technical report #7, Chemistry Department, Georgetown) { double fa, ch, coh, vb, ph; const double kw = 1.0e-14; mw_data val; double ks[3]; ph = 0.0; tit_data.clear (); while (ph < 14.0) { ch = pow(10,-ph); coh = kw / ch; for (int i=0; i sec val.y = ph; tit_data.push_back(val); ph += 0.01; } return; } double Multimeter::sim_peak (double x) { double result; result = 0; // Gauss-Funktion for (int i=0;idecimal_point; for (i=0; i 44) && (mwert.at(i) < 58)) // number, minus or decimal point (+ /) { digit_start = i; break; } } if (i == mwert.size()) // No data -> OL mw=0?! { fehler (_("Device Error")); messw.digits = 0.0; return messw; } for (i=digit_start; i 58)) // number, minus or decimal point { digit_end = i; break; } } if (mwert.at(digit_start -1) == '-') digit_start--; //negative value? mwert_funkt = mwert.substr(0, digit_start); mwert_unit = mwert.substr(digit_end, mwert.size()); mwert_digits = mwert.substr(digit_start, digit_end - digit_start); if (dezimal == ",") { dotpos = mwert_digits.find ("."); if (dotpos <= mwert_digits.length()) mwert_digits.replace (dotpos,1,","); } messw.digits = get_dbstr(mwert_digits); /////// Messfunktion finden ////////////// if ((mwert_funkt.find ("DC") <= mwert_funkt.length()) && (mwert_unit.find ("V") <= mwert_unit.length())) mwert_funkt = _("DC Voltage"); else if ((mwert_funkt.find ("AC") <= mwert_funkt.length()) && (mwert_unit.find ("V") <= mwert_unit.length())) mwert_funkt = _("AC Voltage"); else if ((mwert_funkt.find ("DC") <= mwert_funkt.length()) && (mwert_unit.find ("A") <= mwert_unit.length())) mwert_funkt = _("DC Current"); else if ((mwert_funkt.find ("AC") <= mwert_funkt.length()) && (mwert_unit.find ("A") <= mwert_unit.length())) mwert_funkt = _("AC Current"); else if (mwert_unit.find ("C") <= mwert_unit.length()) mwert_funkt = _("Temperature"); else if (mwert_unit.find ("O") <= mwert_unit.length()) mwert_funkt = _("Resistance"); else if (mwert_unit.find ("o") <= mwert_unit.length()) mwert_funkt = _("Resistance"); else if (mwert_unit.find ("pH") <= mwert_unit.length()) mwert_funkt = _("pH"); else if (mwert_unit.find ("S") <= mwert_unit.length()) mwert_funkt = _("Conductivity"); else { mwert_funkt = "?"; fehler (_("unknown function")); } messw.funktion = mwert_funkt; ///// Einheit finden ///////// if (mwert_unit.find ("mV") <= mwert_unit.length()) mwert_unit = "mV"; else if (mwert_unit.find ("uV") <= mwert_unit.length()) mwert_unit = "uV"; else if (mwert_unit.find ("nV") <= mwert_unit.length()) mwert_unit = "nV"; else if (mwert_unit.find ("kV") <= mwert_unit.length()) mwert_unit = "kV"; else if (mwert_unit.find ("V") <= mwert_unit.length()) mwert_unit = "V"; else if (mwert_unit.find ("mA") <= mwert_unit.length()) mwert_unit = "mA"; else if (mwert_unit.find ("uA") <= mwert_unit.length()) mwert_unit = "uA"; else if (mwert_unit.find ("nA") <= mwert_unit.length()) mwert_unit = "nA"; else if (mwert_unit.find ("A") <= mwert_unit.length()) mwert_unit = "A"; else if (mwert_unit.find ("C") <= mwert_unit.length()) mwert_unit = "°C"; else if (mwert_unit.find ("kO") <= mwert_unit.length()) mwert_unit = "kOhm"; else if (mwert_unit.find ("ko") <= mwert_unit.length()) mwert_unit = "kOhm"; else if (mwert_unit.find ("MO") <= mwert_unit.length()) mwert_unit = "MOhm"; else if (mwert_unit.find ("Mo") <= mwert_unit.length()) mwert_unit = "MOhm"; else if (mwert_unit.find ("O") <= mwert_unit.length()) mwert_unit = "Ohm"; else if (mwert_unit.find ("o") <= mwert_unit.length()) mwert_unit = "Ohm"; else if (mwert_unit.find ("pH") <= mwert_unit.length()) mwert_unit = "pH"; else if (mwert_unit.find ("mS") <= mwert_unit.length()) mwert_unit = "mS/cm"; else if (mwert_unit.find ("uS") <= mwert_unit.length()) mwert_unit = "uS/cm"; else if (mwert_unit.find ("S") <= mwert_unit.length()) mwert_unit = "S/cm"; else { mwert_unit = "?"; fehler (_("unknown unit")); } messw.unit = mwert_unit; return messw; } m_record Multimeter::get_mwert_scpi (std::string mwert) // dmm with scpi { m_record messw; std::string error_str; messw.digits = get_dbstr(mwert); messw.funktion = get_scpi_funkt(); if (messw.funktion.find("?") <= messw.funktion.size()) // unknown function? ->retry { messw.funktion = get_scpi_funkt(); if (messw.funktion.find("?") <= messw.funktion.size()) { messw.funktion.erase(messw.funktion.find("?"),1); // still unknown? -> return message from dmm error_str = _("unknown function"); error_str += ": "; error_str += messw.funktion; fehler (error_str); } } messw.unit = set_std_unit (messw.funktion); // set standard unit return messw; } std::string Multimeter::get_scpi_funkt() { std::string funkt, msg; writeto_dmm ("FUNC?"); usleep (100); //wait for device to become ready msg = readfrom_dmm (); while (msg.find('"') <= msg.size()) // delete extra characters { msg.erase (msg.find('"'),1); } msg.erase (msg.find("\n"),1); if (msg == "VOLT") funkt = _("DC Voltage"); else if (msg == "VOLT AC") funkt = _("AC Voltage"); else if (msg == "CURR") funkt = _("DC Current"); else if (msg == "CURR AC") funkt = _("AC Current"); else if (msg == "RES") funkt = _("Resistance"); else if (msg == "TEMP") funkt = _("Temperature"); else if (msg == "PH") funkt = _("pH"); else { funkt = "?"; funkt += msg; } return funkt; } m_record Multimeter::get_mwert_impo_dmi4 (std::string mwert) // Impo DMI4 { m_record messw; std::string mval1, mval2, mval3, mval4; char prefix; int i, start; i=0; start = 0; mval1 = mval2 = mval3 = mval4 = ""; // received data-string consists of 3 or 4 values //split mwert while (i<=mwert.length()) { if (mwert.at(i) == 44) break; // "," else i++; } mval1 = mwert.substr(start, i); // Temperature start = ++i; while (i<=mwert.length()) { if (mwert.at(i) == 44) break; else i++; } mval2 = mwert.substr(start, i-start); // pH start = ++i; while (i omitted if (mwert.length() > i) { start = ++i; mval4 = mwert.substr(start); // other function } if (m_funkt == _("Temperature")) { messw.digits = get_dbstr (mval1); messw.funktion = m_funkt; messw.unit = "°C"; } else if (m_funkt == _("pH")) { messw.digits = get_dbstr (mval2); messw.funktion = m_funkt; messw.unit = "pH"; } else { messw.digits = get_dbstr (mval4); messw.funktion = m_funkt; if ((m_funkt == _("DC Voltage")) || (m_funkt == _("AC Voltage"))) messw.unit = "V"; else if ((m_funkt == _("DC Current")) || (m_funkt == _("AC Current"))) messw.unit = "A"; /*{ prefix = m_range.at(m_range.length() - 1); // get range-prefix if (prefix == ' ') messw.unit = "A"; else messw.unit = "mA"; }*/ else if (m_funkt == _("Resistance")) messw.unit = "Ohm"; else if (m_funkt == _("Conductivity")) messw.unit = "S"; } return messw; } m_record Multimeter::read_mm () // converts strings from dmm to records { m_record messw; // result of measurement std::string mwert; std::string error_str; mwert = ""; mwert = readfrom_dmm (); if ((mwert.size() < 4) && (dmm_name != "Impo DMI4")) // device unreachable or device error -> retry // Impo DMI4 sends several strings of different length { error_str = _("Transmission error: ") + dmm_name + " " + _("Measurement aborted"); fehler(error_str); messw.digits = 0.0; messw.funktion = "?"; messw.unit = "?"; stop_mess (); if (connected) disconnect_dmm(); return messw; } if (dmm_name == "Impo DMI4") messw = get_mwert_impo_dmi4 (mwert); else if (scpi) messw = get_mwert_scpi (mwert); else messw = get_mwert_dmm (mwert); return messw; } m_record Multimeter::read_dmm () { m_record messw; std::string dialog; messw.funktion = m_funkt; messw.unit = set_std_unit (messw.funktion); //? switch (dmm_typ) { case LINEAR: messw.digits = sim_linear(mt); break; case EXP: messw.digits = sim_exp(mt); break; case PH: messw.digits = sim_ph(mt); messw.funktion = "pH"; break; case PEAK: messw.digits = sim_peak(mt); break; case DEVICE: messw = read_device(); break; default: messw = read_mm(); } if ((messw.funktion != m_funkt) && (messw.funktion != "?") && (messw.funktion != "")) { dialog = _("Multimeter function"); dialog += " ("; dialog += messw.funktion; dialog += ") "; dialog += _("differs from Project function"); dialog += " ("; dialog += m_funkt; dialog += ") "; dialog +=_("- continue measurement?"); if (!dialog_ok (dialog)) { stop_mess (); end_mess (); } } //delete unit prefix and multiply value with appropiate faktor if ((messw.funktion != "pH") && (messw.funktion != "?")) messw = get_std_unit (messw); return messw; } m_record Multimeter::read_lutron_ph207 () { m_record messw; std::string mwert, mstr, error_str, val_str; int dim; char chr; if (!dmm_port.IsOpen()) { error_str = _("Device unreachable: ") + dmm_name; fehler(error_str); messw.digits = 0.0; return (messw); } messw.funktion = "pH"; messw.unit = "pH"; mwert = ""; dmm_port.FlushInputBuffer(); // forget all data in input buffer while (mwert.length () < 16) { mstr = ""; try { dmm_port.Read(mstr, num_bytes, ms_timeout); } catch (const LibSerial::ReadTimeout&) { //fehler (_("Device Error")); } if (mstr.length() == 0) { error_str = _("Device unreachable: ") + dmm_name; fehler(error_str); messw.digits = 0.0; disconnect_dmm (); return messw; } // drop character < '0' and > '?' (ReadError) for (int i=1; i < mstr.length(); i++) { chr = mstr.at(i); if (( chr < 48 ) || (chr > 63)) mstr.erase (i,1); } mwert += mstr; } dim = get_intstr (mwert.substr(6,1)); val_str = mwert.substr(11,4); messw.digits = get_dbstr(val_str) / pow (10, dim); return messw; } m_record Multimeter::read_device () { m_record messw; if (dmm[1].dmm_name == "Lutron PH-207") messw = read_lutron_ph207 (); return messw; } m_record Multimeter::get_std_unit (m_record messw) //delete unit prefix and multiply value with appropiate faktor { double faktor; char16_t dim; if (messw.unit.size() > 1) { dim = messw.unit.at(0); switch(dim) { case 'p': faktor = 1.0e-12; messw.unit.erase(0,1); break; case 'n': faktor = 1.0e-9; messw.unit.erase(0,1); break; case 'u': faktor = 1.0e-6; messw.unit.erase(0,1); break; case 'm': faktor = 1.0e-3; messw.unit.erase(0,1); break; case 'k': faktor = 1.0e+3; messw.unit.erase(0,1); break; case 'M': faktor = 1.0e+6; messw.unit.erase(0,1); break; case 'G': faktor = 1.0e+9; messw.unit.erase(0,1); break; default: faktor = 1.0; } messw.digits = faktor * messw.digits; } return messw; } //////////////// Diagramm /////////////////////////// Diagramm::Diagramm(GtkDrawingArea* cobject, const Glib::RefPtr &builder) : Gtk::DrawingArea(cobject) { this->signal_draw().connect(sigc::mem_fun(this, &Diagramm::on_draw)); } Diagramm::Diagramm() { this->signal_draw().connect(sigc::mem_fun(this, &Diagramm::on_draw)); } Diagramm::~Diagramm() { } void Diagramm::draw_background (const Cairo::RefPtr &ct) { //Background ct->save(); ct->set_source_rgb(bkcol_r, bkcol_g, bkcol_b); ct->paint(); ct->stroke(); ct->restore(); } void Diagramm::draw_coord (const Cairo::RefPtr &ct) { string st, xystr; int pos, dec; int text_width, text_height; //Draw Axes ct->save(); ct->set_source_rgb(axcol_r, axcol_g, axcol_b); ct->set_line_width(ps*scalefactor); ct->move_to(pxmin, pymax); ct->line_to(pxmin, pymin); ct->line_to(pxmax, pymin); font.set_size(pf*scalefactor*10*Pango::SCALE); diag_layout->set_font_description(font); //Axis marks dx = dxax*xscale; //Scale axis dy = dyax*yscale; dec = 2; if (xscale < 10) dec = 3; if (xscale < 1) dec = 4; if (xscale < 0.1) dec = 5; if (xscale < 0.01) dec = 6; n=1; do { x_n = xmin + n*ax_dx*dx; axp = round((x_n - xmin)/xscale*(pxmax-pxmin))+pxmin; ct->move_to(axp, pymin); ct->line_to(axp,pymin+20); xystr = to_string(x_n); pos=xystr.find(','); xystr.resize(pos+dec); diag_layout->set_text(xystr); diag_layout->get_pixel_size(text_width, text_height); diag_layout->update_from_cairo_context (ct); ct->move_to(axp - text_width/2, pymin + margin/3 - text_height/2); diag_layout->show_in_cairo_context(ct); n++; } while(axppymax) { y_n = ymin + n*ax_dy*dy; axp = pymin-round((y_n - ymin)/yscale*(pymin-pymax)); ct->move_to(pxmin,axp); ct->line_to(pxmin-20,axp); xystr = to_string(y_n); pos=xystr.find(','); xystr.resize(pos+dec); diag_layout->set_text(xystr); diag_layout->get_pixel_size(text_width, text_height); diag_layout->update_from_cairo_context (ct); ct->move_to(pxmin - text_width - 0.2*margin, axp - text_height/2); diag_layout->show_in_cairo_context(ct); n++; } //Axis labeling and diagram title if (showtitle) { st = project->title; font.set_size(pf*scalefactor*14*Pango::SCALE); diag_layout->set_font_description(font); diag_layout->set_text(st); diag_layout->get_pixel_size(text_width, text_height); diag_layout->update_from_cairo_context (ct); ct->move_to(width/2 - text_width/2, pymax - margin/2 - text_height/2); diag_layout->show_in_cairo_context(ct); } st = unit_y; pos = st.find("u"); if (pos <= st.length()) st.replace(pos,1,"µ"); st = funktion_y + " [" + st +"]"; font.set_size(pf*scalefactor*10*Pango::SCALE); diag_layout->set_font_description(font); diag_layout->set_text(st); diag_layout->get_pixel_size(text_width, text_height); diag_layout->update_from_cairo_context (ct); ct->move_to(pxmin-margin+10,pymax-2*text_height); diag_layout->show_in_cairo_context(ct); st = unit_x; pos = st.find("u"); if (pos <= st.length()) st.replace(pos,1,"µ"); st = funktion_x + " [" + st +"]"; diag_layout->set_text(st); diag_layout->get_pixel_size(text_width, text_height); diag_layout->update_from_cairo_context (ct); ct->move_to(pxmax-text_width,pymin + 0.60*margin - text_height/2); diag_layout->show_in_cairo_context(ct); ct->stroke(); ct->restore(); //show grid if (grid) { ct->save(); ct->set_source_rgb(gridcol_r, gridcol_g, gridcol_b); ct->set_line_width(ps*0.5*scalefactor); n=1; do { x_n = xmin + n*grid_dx*dx; axp = round((x_n - xmin)/xscale*(pxmax-pxmin))+pxmin; ct->move_to(axp, pymin); ct->line_to(axp,pymax); n++; } while(axppymax) { y_n = ymin + n*grid_dy*dy; axp = pymin-round((y_n - ymin)/yscale*(pymin-pymax)); ct->move_to(pxmin,axp); ct->line_to(pxmax,axp); n++; } ct->stroke(); ct->restore(); } } void Diagramm::find_xy_minmax () //find minima and maxima of values { mw_data val; val = trafo (mw.at(0)); xminval = xmaxval = val.x; yminval = ymaxval = val.y; for (unsigned long long int i=1; i xmaxval) xmaxval = val.x; if (val.y < yminval) yminval = val.y; else if (val.y > ymaxval) ymaxval = val.y; } xabsmax = abs(xmaxval); // get absolute maximum yabsmax = abs(ymaxval); if (abs(xminval) > xabsmax) xabsmax = abs(xminval); if (abs(yminval) > yabsmax) yabsmax = abs(yminval); return; } double Diagramm::get_scale_element (double scale) // calculate axis scale element { double dxy, exp; dxy=scale/10.0; exp = round(log10(dxy)); dxy /= pow(10,exp); if (dxy<=0.1) dxy= 0.1; else if (dxy<=0.2) dxy= 0.2; else if (dxy<=0.5) dxy= 0.5; else if (dxy<=1.0) dxy= 1.0; else if (dxy<=2.0) dxy= 2.0; else if (dxy<=5.0) dxy= 5.0; else if (dxy<=10.0) dxy= 10.0; dxy *= pow(10,exp); return dxy; } void Diagramm::set_coord_limits () //set limits for coordinate system { double dx,dy,exp; // X xmin = xrange * xminval; xmax = xrange * xmaxval; if (xmin == xmax) { xmax += 1.0; xmin -= 1.0; } xscale = xmax - xmin; // Y ymin = yrange * yminval; ymax = yrange * ymaxval; if (ymin == ymax) { ymax += 1.0; ymin -= 1.0; } yscale = ymax - ymin; dy = get_scale_element (yscale); ymin = floor(ymin/dy)*dy; ymax = ymin + 10.0 * dy; yscale = ymax - ymin; if (ymax < yrange*ymaxval) { ymax += dy; yscale = ymax - ymin; dy = get_scale_element (yscale); ymin = floor(ymin/dy)*dy; ymax = ymin + 10.0 * dy; yscale = ymax - ymin; } if (funktion_y == "pH") { ymin = 0.0; ymax = 14.0; yscale = 14.0; } dx=get_scale_element (xscale); xscale = 10.0 * dx; xmin = floor(xmin/dx)*dx; xmax = xmin + xscale; if (xmax < xrange*xmaxval) { xmax += dx; xscale = xmax - xmin; dx = get_scale_element (xscale); xmin = floor(xmin/dx)*dx; xmax = xmin + 10.0 * dx; xscale = xmax - xmin; } return; } int Diagramm::scale_x (double x) { int px; px = (x - xmin)/xscale*(pxmax-pxmin) + pxmin; return px; } int Diagramm::scale_y (double y) { int py; py = pymin - (y - ymin)/yscale*(pymin-pymax); return py; } double Diagramm::get_xcoord (double xp) { double x; x = (scalefactor*xp - pxmin) / (pxmax - pxmin) * xscale + xmin; return x; } double Diagramm::get_ycoord (double yp) { double y; y = ymin - (scalefactor*yp - pymin) / (pymin - pymax) * yscale; return y; } void Diagramm::draw_cross (const Cairo::RefPtr &ct, int symwidth) { ct->rel_move_to(0, symwidth); ct->rel_line_to (0, -2*symwidth); ct->rel_move_to(-symwidth, symwidth); ct->rel_line_to (2*symwidth, 0); return; } void Diagramm::draw_square (const Cairo::RefPtr &ct, int symwidth, bool filled) { ct->rel_move_to(-symwidth, symwidth); ct->rel_line_to (0, -2*symwidth); ct->rel_line_to (2*symwidth, 0); ct->rel_line_to (0, 2*symwidth); ct->rel_line_to (-2*symwidth, 0); ct->close_path (); if (filled) ct->fill_preserve (); return; } void Diagramm::draw_diamond (const Cairo::RefPtr &ct, int symwidth, bool filled) { ct->rel_move_to(0, symwidth); ct->rel_line_to (-symwidth, -symwidth); ct->rel_line_to (symwidth, -symwidth); ct->rel_line_to (symwidth, symwidth); ct->rel_line_to (-symwidth, symwidth); ct->close_path (); if (filled) ct->fill_preserve (); return; } void Diagramm::draw_circle (int x, int y, int symwidth, bool filled, const Cairo::RefPtr &ct) { ct->begin_new_sub_path(); ct->arc(x,y,symwidth,0,2*M_PI); if (filled) ct->fill_preserve (); return; } void Diagramm::draw_symbol (int x, int y, symbol symb, int symwidth, bool filled, const Cairo::RefPtr &ct) { ct->move_to (x,y); switch(symb) { case cross: draw_cross(ct, symwidth); break; case square: draw_square(ct, symwidth, filled); break; case diamond: draw_diamond(ct, symwidth, filled); break; case circle: draw_circle(x,y, symwidth, filled, ct); break; } return; } void Diagramm::draw_xysymbol (const Cairo::RefPtr &ct) { int px,py; mw_data val; ct->save(); ct->set_source_rgb(xycol_r, xycol_g, xycol_b); ct->set_line_width(ps*0.5*scalefactor); for (unsigned long long int i=0; i= pymax) && (px >= pxmin) && (px <= pxmax)) draw_symbol(px,py, mw_symbol, symw, symbol_filled, ct); } ct->stroke(); ct->restore(); return; } void Diagramm::draw_xyline (const Cairo::RefPtr &ct) { int px,py; mw_data val; std::vector pattern_pointed = {1,2}; std::vector pattern_dashed = {4,4,4}; ct->save(); // don't draw across border! ct->rectangle(margin,margin,width - 2*margin, height - 2*margin); ct->clip(); ct->set_source_rgb(xycol_r, xycol_g, xycol_b); ct->set_line_width(ps*scalefactor); if (mw_linestyle == pointed) ct->set_dash(pattern_pointed,0.0); else if (mw_linestyle == dashed) ct->set_dash(pattern_dashed,0.0); val = trafo (mw.at(0)); px = scale_x(xrange*val.x); py = scale_y(yrange*val.y); ct->move_to(px,py); for (unsigned long long int i=1; iline_to(px,py); } ct->stroke(); ct->restore(); return; } bool sort_mwx (mw_data i, mw_data j) {return (i.x < j.x);} void Diagramm::draw_xycurve (const Cairo::RefPtr &ct) { tk::spline::spline_type type = tk::spline::cspline_hermite; tk::spline s; int n=1000; //number of points to plot the spline std::vector seg; //segment of measured values (mw) std::vector t_mw; //vector holds transformed values int np=100; //max. number of values in segment int nps; //number of values in actual segment unsigned long long int id,si=0; //start position of segment in mw-array mw_data val; int px,py; std::vector pattern_pointed = {1,2}; std::vector pattern_dashed = {4,4,4}; std::string error_str; ct->save(); // don't draw across border! ct->rectangle(margin,margin,width - 2*margin, height - 2*margin); ct->clip(); ct->set_source_rgb(xycol_r, xycol_g, xycol_b); ct->set_line_width(ps*scalefactor); if (mw_linestyle == pointed) ct->set_dash(pattern_pointed,0.0); else if (mw_linestyle == dashed) ct->set_dash(pattern_dashed,0.0); try { t_mw = mw; } catch (...) { error_str = _("Not enough space to calculate splines"); fehler(error_str); return; } //transform values if selected for (unsigned long long i=0; imove_to(px,py); if (mi < 4) //splines cannot be calculated -> draw lines { for (int i=1; iline_to(px,py); } } else { while (si < mi) { seg.clear (); //split data values in segments to calculate splines for (int i=0; i draw lines { for (int k=0; kline_to(px,py); } si += nps; //last segment } else { // calculate spline coefficients if (s.set_points(seg,type) != 0) { error_str = _("Error calculating splines"); fehler (error_str); return; } s.make_monotonic(); // adjusts spline coefficients to be monotonic for(int i=1; iline_to(px,py); } si += nps-1; // begin next segment at last point of actual segment } } } ct->stroke(); ct->restore(); return; } void Diagramm::draw_lin_regression(const Cairo::RefPtr &ct) { double y; int px,py; ct->save(); // don't draw across border! ct->rectangle(margin,margin,width - 2*margin, height - 2*margin); ct->clip(); ct->set_source_rgb(funktcol_r, funktcol_g, funktcol_b); ct->set_line_width(ps*scalefactor); y = mw_axis + mw_slope * xmin/xrange; px = pxmin; py = scale_y(yrange*y); ct->move_to(px,py); y = mw_axis + mw_slope * xmax/xrange; px = pxmax; py = scale_y(yrange*y); ct->line_to (px,py); ct->stroke(); ct->restore(); return; } void Diagramm::draw_diff_funktion (const Cairo::RefPtr &ct) { int px,py; int text_width, text_height; mw_data val, val_1, val_2; double dx,dy,dxy; mw_data pxy; std::vector p; //array for calculating moving average of n values std::vector av; //array for triangular data averages int np; //size of dp int mp; //center of p ct->save(); // don't draw across border! ct->rectangle(margin,margin,width - 2*margin, height - 2*margin); ct->clip(); ct->set_source_rgb(funktcol_r, funktcol_g, funktcol_b); ct->set_line_width(ps*0.5*scalefactor); val = val_1 = trafo(mw.at(0)); //Differential 1. value val_2 = trafo(mw.at(1)); px = scale_x(xrange*val.x); dy = yrange*(val_2.y - val_1.y) / xrange*(val_2.x - val_1.x); py = pymin - (dy - diff_min)/(diff_max - diff_min)*0.8*(pymin-pymax); ct->move_to(px,py); np = 5; //set size of p mp = trunc (np / 2); //calculate center of p for (unsigned long long int i=mp;imove_to(px,py); for (int i=0;i<1000;i++) { pxy.x += dx; pxy.y = 0; for (int k=0;kline_to(px,py); } } //label curve ct->reset_clip(); font.set_size(pf*scalefactor*10*Pango::SCALE); diag_layout->set_font_description(font); if (ndiff != 0) diag_layout->set_text(_("Derivative with Gauss model")); else diag_layout->set_text(_("Derivative")); diag_layout->get_pixel_size(text_width, text_height); diag_layout->update_from_cairo_context (ct); ct->move_to(pxmax-text_width ,pymax-2*text_height); diag_layout->show_in_cairo_context(ct); ct->stroke(); ct->restore(); return; } void Diagramm::draw_peak_integration (const Cairo::RefPtr &ct) { int n; int px, py; mw_data val; ct->save(); // don't draw across border! ct->rectangle(margin,margin,width - 2*margin, height - 2*margin); ct->clip(); if (show_peakarea) { ct->set_source_rgb(funktcol_r, funktcol_g, funktcol_b); ct->set_line_width(ps*2*scalefactor); for (n=0; nmove_to (px, py); py = pymin - peaks[n].area/peaks_area * (pymin-pymax); ct->line_to(px, py); } } ct->stroke(); ct->restore(); if (show_baseline) { ct->save(); ct->set_source_rgb(gridcol_r, gridcol_g, gridcol_b); px = pxmin; yb = yb_a1 * xmin/xrange + yb_a0; py = scale_y(yrange*yb); ct->move_to (px, py); px = pxmax; yb = yb_a1 * xmax/xrange + yb_a0; py = scale_y(yrange*yb); ct->line_to (px, py); ct->stroke(); ct->restore(); } if (show_peaklimits) { ct->save(); ct->set_source_rgb(gridcol_r, gridcol_g, gridcol_b); for (n=0; nmove_to (px, py); yb = yb_a1 * val.x + yb_a0; py = scale_y(yrange*yb); ct->line_to(px, py); val = trafo(mw.at(peaks[n].xb2)); px = scale_x (xrange*val.x); py = pymin; ct->move_to (px, py); yb = yb_a1 * val.x + yb_a0; py = scale_y(yrange*yb); ct->line_to(px, py); } ct->stroke(); ct->restore(); } return; } bool Diagramm::on_draw(const Cairo::RefPtr &ccontext) { double x,y; mw_data val; Gtk::Allocation allocation = get_allocation(); diag_width = allocation.get_width(); diag_height = allocation.get_height(); width = trunc (scalefactor * diag_width); height = trunc(scalefactor * diag_height); diag_sf = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, width, height); diag_ct = Cairo::Context::create (diag_sf); diag_layout = Pango::Layout::create(diag_ct); diag_layout->update_from_cairo_context (diag_ct); font = Pango::FontDescription("Sans 10"); diag_layout->set_font_description(font); width = diag_sf->get_width(); height = diag_sf->get_height(); //margin of axes margin = trunc(0.05*width + scalefactor * 20); //origin of diagram and maximum extent pxmin = margin; pymin = height-margin; pxmax = width-margin; pymax = margin; //set function and unit funktion_x = eval_funkt(0,project->funktion_x); unit_x = eval_unit(0,project->unit_x); funktion_y = eval_funkt(1,project->funktion_y); unit_y = eval_unit(1,project->unit_y); diag_ct->set_operator (Cairo::OPERATOR_CLEAR); //clear drawing area diag_ct->paint (); diag_ct->set_operator (Cairo::OPERATOR_OVER); draw_background (ccontext); if (!reset_diag) { if (mw.size() != 0) { find_xy_minmax(); // find minmima and maxima of values set_unit(); // set unit prefix and rearrange values if (autoscale) set_coord_limits(); // set limits for coordinate system //display values if (show_display) { val = trafo(mw.at(mi-1)); x = xrange * val.x; y = yrange * val.y; m_record xmval; xmval.digits = x; xmval.funktion = funktion_x; xmval.unit = unit_x; m_record ymval; ymval.digits = y; ymval.funktion = funktion_y; ymval.unit = unit_y; display_mw (xmval, ymval); } } draw_coord (diag_ct); //draw coordinates if (mw.size() != 0) { if (mw_symbol != none) draw_xysymbol(diag_ct); //draw points if (mw_line) draw_xyline(diag_ct); //draw line else if (mw_curve) draw_xycurve(diag_ct); if (eval_reglin) draw_lin_regression(diag_ct); if (eval_diff) draw_diff_funktion (diag_ct); if (eval_integration) draw_peak_integration (diag_ct); if (selection_frame) draw_selection_frame (xmin_new, ymax_new, xmax_new, ymin_new, diag_ct); } } scale_width = diag_width; scale_width /= width; scale_height = diag_height; scale_height /= height; ccontext->scale (scale_width, scale_height); ccontext->set_source (diag_sf, 0, 0); ccontext->paint(); /////////////////////////////// return true; } bool Diagramm::on_timeout() { if (mw.size() != 0) { get_val(); queue_draw (); // redraw diagram } return true; } bool Diagramm::start_mt() { if (!timeout_handler.connected())timeout_handler = Glib::signal_timeout().connect( sigc::mem_fun(*this, &Diagramm::on_timeout), mtime ); if (timeout_handler.blocked()) timeout_handler.unblock(); return true; } bool Diagramm::stop_mt() { timeout_handler.block(); return true; } void Diagramm::draw_selection_frame (double x_1, double y_1, double x_2, double y_2, const Cairo::RefPtr &ct) { int px1, py1, px2, py2, width, height; ct->save(); ct->set_source_rgba(0.0, 0.2, 1.0, 0.8); ct->set_line_width(scalefactor); px1 = scale_x (x_1); px2 = scale_x (x_2); py1 = scale_y (y_1); py2 = scale_y (y_2); width = px2 - px1; height = py2 - py1; ct->rectangle (px1, py1, width, height); ct->stroke_preserve (); ct->set_source_rgba(0.0, 0.2, 1.0, 0.1); ct->fill(); ct->stroke (); ct->restore (); return; } bool Diagramm::on_motion_notify_event (GdkEventMotion *motion) { m_record xval, yval; xval.digits = get_xcoord(motion->x); xval.unit = unit_x; yval.digits = get_ycoord(motion->y); yval.unit = unit_y; display_mw (xval, yval); if (motion->state == GDK_BUTTON_MOTION_MASK + GDK_BUTTON_PRESS_MASK) { xmax_new = get_xcoord(motion->x); ymin_new = get_ycoord(motion->y); selection_frame = true; queue_draw (); } return true; } bool Diagramm::on_button_press_event (GdkEventButton *pos) { xmin_new = get_xcoord(pos->x); ymax_new = get_ycoord(pos->y); return true; } bool Diagramm::on_button_release_event (GdkEventButton *pos) { double x1, y1, x2, y2, ex; int n; save_autoscale = autoscale; // save autoscale state autoscale = false; if (!coord_saved) { xmin_reset = xmin; ymin_reset = ymin; xmax_reset = xmax; ymax_reset = ymax; coord_saved = true; } if (xmax_new < xmin_new) { x1 = xmax_new; x2 = xmin_new; } else { x1 = xmin_new; x2 = xmax_new; } if (ymax_new < ymin_new) { y1 = ymax_new; y2 = ymin_new; } else { y1 = ymin_new; y2 = ymax_new; } if (x1 > xmin) xmin = x1; if (x2 < xmax) xmax = x2; if (y1 > ymin) ymin = y1; if (y2 < ymax) ymax = y2; xscale = xmax - xmin; yscale = ymax - ymin; button_reset_scale->show(); selection_frame = false; queue_draw (); return true; } void Diagramm::reset_diagscale () { xmin = xmin_reset; ymin = ymin_reset; xmax = xmax_reset; ymax = ymax_reset; xscale = xmax - xmin; yscale = ymax - ymin; button_reset_scale->hide(); queue_draw (); autoscale = save_autoscale; //reset state return; } void Diagramm::set_unit() { xrange=1.0; //Initialize range yrange=1.0; // set unit for x values if (funktion_x == _("Time")) { while ((xrange*xabsmax > 60) && (unit_x != "h")) { xrange = 0.0166666667 * xrange; unit_x = upgrade_unit (unit_x); } } else { while ((xrange*xabsmax < 0.1) && (xabsmax != 0) && (unit_x.at(0) != 'p')) { xrange = 1000 * xrange; unit_x = downgrade_unit (unit_x); } while ((xrange*xabsmax > 1000) && (unit_x.at(0) != 'G')) { xrange = 0.001 * xrange; unit_x = upgrade_unit (unit_x); } } //set unit for y values if ((funktion_y != "pH") && (funktion_y != _("Temperature"))) { while ((yrange*yabsmax < 0.1) && (yabsmax != 0) && (unit_y.at(0) != 'p')) { yrange = 1000 * yrange; unit_y = downgrade_unit (unit_y); } while ((yrange*yabsmax > 1000) && (unit_y.at(0) != 'G')) { yrange = 0.001 * yrange; unit_y = upgrade_unit (unit_y); } } return; } std::string Diagramm::upgrade_unit (std::string unit) { char16_t dim; if (unit == "s") unit = "min"; else if (unit == "min") unit = "h"; else if (unit == "h") return (unit); else { dim = unit.at(0); switch(dim) { case 'p': unit.replace(0,1,"n"); break; case 'n': unit.replace(0,1,"u"); break; case 'u': unit.replace(0,1,"m"); break; case 'm': unit.erase(0,1); break; case 'k': unit.replace(0,1,"M"); break; case 'M': unit.replace(0,1,"G"); break; case 'G': break; default: unit.insert(0,"k"); } } return unit; } std::string Diagramm::downgrade_unit (std::string unit) { char16_t dim; dim = unit.at(0); switch(dim) { case 'p': break; case 'n': unit.replace(0,1,"p"); break; case 'u': unit.replace(0,1,"n"); break; case 'm': unit.replace(0,1,"u"); break; case 'k': unit.erase(0,1); break; case 'M': unit.replace(0,1,"k"); break; case 'G': unit.replace(0,1,"M"); break; default: unit.insert(0,"m"); } return unit; } ///////////////// Prepare, start and stop Measurement ///////////////////// void new_project () { if (!data_saved) if (dialog_ok(_("Save data?"))) save_data(); reset_mw(); datum = std::time(nullptr); project->datum = std::asctime(std::localtime(&datum)); project->title = ""; project->filename = ""; project->comment = ""; project->evalresults = ""; define_project (); data_saved = true; return; } void show_settings_device_x () { std::string function_x; function_x = func_x->get_active_text(); if (function_x == _("Time")) { device_x->hide(); } else if (dmm[0].dmm_typ == DMM) { if (dmm[0].dmm_name == "") device_x->set_label (_("device not configured")); else device_x->set_label (dmm[0].dmm_name); device_x->show(); } else // simulation (linear): DEVICE and other sim-types can't be selected for channel X { device_x->set_label (_("Simulation (linear)")); device_x->show(); } } void show_settings_device_y () { std::string function_y; function_y = func_y->get_active_text(); if ((dmm[1].dmm_typ == DMM) || (dmm[1].dmm_typ == DEVICE)) { if (dmm[1].dmm_name == "") device_y->set_label (_("device not configured")); else device_y->set_label (dmm[1].dmm_name); device_y->show(); tit_options->hide(); } else // simulation { if (dmm[1].dmm_typ == LINEAR) device_y->set_label (_("Simulation (linear)")); else if (dmm[1].dmm_typ == EXP) device_y->set_label (_("Simulation (exponential)")); else if (dmm[1].dmm_typ == PH) { device_y->set_label (_("Simulation (pH)")); tit_options->show(); } else if (dmm[1].dmm_typ == PEAK) device_y->set_label (_("Simulation (chromatogram)")); device_y->show(); } } void configure_settings_device_x() { std::string option; set_messfunkt (0, func_x->get_active_text()); option = device_x->get_label (); if (option == _("Simulation (linear)")) dmm[0].dmm_typ = LINEAR; show_options_device_x(); func_x->set_active_text (project->funktion_x); show_settings_device_x (); projekt_prop->queue_draw (); } void configure_settings_device_y() { set_messfunkt (1, func_y->get_active_text()); show_options_device_y(); func_y->set_active_text (project->funktion_y); show_settings_device_y (); projekt_prop->queue_draw (); } void define_project () { std::string error_str, profun_x, profun_y; typ dmm1_typ,dmm2_typ; //save actual settings profun_x = project->funktion_x; profun_y = project->funktion_y; dmm1_typ = dmm[0].dmm_typ; dmm2_typ = dmm[1].dmm_typ; projekt_title->set_text (project->title); func_x->set_active_text (project->funktion_x); func_y->set_active_text (project->funktion_y); show_settings_device_x (); show_settings_device_y (); projekt_comment = Gtk::TextBuffer::create(); projekt_comment->set_text(project->comment); projekt_comment_view->set_buffer(projekt_comment); if (dmm[1].dmm_typ == PH) // pH simulation { tit_ha->set_active_text(ha.name); tit_haconc->set_value (dmm[1].ca); tit_baseconc->set_value (dmm[1].cb); tit_havol->set_value (dmm[1].va); tit_speed->set_value(60.0 * tit_volspeed); // ml/sec -> ml/min show_tit_options(); } //existing data? -> deactivate editing if (mw.size()!=0) projekt_options->set_sensitive (false); else projekt_options->set_sensitive (true); int result = projekt_prop->run(); switch(result) { case(Gtk::RESPONSE_ACCEPT): { project->title = projekt_title->get_text(); if ((project->title != "") && (project->filename == "")) project->filename = project->title + ".dat"; set_messfunkt (0, func_x->get_active_text()); set_messfunkt (1, func_y->get_active_text()); project->comment = projekt_comment->get_text(); if ((mw.size()==0) && (dmm[1].dmm_typ == PH)) // pH simulation { ha.name = tit_ha->get_active_text(); dmm[1].ca = tit_haconc->get_value (); dmm[1].cb = tit_baseconc->get_value (); dmm[1].va = tit_havol->get_value (); ai = get_acid_index (ha.name); if (ai == -1) { error_str = _("No titration data set"); fehler (error_str); projekt_prop->hide(); return; } else { ha.npks = acid.at(ai).npks; ha.pks[0] = acid.at(ai).pks[0]; ha.pks[1] = acid.at(ai).pks[1]; ha.pks[2] = acid.at(ai).pks[2]; } tit_volspeed = tit_speed->get_value() / 60.0; // ml/min -> ml/sec if (dmm[1].connected) dmm[1].set_tit_data (ha.npks); } break; } case(Gtk::RESPONSE_CANCEL): { projekt_prop->hide(); //reset project settings project->funktion_x = profun_x; project->funktion_y = profun_y; dmm[0].dmm_typ = dmm1_typ; dmm[1].dmm_typ = dmm2_typ; return; break; } } //set unit project->unit_x = set_std_unit (project->funktion_x); dmm[0].m_range = set_std_range (project->funktion_x); project->unit_y = set_std_unit (project->funktion_y); dmm[1].m_range = set_std_range (project->funktion_y); projekt_prop->hide(); project_defined=true; return; } int get_acid_index(std::string name) // get index of acid { int i; bool found; found = false; for (i=0; i< acid.size(); i++) { if (acid.at(i).name == name) { found = true; break; } } if (!found) i=-1; return i; } void show_tit_options() { std::string funkt_y; funkt_y = func_y->get_active_text(); if ((dmm[1].dmm_typ == PH) && (funkt_y == "pH")) { tit_options->show (); eval_titvolumen = true; } else { tit_options->hide(); eval_titvolumen = false; if (dmm[1].dmm_typ == PH) dmm[1].dmm_typ = LINEAR; // reset simulation type } return; } void set_messfunkt (int kanal, std::string funkt) { std::string dmm_typ; if (kanal == 0) project->funktion_x = funkt; else project->funktion_y = funkt; dmm[kanal].m_funkt = funkt; if (funkt == _("Time")) dmm[kanal].dmm_typ = TIME; return; } std::string set_std_unit (std::string funkt) // set standard unit { std::string unit; if (funkt == _("Time")) unit = "s"; else if ((funkt == _("DC Voltage")) || (funkt == _("AC Voltage"))) unit = "V"; else if ((funkt == _("DC Current")) || (funkt == _("AC Current"))) unit = "A"; else if (funkt == _("Resistance")) unit = "Ohm"; else if (funkt == _("Conductivity")) unit = "S"; else if (funkt == "pH") unit = "pH"; else if (funkt == _("Temperature")) unit = "°C"; else unit = "?"; return unit; } std::string set_std_range (std::string funkt) // set standard range { std::string range; if ((funkt == _("DC Voltage")) || (funkt == _("AC Voltage"))) range = "2 V"; else if ((funkt == _("DC Current")) || (funkt == _("AC Current"))) range = "200 mA"; else if (funkt == _("Resistance")) range = "200 Ohm"; else if (funkt == _("Conductivity")) range = "200 mS"; else if (funkt == _("pH")) range = "pH"; else if (funkt == _("Temperature")) range = "°C"; else range = ""; return range; } void reset_mw () { //Initialize value indices mi = 0; mw.clear(); reset_evaloptions (); mess_done = false; return; } void init_diag () { diag->reset_diag = false; if (diag->autoscale) //reset coordinate limits if not manually set { diag->xmin = 0.0; diag->ymin = 0.0; diag->xmax = 10.0; diag->ymax = 1.0; diag->dxax = 0.01; diag->dyax = 0.01; diag->xscale = 10.0; diag->yscale = 1.0; diag->xrange = 1.0; diag->yrange = 1.0; if (project->funktion_y == "pH") { diag->yscale = 14.0; diag->ymin = 0.0; diag->ymax = 14.0; diag->dyax = 0.00714285714286; } } return; } void begin_mess() //Prepare measurement { if (!project_defined) define_project (); else { project->unit_x = set_std_unit (project->funktion_x); project->unit_y = set_std_unit (project->funktion_y); } if (!project_defined) return; // name and interface of device defined? if (project->funktion_x != _("Time")) { if ((dmm[0].dmm_typ == DMM) || (dmm[0].dmm_typ == DEVICE)) { if (dmm[0].dmm_name == "") { fehlercode = _("Data channel"); fehlercode += " "; fehlercode += "1 (X): "; fehlercode += _("Device name not set"); fehler (fehlercode); return; } if (dmm[0].int_face == "") { fehlercode = _("Data channel"); fehlercode += " "; fehlercode += "1 (X): "; fehlercode += _("Interface not set"); fehler (fehlercode); return; } } } if ((dmm[1].dmm_typ == DMM) || (dmm[1].dmm_typ == DEVICE)) { if (dmm[1].dmm_name == "") { fehlercode = _("Data channel"); fehlercode += " "; fehlercode += "2 (Y): "; fehlercode += _("Device name not set"); fehler (fehlercode); return; } if (dmm[1].int_face == "") { fehlercode = _("Data channel"); fehlercode += " "; fehlercode += "2 (Y): "; fehlercode += _("Interface not set"); fehler (fehlercode); return; } } reset_mw (); init_diag (); mt = 0.0; // reset time dmm[1].connect_dmm(dmm[1].int_face); //Channel Y-values if (!dmm[1].connected) { fehlercode = _("Device unreachable: "); fehlercode += dmm[1].dmm_name; fehler (fehlercode); diag->reset_diag = true; diag->queue_draw (); return; } if ((dmm[1].dmm_typ == DMM) && (dmm[1].remote_cfg)) dmm[1].setup(dmm[1].m_funkt, dmm[1].m_range); if ((project->funktion_x != _("Time"))) { dmm[0].connect_dmm(dmm[0].int_face); //Channel X-Values if (!dmm[0].connected) { fehlercode = _("Device unreachable: "); fehlercode += dmm[0].dmm_name; fehler (fehlercode); diag->reset_diag = true; diag->queue_draw (); return; } if ( (dmm[0].dmm_typ == DMM) && (dmm[0].remote_cfg)) dmm[0].setup(dmm[0].m_funkt, dmm[0].m_range); } else project->unit_x = "s"; diag->queue_draw(); button_messung->hide(); button_start->show(); button_start->signal_clicked().connect(sigc::ptr_fun(start_mess)); button_timer->show(); button_timer->signal_clicked().connect(sigc::ptr_fun(start_mess_with_timer)); button_cancel->show(); menu_mess_neu->set_sensitive (false); menu_mess_start->set_sensitive (true); menu_mess_cancel->set_sensitive (true); menu_mess_start_timer->set_sensitive (true); menu_eval_data->set_sensitive (false); mtimer = g_timer_new (); return; } void cancel_mess () { stop_mess (); end_mess (); button_start->hide(); button_timer->hide(); button_cancel->hide(); menu_mess_start->set_sensitive (false); menu_mess_start_timer->set_sensitive (false); menu_mess_cancel->set_sensitive (false); return; } void start_mess() { data_saved = false; mess_done = true; button_start->hide(); button_timer->hide(); button_cancel->hide(); button_stop->show(); menu_mess_start->set_sensitive (false); menu_mess_start_timer->set_sensitive (false); menu_mess_cancel->set_sensitive (false); menu_mess_stop->set_sensitive (true); menu_options_diag->set_sensitive (false); menu_options_deviceX->set_sensitive (false); menu_options_deviceY->set_sensitive (false); tit_options->set_sensitive (false); g_timer_start(mtimer); get_val(); //read value for t=0 diag->start_mt(); //start measurement diag->m_started = true; return; } bool show_countdown_progress () { double fraction; fraction = count_down_progress->get_fraction () + 1/timer_start->get_value (); count_down_progress->set_fraction (fraction); timer_cd = fraction; return true; } void show_countdown () { timer_cd = timer_start->get_value (); timer_dialog->hide(); // initialize timeout for measurement countdown of 1 sec if (!countdown_timeout.connected()) countdown_timeout = Glib::signal_timeout().connect(sigc::ptr_fun(show_countdown_progress), 1000); if (countdown_timeout.blocked()) countdown_timeout.unblock(); count_down_start->show(); count_down_progress->set_fraction (0.0); count_down_progress->show(); timer_cd = count_down_progress->get_fraction(); while (timer_cd < 1.0) { while (gtk_events_pending()) gtk_main_iteration(); } count_down_start->hide(); count_down_progress->hide(); countdown_timeout.block(); return; } void start_mess_with_timer () { timer_cd = 10.0; timer_start->set_value (timer_cd); int result = timer_dialog->run(); switch(result) { case(Gtk::RESPONSE_ACCEPT): show_countdown (); start_mess (); break; case(Gtk::RESPONSE_CANCEL): timer_dialog->hide(); break; } timer_dialog->close(); return; } void stop_mess() { button_stop->hide(); button_reset->show(); menu_mess_stop->set_sensitive (false); menu_mess_delete->set_sensitive (true); diag->stop_mt(); //stop measurement diag->m_started = false; g_timer_stop(mtimer); display_x->hide(); display_y->hide(); menu_eval_data->set_sensitive (true); menu_options_diag->set_sensitive (true); menu_options_deviceX->set_sensitive (true); menu_options_deviceY->set_sensitive (true); return; } void end_mess() { button_reset->hide(); menu_mess_delete->set_sensitive (false); if (mess_done) { if (!dialog_ok (_("Delete diagram?"))) { button_reset->show(); return; } if (!data_saved) { if (dialog_ok(_("Save data?"))) save_data(); } } diag->reset_diag=true; diag->queue_draw (); button_messung->show(); menu_mess_neu->set_sensitive (true); tit_options->set_sensitive (true); msg_dialog->close(); if (dmm[0].connected) dmm[0].disconnect_dmm(); if (dmm[1].connected) dmm[1].disconnect_dmm(); g_timer_destroy(mtimer); mw.clear(); // delete values mess_done = false; data_saved = true; return; } ///////////////// Arrange, gain and show Values ///////////////// void new_val(mw_data val) // add value to mw-array and prepare next value { mw.push_back (val); if (mi >= mw.max_size ()) //array full { fehler(_("Maximum number of values reached")); if (diag->m_started) stop_mess (); } else mi++; //increase Index return; } void get_val() { m_record xmval, ymval; mw_data val; mt = g_timer_elapsed (mtimer, microsec); //detect time variable at beginning of measurement if (dmm[1].connected) ymval = dmm[1].read_dmm(); else //Device unreachable? { stop_mess (); //Stop measurement return; } set_messfunkt (1, ymval.funktion); //read function and unit from device if (ymval.funktion == "?") return; if (project->funktion_x == _("Time")) { xmval.digits = mt; xmval.funktion = _("Time"); xmval.unit = project->unit_x; } else { xmval = dmm[0].read_dmm(); set_messfunkt (0, xmval.funktion); //read function and unit from device } if (xmval.funktion == "?") return; val.x = xmval.digits; val.y = ymval.digits; new_val (val); //Insert value in array return; } void display_mw (m_record xval, m_record yval) { std::string mwstring; int pos, dec; mwstring = std::to_string(xval.digits); dec = -trunc(log10(abs(xval.digits))) + 4; pos = mwstring.find (','); mwstring.resize (pos+dec); mwstring = "X= " + mwstring + " " + xval.unit; pos = mwstring.find("u"); if (pos <= mwstring.length()) mwstring.replace(pos,1,"µ"); display_x->set_text (mwstring); display_x->show(); mwstring = std::to_string(yval.digits); dec = -trunc(log10(abs(yval.digits))) + 4; pos = mwstring.find (','); mwstring.resize (pos+dec); mwstring = "Y= " + mwstring + " " + yval.unit; pos = mwstring.find("u"); if (pos <= mwstring.length()) mwstring.replace(pos,1,"µ"); display_y->set_text (mwstring); display_y->show(); return; } void toggle_display () { show_display = menu_view_display->get_active(); return; } //////////// Error messages and infos //////////////////// void fehler(std::string fehler_text) { error_dialog->set_secondary_text(fehler_text); int result = error_dialog->run(); switch(result) { case(Gtk::RESPONSE_OK): break; } error_dialog->hide(); return; } bool dialog_ok (std::string msg) { bool resp; msg_dialog->set_message(msg); int result = msg_dialog->run(); switch(result) { case(Gtk::RESPONSE_OK): resp = true; break; case(Gtk::RESPONSE_ACCEPT): resp = true; break; case(Gtk::RESPONSE_CANCEL): resp = false; break; default: resp = false; } msg_dialog->hide(); return resp; } galvani-v0.38/src/data_rw.h0000644000175000017500000000547214713174213015515 0ustar burkardburkard/* * data_rw.h * This file is part of galvani. * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef DATA_RW_H #define DATA_RW_H #include "typedef.h" //extern Variables: extern int mi; //index for actual value extern bool data_saved; extern std::string fehlercode; extern Gtk::MessageDialog* msg_dialog; extern Gtk::Dialog* projekt_prop; extern Gtk::Button* projekt_prop_ok; extern Gtk::Dialog* map_func; extern Gtk::Button* projekt_prop_cancel; extern Gtk::MenuItem* menu_eval_data; extern bool eval_integration; extern bool eval_regression; extern bool eval_diff; extern bool mess_done; extern double tit_volspeed; extern std::vector m_functions; extern std::string datadir, tmpdir; //Pointer to text entries extern Gtk::Entry* projekt_title; extern Gtk::ComboBoxText* func_x; extern Gtk::ComboBoxText* func_y; extern Gtk::TextView* projekt_comment_view; extern Glib::RefPtr projekt_comment; extern Gtk::Entry* file_function_x; extern Gtk::Entry* file_function_y; extern Gtk::ComboBoxText* function_x; extern Gtk::ComboBoxText* function_y; extern Gtk::FileChooserDialog* file_dialog; extern Gtk::Button* file_choose_ok; extern Gtk::Button* file_choose_cancel; extern std::string version; //extern variables (classes) extern std::vector mw; extern Messung *project; extern Diagramm* diag; extern Multimeter dmm[2]; extern acid_data ha; //Variablen bool dialog_ok (std::string msg); Glib::RefPtr filefilter_dat, filefilter_img; std::ifstream open_file; std::string filename; std::string file_id = "galvani_data_file"; Glib::RefPtr img; //functions void fehler(std::string fehler_text); //error message void reset_mw (); // initialize array void new_val(mw_data val); //prepare next value void init_diag(); // initialize diagram void define_project (); void show_diag (); void export_diag(); void reset_evaloptions (); std::string read_item(std::string opt_item); void translate_functions (); bool is_known_function (std::string funct); typ get_dmmtyp(std::string t); //extern functions double get_dbstr(std::string num_str); void set_messfunkt (int kanal, std::string funkt); //set function of channel X/Y #endif galvani-v0.38/src/eval.h0000644000175000017500000001170014713174213015012 0ustar burkardburkard/* * eval.h * This file is part of galvani. * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef EVAL_H #define EVAL_H #include "typedef.h" //extern Variables: extern int mi; //index for actual value extern std::string filename; extern std::string fehlercode; extern std::vector mw; extern Diagramm* diag; extern Messung *project; extern Gtk::MessageDialog* msg_dialog; extern Gtk::Dialog* projekt_prop; extern bool dialog_ok (std::string msg); extern Gtk::Dialog* evaloptions_dialog; extern Gtk::Dialog* eval_results; extern Gtk::TextView* eval_results_view; extern Gtk::Label* eval_funktion; extern Gtk::Notebook* evaloptions; extern Gtk::Switch* evaloption_vol; extern Gtk::SpinButton* evaloption_volspeed; extern Gtk::SpinButton* evaloption_minpeakscale; extern Gtk::SpinButton* evaloption_mindiffscale; extern Gtk::ComboBoxText* evaloption_xtherm; extern Gtk::ComboBoxText* evaloption_ytherm; extern Gtk::Switch* evaloption_xreziproksw; extern Gtk::Switch* evaloption_yreziproksw; extern Gtk::Switch* evaloption_xlogsw; extern Gtk::Switch* evaloption_ylogsw; extern Gtk::ColorButton* diag_funktcolor; extern Gtk::Switch* evaloption_reglin; extern Gtk::Switch* evaloption_integration; extern Gtk::Switch* evaloption_diff; extern Gtk::Switch* evaloption_show_baseline; extern Gtk::Switch* evaloption_show_peakarea; extern Gtk::Switch* evaloption_show_peaklimits; extern Gtk::Box* integration_options; extern Gtk::Label* display_x; extern Gtk::Label* display_y; extern Gtk::ToolButton* button_reset_scale; extern std::vector peaks; //peaks in Chromatogram; //Variables bool eval_titvolumen = false; bool eval_xreziprok = false; bool eval_yreziprok = false; bool eval_xlog = false; bool eval_ylog = false; bool eval_reglin = false; bool eval_integration = false; bool eval_diff = false; thermoval eval_xtherm = no; thermoval eval_ytherm = no; double tit_volspeed = 0.0166667; // Titration volume speed in ml/sec = 1 ml/min double mw_slope, mw_axis; double peaks_area; double min_peakscale = 0.1; // criterion for peak noise (percentage of yscale) double min_diffscale = 5.0; // criterion for derivative noise (percentage of maximum) std::vector diff; //maxima of diffential function int ndiff; //number of maxima of differential function double yb, yb_a0, yb_a1; // baseline value, intercept and slope Glib::RefPtr eval_result_items; //results of evaluation Pango::TabArray tabs; double diff_min, diff_max; //min and max of differential function //Funktions void fehler(std::string fehler_text); //error message void reset_mw (); // initialize array for measurement values void show_diag (); // show diagram void eval_data (); //evaluate data void check_xlog (); // check data for x->log x void check_xreziprok (); // check data for x->1/x void check_ylog (); // check data for y->log y void check_yreziprok (); // check data for y->1/y void show_evaloptions_integration (int page); //show options for peak integration void init_diag (); //initialize diagram void reset_diagscale (); mw_data trafo (mw_data val); //mathematical transformation of data double trafo_log (double x); //logarithm double trafo_reziprok (double x); //reciprocal double trafo_cuni (double x); //thermocouple copper/constantane double trafo_nicr (double x); //thermocouple nickel/chromenickel void reset_evaloptions (); void lin_regression (); //linear regression of data polyreg_data reg_lin (std::vector &p); //linear regression of data polyreg_data poly2_reg (std::vector &p); //polynom regression of data (second order) polyreg_data baseline (); //find baseline, compute slope and intercept void peak_integration (); //integration of peaks void find_peaks (); //find peaks in measurement data peak_data get_peakarea (peak_data peak); //calculate peak area peak_data peakreg_gauss (unsigned long long int max); //calculating gauss parameter for peak maximum by polynom regression void diff_funktion (); //calculate differential function mw_data mv_av (std::vector &p); //calculate moving average mw_data tr_av (std::vector &p); //calculate triangular average void show_evalresults (); std::string eval_funkt (int kanal, std::string funkt); std::string eval_unit (int kanal, std::string unit); std::string num_str (double x, int n); //transforms decimal to string with n decimal places #endifgalvani-v0.38/src/main.h0000644000175000017500000002564314713174213015022 0ustar burkardburkard/* * main.h * This file is part of galvani. * * Copyright (C) 2020-2024 Burkard Lutz * * 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, see . */ #ifndef MAIN_H #define MAIN_H #include #include "typedef.h" //Pointer Glib::RefPtr builder; //Pointer to windows Gtk::Window* main_win = 0; Gtk::Notebook* edit_options = 0; Gtk::Notebook* evaloptions = 0; Gtk::Box* dmm_serial_options[2] = {0,0}; Gtk::Box* dmm_usb_options[2] = {0,0}; Gtk::Box* dmm_dmm_options[2] = {0,0}; Gtk::Box* dmm_device_options = 0; Gtk::Box* dmm_control_options[2] = {0,0}; Gtk::Box* dmm_function_control[2] = {0,0}; Gtk::Box* integration_options = 0; Gtk::Box* tit_options = 0; Gtk::Box* projekt_options = 0; Gtk::Box* sim_linoptions[2] = {0,0}; Gtk::Box* sim_expoptions = 0; Gtk::Box* sim_chromoptions = 0; Gtk::Window* browser = 0; //Pointer to menu items Gtk::MenuItem* menu_datei_neu = nullptr; Gtk::MenuItem* menu_datei_open = nullptr; Gtk::MenuItem* menu_datei_save = nullptr; Gtk::MenuItem* menu_datei_print = nullptr; Gtk::MenuItem* menu_quit = nullptr; Gtk::MenuItem* menu_mess_neu = nullptr; Gtk::MenuItem* menu_mess_start = nullptr; Gtk::MenuItem* menu_mess_start_timer = nullptr; Gtk::MenuItem* menu_mess_cancel = nullptr; Gtk::MenuItem* menu_mess_stop = nullptr; Gtk::MenuItem* menu_mess_delete = nullptr; Gtk::MenuItem* menu_eval_data = nullptr; Gtk::MenuItem* menu_export_diag = nullptr; Gtk::MenuItem* menu_options_diag = nullptr; Gtk::MenuItem* menu_options_deviceX = nullptr; Gtk::MenuItem* menu_options_deviceY = nullptr; Gtk::MenuItem* menu_options_save = nullptr; Gtk::MenuItem* menu_options_load = nullptr; Gtk::MenuItem* menu_about = nullptr; Gtk::MenuItem* menu_help = nullptr; Gtk::CheckMenuItem* menu_options_autoload = nullptr; Gtk::CheckMenuItem* menu_options_autosave = nullptr; Gtk::CheckMenuItem* menu_view_display = nullptr; //Pointer to Toolbuttons Gtk::ToolButton* button_start = nullptr; Gtk::ToolButton* button_timer = nullptr; Gtk::ToolButton* button_stop = nullptr; Gtk::ToolButton* button_cancel = nullptr; Gtk::ToolButton* button_reset = nullptr; Gtk::ToolButton* button_messung = nullptr; Gtk::ToolButton* button_new = nullptr; Gtk::ToolButton* button_edit = nullptr; Gtk::ToolButton* button_open = nullptr; Gtk::ToolButton* button_save = nullptr; Gtk::ToolButton* button_export = nullptr; Gtk::ToolButton* button_print = nullptr; Gtk::ToolButton* button_reset_scale = nullptr; //Pointer to dialogues Gtk::MessageDialog* error_dialog; Gtk::MessageDialog* msg_dialog; Gtk::AboutDialog* about_dialog; Gtk::FileChooserDialog* file_dialog; Gtk::Dialog* projekt_prop = 0; Gtk::Dialog* map_func = 0; Gtk::Dialog* options_dialog = 0; Gtk::Dialog* evaloptions_dialog = 0; Gtk::Dialog* eval_results = 0; Gtk::Dialog* timer_dialog = 0; Gtk::FileChooserDialog* dmmoptions_save_dialog; //Pointer to text entries Gtk::Entry* projekt_title = nullptr; Gtk::ComboBoxText* func_x = nullptr; Gtk::ComboBoxText* func_y = nullptr; Gtk::TextView* projekt_comment_view = nullptr; Gtk::TextView* eval_results_view = nullptr; Gtk::Label* eval_funktion = nullptr; Glib::RefPtr projekt_comment; Gtk::ComboBoxText* diag_symbol = nullptr; Gtk::ComboBoxText* diag_graph = nullptr; Gtk::ComboBoxText* diag_linestyle = nullptr; Gtk::ComboBoxText* diag_symbolstyle = nullptr; Gtk::ComboBoxText* dmm_typ[2] = {0,0}; Gtk::ComboBoxText* dmm_name[2] = {0,0}; Gtk::ComboBoxText* device_name = nullptr; Gtk::ComboBoxText* dmm_simtyp[2] = {0,0}; Gtk::ComboBoxText* dmm_interface[2] = {0,0}; Gtk::ComboBoxText* device_interface = nullptr; Gtk::ComboBoxText* dmm_baud[2] = {0,0}; Gtk::ComboBoxText* dmm_bits[2] = {0,0}; Gtk::ComboBoxText* dmm_flowcontrol[2] = {0,0}; Gtk::ComboBoxText* dmm_stopbits[2] = {0,0}; Gtk::ComboBoxText* dmm_parity[2] = {0,0}; Gtk::ComboBoxText* dmm_funktion[2] = {0,0}; Gtk::ComboBoxText* dmm_range[2] = {0,0}; Gtk::ComboBoxText* dmm_DCV[2] = {0,0}; Gtk::ComboBoxText* dmm_ACV[2] = {0,0}; Gtk::ComboBoxText* dmm_DCmA[2] = {0,0}; Gtk::ComboBoxText* dmm_ACmA[2] = {0,0}; Gtk::ComboBoxText* dmm_DCA[2] = {0,0}; Gtk::ComboBoxText* dmm_ACA[2] = {0,0}; Gtk::ComboBoxText* dmm_Res[2] = {0,0}; Gtk::ComboBoxText* dmm_Cond[2] = {0,0}; Gtk::ComboBoxText* dmm_pH[2] = {0,0}; Gtk::ComboBoxText* dmm_Temp[2] = {0,0}; Gtk::ComboBoxText* evaloption_xtherm = nullptr; Gtk::ComboBoxText* evaloption_ytherm = nullptr; Gtk::Entry* file_function_x = nullptr; Gtk::Entry* file_function_y = nullptr; Gtk::ComboBoxText* function_x = nullptr; Gtk::ComboBoxText* function_y = nullptr; Gtk::ComboBoxText* tit_ha = nullptr; //Pointer to numerical entries Gtk::SpinButton* diag_xmin = nullptr; Gtk::SpinButton* diag_xmax = nullptr; Gtk::SpinButton* diag_ymin = nullptr; Gtk::SpinButton* diag_ymax = nullptr; Gtk::SpinButton* diag_symw = nullptr; Gtk::SpinButton* dmm_timeout[2] = {0,0}; Gtk::SpinButton* dmm_num_bytes[2] = {0,0}; Gtk::SpinButton* dmm_usb_bytes[2] = {0,0}; Gtk::SpinButton* dmm_num_val[2] = {0,0}; Gtk::SpinButton* dmm_mtime = nullptr; Gtk::SpinButton* evaloption_volspeed = nullptr; Gtk::SpinButton* evaloption_minpeakscale = nullptr; Gtk::SpinButton* evaloption_mindiffscale = nullptr; Gtk::SpinButton* timer_start = nullptr; Gtk::SpinButton* tit_haconc = nullptr; Gtk::SpinButton* tit_baseconc = nullptr; Gtk::SpinButton* tit_havol = nullptr; Gtk::SpinButton* tit_speed = nullptr; Gtk::SpinButton* sim_slope[2] = {0,0}; Gtk::SpinButton* sim_shift[2] = {0,0}; Gtk::SpinButton* sim_init = 0; Gtk::SpinButton* sim_tc = 0; Gtk::SpinButton* sim_expshift = 0; Gtk::SpinButton* sim_np = 0; Gtk::SpinButton* sim_max_rt = 0; Gtk::SpinButton* sim_bf = 0; Gtk::SpinButton* sim_drift = 0; //Pointer to Button Gtk::Button* file_choose_ok; Gtk::Button* file_choose_cancel; Gtk::Button* projekt_prop_ok; Gtk::Button* projekt_prop_cancel; Gtk::Button* options_ok; Gtk::Button* device_x; Gtk::Button* device_y; Gtk::Button* options_cancel; Gtk::Button* options_reset; Gtk::Button* start_timer; Gtk::Button* cancel_timer; Gtk::ColorButton* diag_bkcolor; Gtk::ColorButton* diag_axcolor; Gtk::ColorButton* diag_gridcolor; Gtk::ColorButton* diag_xycolor; Gtk::ColorButton* diag_funktcolor; Gtk::Switch* diag_gridsw; Gtk::Switch* diag_autoscalesw; Gtk::Switch* diag_zerosw; Gtk::Switch* diag_titlesw; Gtk::Switch* dmm_polling[2]; Gtk::Button* dmm_loadoptions[2]; Gtk::Button* dmm_saveoptions[2]; Gtk::Button* dmmoptions_save_ok; Gtk::Button* dmmoptions_save_cancel; Gtk::Switch* dmm_remote_control[2]; Gtk::Switch* dmm_scpi[2]; Gtk::Switch* evaloption_vol; Gtk::Switch* evaloption_xreziproksw; Gtk::Switch* evaloption_yreziproksw; Gtk::Switch* evaloption_xlogsw; Gtk::Switch* evaloption_ylogsw; Gtk::Switch* evaloption_reglin; Gtk::Switch* evaloption_integration; Gtk::Switch* evaloption_diff; Gtk::ProgressBar* count_down_progress; Gtk::Switch* evaloption_show_baseline; Gtk::Switch* evaloption_show_peakarea; Gtk::Switch* evaloption_show_peaklimits; Gtk::Switch* sim_slope_switch[2]; Gtk::Switch* sim_shift_switch[2]; Gtk::Switch* sim_init_sw; Gtk::Switch* sim_tc_sw; Gtk::Switch* sim_expshift_sw; Gtk::Switch* sim_np_sw; Gtk::Switch* sim_max_rt_sw; Gtk::Switch* sim_bf_sw; Gtk::Switch* sim_drift_sw; //Pointer to Label Gtk::Label* display_x; Gtk::Label* display_y; Gtk::Label* count_down_start; //Variables std::string version; Messung *project; PrintOP *printjob; std::vector mw; Multimeter dmm[2]; Multimeter idmm[10]; //array of installed dmm int mid=0; //max. index of installed dmm Diagramm* diag=0; std::time_t datum; bool data_saved=true; bool project_defined=false; bool autosave=false; bool autoload = false; bool show_display = true; bool full_screen = true; int mainwin_width, mainwin_height; std::string fehlercode; std::string homedir, datadir, workdir, confdir, tmpdir; std::fstream ini_file; std::string ini_filename; std::vector m_functions; std::vector acid; //Funktions void new_project (); //new project void define_project (); //set projekt settings void show_settings_device_x (); // show project settings for channel X void show_settings_device_y (); // show project settings for channel Y void configure_settings_device_x(); // configure options for channel X and show in project void configure_settings_device_y(); // configure options for channel Y and show in project void begin_mess(); //new measurement void cancel_mess(); //cancel measurement void start_mess(); //start measurement void start_mess_with_timer(); //start measurement with timer void stop_mess(); //stop measurement void end_mess(); //end measurement and rearrange void save_data(); //save data void open_datafile(); //open data file void export_diag(); //export diagram void print_report(); //print report bool dialog_ok (std::string msg); //dialog: confirm action void app_quit(); //quit program void eval_data(); //evaluate data void show_evaloptions_integration (int page); //set options for peak integration void show_tit_options(); //show options for simulation of titration curve void set_options(); //set options void show_options_diag (); //show options for diagram void show_options_device_x (); //options for channel X void show_options_device_y (); //options for channel Y void set_range_options_device (int k); //set range options according to function void show_diag_manual_limits (bool manual); void show_dmm_control_options (bool state, int kanal); // signal expects function with 2 arguments, state is unused void show_dmm_function_control(bool state, int k); // signal expects function with 2 arguments, state is unused void show_dmm_interface_options(int kanal); void show_simulation_options (int k); void show_simlin_options (bool state, int k); // show options for linear simulation void show_simexp_options (int k); // show options for exponential simulation void show_simchrom_options (int k); // show options for peak simulation (chromatogram) void restart_options_x (); void restart_options_y (); void preset_mtime (); //preset measuring timeout according to device option void select_dmm (int k); void fehler(std::string fehler_text); //error message void save_dmm_options(int k); void load_dmm_options(int k); void save_all_options (); void load_all_options (); std::string read_ini(std::string opt_item); void toggle_display (); void reset_diagscale () { diag->reset_diagscale (); } void about (); void help (); extern int get_intstr(std::string num_str); #endif galvani-v0.38/src/Makefile.am0000644000175000017500000000147114713174213015752 0ustar burkardburkard## Process this file with automake to produce Makefile.in ## Created by Anjuta uidir = $(pkgdatadir)/ui ui_DATA = ui/data_rw.ui \ ui/eval.ui \ ui/options.ui \ ui/galvani.ui AM_CPPFLAGS = \ -DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \ -DPACKAGE_SRC_DIR=\""$(srcdir). \ $(LIBSERIAL_CFLAGS)"\" \ -DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \ $(GALVANI_CFLAGS) AM_CFLAGS =\ -Wall\ -g ACLOCAL_AMFLAGS = -I m4 bin_PROGRAMS = galvani galvani_SOURCES = \ main.cc \ data_rw.cxx \ data_rw.h \ eval.cxx \ eval.h \ main.h \ mess.cxx \ mess.h \ options.cxx \ options.h \ typedef.h \ print.h \ print.cxx \ spline.h galvani_LDFLAGS = galvani_LDADD = $(GALVANI_LIBS) \ $(LIBSERIAL_LIBS) EXTRA_DIST = $(ui_DATA) # Remove ui directory on uninstall uninstall-local: -rm -r $(uidir) -rm -r $(pkgdatadir) galvani-v0.38/src/main.cc0000644000175000017500000007106714713174213015161 0ustar burkardburkard/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ /* * main.cc * Copyright (C) 2020-2024 Burkard Lutz * * galvani 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 3 of the License, or * (at your option) any later version. * * galvani 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, see . */ #include #include #include #include #include #include #include #include "config.h" #include "main.h" #include #include namespace fs = std::experimental::filesystem; #ifdef ENABLE_NLS # include #endif // ui_files for running program in development environment /* #define UI_FILE "src/ui/galvani.ui" #define UI_DATA_RW_FILE "src/ui/data_rw.ui" #define UI_OPTIONS_FILE "src/ui/options.ui" #define UI_EVAL_FILE "src/ui/eval.ui" */ // replace by the following definitions before compilation #define UI_FILE PACKAGE_DATA_DIR"/ui/galvani.ui" #define UI_DATA_RW_FILE PACKAGE_DATA_DIR"/ui/data_rw.ui" #define UI_OPTIONS_FILE PACKAGE_DATA_DIR"/ui/options.ui" #define UI_EVAL_FILE PACKAGE_DATA_DIR"/ui/eval.ui" Messung::Messung () { datum = ""; title = ""; funktion_x = _("Time"); funktion_y = _("DC Voltage"); unit_x = "s"; unit_y = "V"; comment = ""; evalresults = ""; } Messung::~Messung() { } int main (int argc, char *argv[]) { Gtk::Main kit(argc, argv); setlocale (LC_ALL, ""); bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); //Main UI_FILE try { builder = Gtk::Builder::create_from_file(UI_FILE); } catch (const Glib::FileError & ex) { std::cerr << ex.what() << std::endl; return 1; } // initialize Measurement (Projekt) m_functions = {_("Time"),_("DC Voltage"),_("AC Voltage"),_("DC Current"),_("AC Current"), _("Resistance"),_("Conductivity"),_("pH"),_("Temperature")}; acid = { {_("Hydrochloric acid"),1,-6.0}, {_("Hydrobromic acid"),1,-6.0}, {_("Bromic acid"),1,0.0}, {_("Acetic acid"),1,4.76}, {_("Hypochloric acid"),1,7.25}, {_("Chloric acid"),1,0}, {_("Hydrofluoric acid"),1,3.14}, {_("Hydroiodic acid"),1,-8.0}, {_("Iodic acid"),1,0.0}, {_("Nitrous acid"),1,3.35}, {_("Nitric acid"),1,-1.32}, {_("Phosphoric acid"),3,1.96,7.21,12.32}, {_("Sulfurous acid"),2,1.96,7.2}, {_("Sulfuric acid"), 2,-3.0,1.92}, {_("Formic acid"),1,3.74}, {_("Chloroacetic acid"),1,2.86}, {_("Dichloroacetic acid"),1,1.30}, {_("Trichloroacetic acid"),1,0.70}, {_("Benzoic acid"),1,4.20}, {_("Oxalic acid"),2,1.25,4.29}, {_("Tartaric acid"),2,2.98,4.34}, {_("Citric acid"),3,3.13,4.76,6.4}, }; //Data from H.R.Christen: Grundlagen der allgemeinen und anorganischen Chemie, Frankfurt a.M. 1980 //G.H.Aylward, T.J.V.Findlay: Datensammlung Chemie, Weinheim 1975 project = new Messung; datum = std::time(nullptr); project->datum = std::asctime(std::localtime(&datum)); builder->get_widget_derived("diagramm", diag); builder->get_widget("main_window", main_win); builder->get_widget("browser", browser); builder->get_widget("projekt_prop", projekt_prop); builder->get_widget("projekt_prop_ok", projekt_prop_ok); builder->get_widget("projekt_prop_cancel", projekt_prop_cancel); builder->get_widget("error_msg", error_dialog); builder->get_widget("msg_dialog", msg_dialog); builder->get_widget("projekt_title", projekt_title); builder->get_widget("func_x", func_x); builder->get_widget("func_y", func_y); builder->get_widget("device_x", device_x); builder->get_widget("device_y", device_y); builder->get_widget("projekt_comment_view", projekt_comment_view); builder->get_widget("timer_dialog", timer_dialog); builder->get_widget("start_timer", start_timer); builder->get_widget("cancel_timer", cancel_timer); builder->get_widget("timer_start", timer_start); builder->get_widget("count_down_progress", count_down_progress); builder->get_widget("count_down_start", count_down_start); builder->get_widget("projekt_options", projekt_options); builder->get_widget("tit_options", tit_options); builder->get_widget("tit_ha", tit_ha); builder->get_widget("tit_haconc", tit_haconc); builder->get_widget("tit_baseconc", tit_baseconc); builder->get_widget("tit_havol", tit_havol); builder->get_widget("tit_speed", tit_speed); func_y->signal_changed().connect(sigc::ptr_fun(show_tit_options)); func_x->signal_changed().connect(sigc::ptr_fun(show_settings_device_x)); func_y->signal_changed().connect(sigc::ptr_fun(show_settings_device_y)); device_x->signal_clicked().connect(sigc::ptr_fun(configure_settings_device_x)); device_y->signal_clicked().connect(sigc::ptr_fun(configure_settings_device_y)); //Menu builder->get_widget("menu_datei_neu", menu_datei_neu); menu_datei_neu->signal_activate().connect(sigc::ptr_fun(new_project)); builder->get_widget("menu_datei_open", menu_datei_open); menu_datei_open->signal_activate().connect(sigc::ptr_fun(open_datafile)); builder->get_widget("menu_datei_save", menu_datei_save); menu_datei_save->signal_activate().connect(sigc::ptr_fun(save_data)); builder->get_widget("menu_datei_print", menu_datei_print); menu_datei_print->signal_activate().connect(sigc::ptr_fun(print_report)); builder->get_widget("menu_quit", menu_quit); builder->get_widget("menu_mess_neu", menu_mess_neu); menu_mess_neu->signal_activate().connect(sigc::ptr_fun(begin_mess)); builder->get_widget("menu_mess_start", menu_mess_start); menu_mess_start->signal_activate().connect(sigc::ptr_fun(start_mess)); builder->get_widget("menu_mess_start_timer", menu_mess_start_timer); menu_mess_start_timer->signal_activate().connect(sigc::ptr_fun(start_mess_with_timer)); builder->get_widget("menu_mess_cancel", menu_mess_cancel); menu_mess_cancel->signal_activate().connect(sigc::ptr_fun(cancel_mess)); builder->get_widget("menu_mess_stop", menu_mess_stop); menu_mess_stop->signal_activate().connect(sigc::ptr_fun(stop_mess)); builder->get_widget("menu_mess_delete", menu_mess_delete); menu_mess_delete->signal_activate().connect(sigc::ptr_fun(end_mess)); menu_quit->signal_activate().connect(sigc::ptr_fun(&Gtk::Main::quit)); builder->get_widget("menu_eval_data", menu_eval_data); menu_eval_data->signal_activate ().connect(sigc::ptr_fun(eval_data)); builder->get_widget("menu_export_diag", menu_export_diag); menu_export_diag->signal_activate().connect(sigc::ptr_fun(export_diag)); builder->get_widget("menu_options_diag", menu_options_diag); menu_options_diag->signal_activate().connect(sigc::ptr_fun(show_options_diag)); builder->get_widget("menu_options_deviceX", menu_options_deviceX); menu_options_deviceX->signal_activate().connect(sigc::ptr_fun(show_options_device_x)); builder->get_widget("menu_options_deviceY", menu_options_deviceY); menu_options_deviceY->signal_activate().connect(sigc::ptr_fun(show_options_device_y)); builder->get_widget("menu_options_save", menu_options_save); menu_options_save->signal_activate().connect(sigc::ptr_fun(save_all_options)); builder->get_widget("menu_options_load", menu_options_load); menu_options_load->signal_activate().connect(sigc::ptr_fun(load_all_options)); builder->get_widget("menu_options_autoload", menu_options_autoload); builder->get_widget("menu_options_autosave", menu_options_autosave); builder->get_widget("menu_view_display", menu_view_display); menu_view_display->signal_toggled().connect(sigc::ptr_fun(toggle_display)); builder->get_widget("about_dialog", about_dialog); builder->get_widget("menu_about", menu_about); menu_about->signal_activate().connect(sigc::ptr_fun(about)); about_dialog->set_version (VERSION); builder->get_widget("menu_help", menu_help); menu_help->signal_activate().connect(sigc::ptr_fun(help)); //Toolbar builder->get_widget("button_messung", button_messung); button_messung->signal_clicked().connect(sigc::ptr_fun(begin_mess)); // button_start builder->get_widget("button_start", button_start); // button_timer builder->get_widget("button_timer", button_timer); //button_stop builder->get_widget("button_stop", button_stop); button_stop->signal_clicked().connect(sigc::ptr_fun(stop_mess)); //button_cancel builder->get_widget("button_cancel", button_cancel); button_cancel->signal_clicked().connect(sigc::ptr_fun(cancel_mess)); //button_reset builder->get_widget("button_reset", button_reset); button_reset->signal_clicked().connect(sigc::ptr_fun(end_mess)); //button_new builder->get_widget("button_new", button_new); button_new->signal_clicked().connect(sigc::ptr_fun(new_project)); //button_edit builder->get_widget("button_edit", button_edit); button_edit->signal_clicked().connect(sigc::ptr_fun(define_project)); //button_open builder->get_widget("button_open", button_open); button_open->signal_clicked().connect(sigc::ptr_fun(open_datafile)); //button_save builder->get_widget("button_save", button_save); button_save->signal_clicked().connect(sigc::ptr_fun(save_data)); //button_export builder->get_widget("button_export", button_export); button_export->signal_clicked().connect(sigc::ptr_fun(export_diag)); //button_print builder->get_widget("button_print", button_print); button_print->signal_clicked().connect(sigc::ptr_fun(print_report)); //Anzeigefelder builder->get_widget("display_x", display_x); builder->get_widget("display_y", display_y); //button_reset_scale builder->get_widget("button_reset_scale", button_reset_scale); button_reset_scale->signal_clicked().connect(sigc::ptr_fun(reset_diagscale)); // Main window main_win->show_all(); menu_mess_start->set_sensitive (false); menu_mess_start_timer->set_sensitive (false); menu_mess_cancel->set_sensitive (false); menu_mess_stop->set_sensitive (false); menu_mess_delete->set_sensitive (false); menu_eval_data->set_sensitive (false); button_start->hide(); button_timer->hide(); button_stop->hide(); button_cancel->hide(); button_reset->hide(); button_reset_scale->hide(); display_x->hide(); display_y->hide(); count_down_start->hide(); count_down_progress->hide(); //UI data_rw try { builder = Gtk::Builder::create_from_file(UI_DATA_RW_FILE); } catch (const Glib::FileError & ex) { std::cerr << ex.what() << std::endl; return 1; } builder->get_widget("choose_file", file_dialog); builder->get_widget("file_choose_ok", file_choose_ok); builder->get_widget("file_choose_cancel", file_choose_cancel); builder->get_widget("map_func", map_func); builder->get_widget("file_function_x", file_function_x); builder->get_widget("file_function_y", file_function_y); builder->get_widget("function_x", function_x); builder->get_widget("function_y", function_y); //UI options try { builder = Gtk::Builder::create_from_file(UI_OPTIONS_FILE); } catch (const Glib::FileError & ex) { std::cerr << ex.what() << std::endl; return 1; } builder->get_widget("options_dialog", options_dialog); builder->get_widget("options_ok", options_ok); builder->get_widget("options_cancel", options_cancel); builder->get_widget("options_reset", options_reset); builder->get_widget("edit_options", edit_options); builder->get_widget("diag_bkcolor", diag_bkcolor); builder->get_widget("diag_axcolor", diag_axcolor); builder->get_widget("diag_gridcolor", diag_gridcolor); builder->get_widget("diag_xycolor", diag_xycolor); builder->get_widget("diag_gridsw", diag_gridsw); builder->get_widget("diag_zerosw", diag_zerosw); builder->get_widget("diag_titlesw", diag_titlesw); builder->get_widget("diag_autoscalesw", diag_autoscalesw); builder->get_widget("diag_symbol", diag_symbol); builder->get_widget("diag_graph", diag_graph); builder->get_widget("diag_linestyle", diag_linestyle); builder->get_widget("diag_symbol_style", diag_symbolstyle); builder->get_widget("diag_xmin", diag_xmin); builder->get_widget("diag_xmax", diag_xmax); builder->get_widget("diag_ymin", diag_ymin); builder->get_widget("diag_ymax", diag_ymax); builder->get_widget("diag_symw", diag_symw); builder->get_widget("dmm1_serial_options", dmm_serial_options[0]); builder->get_widget("dmm2_serial_options", dmm_serial_options[1]); builder->get_widget("dmm1_usb_options", dmm_usb_options[0]); builder->get_widget("dmm2_usb_options", dmm_usb_options[1]); builder->get_widget("dmm1_dmm_options", dmm_dmm_options[0]); builder->get_widget("dmm2_dmm_options", dmm_dmm_options[1]); builder->get_widget("dmm2_device_options", dmm_device_options); builder->get_widget("dmm1_scpi", dmm_scpi[0]); builder->get_widget("dmm2_scpi", dmm_scpi[1]); builder->get_widget("dmm1_typ", dmm_typ[0]); builder->get_widget("dmm2_typ", dmm_typ[1]); builder->get_widget("dmm1_name", dmm_name[0]); builder->get_widget("dmm2_name", dmm_name[1]); builder->get_widget("device_name", device_name); builder->get_widget("dmm1_simtyp", dmm_simtyp[0]); builder->get_widget("dmm2_simtyp", dmm_simtyp[1]); builder->get_widget("dmm1_interface", dmm_interface[0]); builder->get_widget("dmm2_interface", dmm_interface[1]); builder->get_widget("device_interface", device_interface); builder->get_widget("dmm1_baud", dmm_baud[0]); builder->get_widget("dmm2_baud", dmm_baud[1]); builder->get_widget("dmm1_bits", dmm_bits[0]); builder->get_widget("dmm2_bits", dmm_bits[1]); builder->get_widget("dmm1_flowcontrol", dmm_flowcontrol[0]); builder->get_widget("dmm2_flowcontrol", dmm_flowcontrol[1]); builder->get_widget("dmm1_stopbits", dmm_stopbits[0]); builder->get_widget("dmm2_stopbits", dmm_stopbits[1]); builder->get_widget("dmm1_parity", dmm_parity[0]); builder->get_widget("dmm2_parity", dmm_parity[1]); builder->get_widget("dmm1_polling", dmm_polling[0]); builder->get_widget("dmm2_polling", dmm_polling[1]); builder->get_widget("dmm1_num_bytes", dmm_num_bytes[0]); builder->get_widget("dmm2_num_bytes", dmm_num_bytes[1]); builder->get_widget("dmm1_usb_bytes", dmm_usb_bytes[0]); builder->get_widget("dmm2_usb_bytes", dmm_usb_bytes[1]); builder->get_widget("dmm1_num_val", dmm_num_val[0]); builder->get_widget("dmm2_num_val", dmm_num_val[1]); builder->get_widget("dmm1_timeout", dmm_timeout[0]); builder->get_widget("dmm2_timeout", dmm_timeout[1]); builder->get_widget("dmm1_funktion", dmm_funktion[0]); builder->get_widget("dmm2_funktion", dmm_funktion[1]); builder->get_widget("dmm1_range", dmm_range[0]); builder->get_widget("dmm2_range", dmm_range[1]); builder->get_widget("dmm_mtime", dmm_mtime); builder->get_widget("dmm1_loadoptions", dmm_loadoptions[0]); dmm_loadoptions[0]->signal_clicked().connect(sigc::bind(sigc::ptr_fun(load_dmm_options), 0)); builder->get_widget("dmm2_loadoptions", dmm_loadoptions[1]); dmm_loadoptions[1]->signal_clicked().connect(sigc::bind(sigc::ptr_fun(load_dmm_options), 1)); builder->get_widget("dmm1_saveoptions", dmm_saveoptions[0]); dmm_saveoptions[0]->signal_clicked().connect(sigc::bind(sigc::ptr_fun(save_dmm_options), 0)); builder->get_widget("dmm2_saveoptions", dmm_saveoptions[1]); dmm_saveoptions[1]->signal_clicked().connect(sigc::bind(sigc::ptr_fun(save_dmm_options), 1)); builder->get_widget("dmmoptions_save_ok", dmmoptions_save_ok); builder->get_widget("dmmoptions_save_cancel", dmmoptions_save_cancel); builder->get_widget("dmmoptions_save_dialog", dmmoptions_save_dialog); builder->get_widget("dmm1_remote_control", dmm_remote_control[0]); builder->get_widget("dmm2_remote_control", dmm_remote_control[1]); builder->get_widget("dmm1_control_options", dmm_control_options[0]); builder->get_widget("dmm2_control_options", dmm_control_options[1]); builder->get_widget("dmm1_function_control", dmm_function_control[0]); builder->get_widget("dmm2_function_control", dmm_function_control[1]); builder->get_widget("dmm1_DCV", dmm_DCV[0]); builder->get_widget("dmm1_ACV", dmm_ACV[0]); builder->get_widget("dmm1_DCmA", dmm_DCmA[0]); builder->get_widget("dmm1_ACmA", dmm_ACmA[0]); builder->get_widget("dmm1_DCA", dmm_DCA[0]); builder->get_widget("dmm1_ACA", dmm_ACA[0]); builder->get_widget("dmm1_Res", dmm_Res[0]); builder->get_widget("dmm1_Cond", dmm_Cond[0]); builder->get_widget("dmm1_pH", dmm_pH[0]); builder->get_widget("dmm1_Temp", dmm_Temp[0]); builder->get_widget("dmm2_DCV", dmm_DCV[1]); builder->get_widget("dmm2_ACV", dmm_ACV[1]); builder->get_widget("dmm2_DCmA", dmm_DCmA[1]); builder->get_widget("dmm2_ACmA", dmm_ACmA[1]); builder->get_widget("dmm2_DCA", dmm_DCA[1]); builder->get_widget("dmm2_ACA", dmm_ACA[1]); builder->get_widget("dmm2_Res", dmm_Res[1]); builder->get_widget("dmm2_Cond", dmm_Cond[1]); builder->get_widget("dmm2_pH", dmm_pH[1]); builder->get_widget("dmm2_Temp", dmm_Temp[1]); // set diag limits manual or auto diag_autoscalesw->signal_state_changed().connect(sigc::ptr_fun(show_diag_manual_limits)); // Recall options if dmm_typ changed dmm_typ[0]->signal_changed().connect(sigc::ptr_fun(restart_options_x)); dmm_typ[1]->signal_changed().connect(sigc::ptr_fun(restart_options_y)); dmm_timeout[0]->signal_changed().connect(sigc::ptr_fun(preset_mtime)); dmm_timeout[1]->signal_changed().connect(sigc::ptr_fun(preset_mtime)); dmm_name[0]->signal_changed().connect(sigc::bind(sigc::ptr_fun(select_dmm), 0)); dmm_name[1]->signal_changed().connect(sigc::bind(sigc::ptr_fun(select_dmm), 1)); //Show serial options for dmm if RS232C dmm_interface[0]->signal_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_interface_options), 0)); dmm_interface[1]->signal_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_interface_options), 1)); // Show/Hide dmm_control_options, if dmm_remote_control changed dmm_remote_control[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_control_options), 0)); dmm_remote_control[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_control_options), 1)); dmm_DCV[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_ACV[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_DCmA[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_ACmA[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_DCA[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_ACA[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_Res[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_Cond[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_pH[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_Temp[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 0)); dmm_DCV[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_ACV[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_DCmA[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_ACmA[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_DCA[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_ACA[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_Res[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_Cond[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_pH[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); dmm_Temp[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_dmm_function_control), 1)); // Change range options, if function changed dmm_funktion[0]->signal_changed().connect(sigc::bind(sigc::ptr_fun(set_range_options_device), 0)); dmm_funktion[1]->signal_changed().connect(sigc::bind(sigc::ptr_fun(set_range_options_device), 1)); //simulation parameter dmm_simtyp[0]->signal_changed().connect(sigc::bind(sigc::ptr_fun(show_simulation_options), 0)); dmm_simtyp[1]->signal_changed().connect(sigc::bind(sigc::ptr_fun(show_simulation_options), 1)); //linear builder->get_widget("sim1_linoptions", sim_linoptions[0]); builder->get_widget("sim1_slope_switch", sim_slope_switch[0]); builder->get_widget("sim1_slope", sim_slope[0]); builder->get_widget("sim2_linoptions", sim_linoptions[1]); builder->get_widget("sim2_slope_switch", sim_slope_switch[1]); builder->get_widget("sim2_slope", sim_slope[1]); sim_slope_switch[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_simlin_options), 0)); sim_slope_switch[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_simlin_options), 1)); builder->get_widget("sim1_shift_switch", sim_shift_switch[0]); builder->get_widget("sim2_shift_switch", sim_shift_switch[1]); builder->get_widget("sim1_shift", sim_shift[0]); builder->get_widget("sim2_shift", sim_shift[1]); sim_shift_switch[0]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_simlin_options), 0)); sim_shift_switch[1]->signal_state_flags_changed().connect(sigc::bind(sigc::ptr_fun(show_simlin_options), 1)); //exponential builder->get_widget("sim2_exp_options", sim_expoptions); builder->get_widget("sim2_init_sw", sim_init_sw); builder->get_widget("sim2_tc_sw", sim_tc_sw); builder->get_widget("sim2_expshift_sw", sim_expshift_sw); builder->get_widget("sim2_init", sim_init); builder->get_widget("sim2_tc", sim_tc); builder->get_widget("sim2_expshift", sim_expshift); sim_init_sw->signal_state_flags_changed().connect(sigc::ptr_fun(show_simexp_options)); sim_tc_sw->signal_state_changed().connect(sigc::ptr_fun(show_simexp_options)); sim_expshift_sw->signal_state_changed().connect(sigc::ptr_fun(show_simexp_options)); //peak builder->get_widget("sim2_chrom_options", sim_chromoptions); builder->get_widget("sim2_np_sw", sim_np_sw); builder->get_widget("sim2_max_rt_sw", sim_max_rt_sw); builder->get_widget("sim2_bf_sw", sim_bf_sw); builder->get_widget("sim2_drift_sw", sim_drift_sw); builder->get_widget("sim2_np", sim_np); builder->get_widget("sim2_max_rt", sim_max_rt); builder->get_widget("sim2_bf", sim_bf); builder->get_widget("sim2_drift", sim_drift); sim_np_sw->signal_state_flags_changed().connect(sigc::ptr_fun(show_simchrom_options)); sim_max_rt_sw->signal_state_flags_changed().connect(sigc::ptr_fun(show_simchrom_options)); sim_bf_sw->signal_state_flags_changed().connect(sigc::ptr_fun(show_simchrom_options)); sim_drift_sw->signal_state_flags_changed().connect(sigc::ptr_fun(show_simchrom_options)); //UI eval try { builder = Gtk::Builder::create_from_file(UI_EVAL_FILE); } catch (const Glib::FileError & ex) { std::cerr << ex.what() << std::endl; return 1; } builder->get_widget("evaloptions_dialog", evaloptions_dialog); builder->get_widget("evaloptions", evaloptions); builder->get_widget("evaloption_vol", evaloption_vol); builder->get_widget("evaloption_volspeed", evaloption_volspeed); builder->get_widget("evaloption_xtherm", evaloption_xtherm); builder->get_widget("evaloption_ytherm", evaloption_ytherm); builder->get_widget("evaloption_xreziproksw", evaloption_xreziproksw); builder->get_widget("evaloption_yreziproksw", evaloption_yreziproksw); builder->get_widget("evaloption_xlogsw", evaloption_xlogsw); builder->get_widget("evaloption_ylogsw", evaloption_ylogsw); builder->get_widget("diag_funktcolor", diag_funktcolor); builder->get_widget("evaloption_reglin", evaloption_reglin); builder->get_widget("evaloption_integration", evaloption_integration); builder->get_widget("evaloption_diff", evaloption_diff); builder->get_widget("eval_results", eval_results); builder->get_widget("eval_results_view", eval_results_view); builder->get_widget("eval_funktion", eval_funktion); builder->get_widget("evaloption_minpeakscale", evaloption_minpeakscale); builder->get_widget("evaloption_mindiffscale", evaloption_mindiffscale); builder->get_widget("evaloption_show_baseline", evaloption_show_baseline); builder->get_widget("evaloption_show_peakarea", evaloption_show_peakarea); builder->get_widget("evaloption_show_peaklimits", evaloption_show_peaklimits); builder->get_widget ("integration_options", integration_options); evaloption_integration->signal_state_changed().connect(sigc::ptr_fun(show_evaloptions_integration)); //Make directories homedir = getenv("HOME"); confdir = homedir; confdir.append("/.galvani"); workdir = homedir; workdir.append("/galvani"); datadir = workdir; datadir.append("/data"); tmpdir = "/tmp/galvani"; try { if (!fs::exists(workdir)) { fs::create_directory (workdir); fs::copy (PACKAGE_DATA_DIR"/dmm", workdir, fs::copy_options::recursive); } } catch (fs::filesystem_error const& ex) {fehler(ex.what());} try { if (!fs::exists(datadir)) fs::create_directory (datadir); if (!fs::exists(confdir)) fs::create_directory (confdir); if (!fs::exists(tmpdir)) fs::create_directory (tmpdir); } catch (fs::filesystem_error const& ex) {fehler(ex.what());} //Make ini-file ini_filename = confdir + "/galvani.ini"; ini_file.open (ini_filename, std::ios_base::in); if (!ini_file.is_open()) { ini_file.open (ini_filename, std::ios_base::out); try { ini_file << "autosave: "<< autosave << "\n"; ini_file << "autoload: "<< autoload << "\n"; ini_file << "display: "<< show_display << "\n"; } catch (fs::filesystem_error const& ex) {fehler(ex.what());} ini_file.close(); } if (read_ini ("autosave: ") == "1") autosave = true; else autosave = false; if (read_ini ("autoload: ") == "1") autoload = true; else autoload = false; if (read_ini ("display: ") == "1") show_display = true; else show_display = false; if (read_ini ("fullscreen: ") == "1") full_screen = true; else full_screen = false; mainwin_width = get_intstr(read_ini ("width: ")); mainwin_height = get_intstr(read_ini ("height: ")); if (autoload) load_all_options (); menu_options_autosave->set_active(autosave); menu_options_autoload->set_active(autoload); menu_view_display->set_active(show_display); if (full_screen) main_win->maximize (); else // define minimum width and height { if ((mainwin_width > 600) && (mainwin_height > 400)) main_win->resize (mainwin_width, mainwin_height); } ini_file.close(); if (main_win) { kit.run(*main_win); } app_quit(); return 0; } void app_quit() //Quit Program { if (!data_saved) { if (dialog_ok(_("Save data?"))) save_data(); } //Save options autosave = menu_options_autosave->get_active(); if (autosave) save_all_options (); //Save autoload/autosave-status autoload = menu_options_autoload->get_active(); show_display = menu_view_display->get_active(); full_screen = main_win->is_maximized (); mainwin_width = main_win->get_width(); mainwin_height = main_win->get_height(); ini_file.open (ini_filename, std::ios_base::out); try { ini_file << "autosave: "<< autosave << "\n"; ini_file << "autoload: "<< autoload << "\n"; ini_file << "display: "<< show_display << "\n"; ini_file << "fullscreen: "<< full_screen << "\n"; ini_file << "width: "<< mainwin_width << "\n"; ini_file << "height: "<< mainwin_height << "\n"; } catch (fs::filesystem_error const& ex) {fehler(ex.what());} ini_file.close(); //free all pointers if (project) delete project; if (diag) delete diag; if (printjob) delete printjob; return; } std::string read_ini(std::string opt_item) { std::string opt = "", line; int pos; while (!ini_file.eof()) { getline(ini_file,line); pos = line.find (opt_item); if (pos <= line.length()) { opt = line.substr (pos + opt_item.length ()); break; } } return opt; } void about () { int result = about_dialog->run(); about_dialog->hide(); return; } void help () { std::string lcode; std::string doc_dir, doc, error_msg; //locate the help files doc_dir = "/usr/share/doc/galvani/"; lcode = std::locale("").name(); lcode = lcode.substr(0,2); doc_dir += lcode; doc += doc_dir + "/index.html"; if (!fs::exists(doc)) { error_msg = _("Documentation "); error_msg += doc + _(" not found"); fehler(error_msg); } else { doc = "file://" + doc; browser->show(); browser->hide(); browser->show_uri (doc, GDK_CURRENT_TIME); } return; } galvani-v0.38/src/data_rw.cxx0000644000175000017500000002325114713174213016063 0ustar burkardburkard// data_rw.cxx // This file is part of galvani. // Copyright (C) 2020-2024 Burkard Lutz // // 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, see . #include #include #include #include #include #include #include "data_rw.h" #include #define UI_FILE "src/data_rw.ui" using namespace std; void save_data() { int i=0,j, end; double x,y; mw_data val; std::string f_name; ofstream save_file; if (mw.size() == 0) { fehler (_("No data")); file_dialog->hide(); return; } file_dialog->set_title(_("Save data")); file_dialog->set_action (Gtk::FILE_CHOOSER_ACTION_SAVE); file_choose_ok->set_label(_("Save")); file_dialog->set_current_folder(datadir); f_name = project->filename; if (f_name == "") f_name = "messdaten.dat"; file_dialog->set_current_name(f_name); if (!filefilter_dat) { filefilter_dat = Gtk::FileFilter::create(); filefilter_dat->add_pattern("*.dat"); } file_dialog->set_filter(filefilter_dat); int result = file_dialog->run(); if (result == Gtk::RESPONSE_CANCEL) { file_dialog->hide(); return; } filename = file_dialog->get_filename(); save_file.open (filename); //create file (CSV) if (!save_file.is_open()) { fehler (_("Error writing file")); file_dialog->hide(); return; } //write data try { save_file <datum<<"\n"; save_file <<"Projekt-Titel: "<title<<"\n"; save_file <<"Messfunktion x: "<funktion_x<<"\n"; save_file <<"Messfunktion y: "<funktion_y<<"\n"; save_file <<"Einheit x: "<unit_x<<"\n"; save_file <<"Einheit y: "<unit_y<<"\n"; save_file <<"Daten x: "<comment<<"\n"<<"#"<<"\n"; //Delimiter save_file <<"Messdaten: "<<"\n"; for (unsigned long long int i=0; ihide(); return; } file_dialog->hide(); data_saved = true; return; } void open_datafile() { mw_data val; string f_name, line, xstr, ystr, dezimal; size_t pos,dotpos; if (!data_saved) { if (dialog_ok(_("Save data?"))) save_data(); } file_dialog->set_title(_("Import data")); file_dialog->set_action (Gtk::FILE_CHOOSER_ACTION_OPEN); file_choose_ok->set_label(_("Open")); file_dialog->set_current_folder(datadir); if (!filefilter_dat) { filefilter_dat = Gtk::FileFilter::create(); filefilter_dat->add_pattern("*.dat"); } file_dialog->set_filter(filefilter_dat); int result = file_dialog->run(); if (result != Gtk::RESPONSE_ACCEPT) { file_dialog->hide(); return; } f_name = file_dialog->get_filename(); open_file.open (f_name); //import data if (open_file.is_open()) { getline(open_file,line); if (line != file_id) { fehler (_("No Galvani data file")); open_file.close(); file_dialog->hide(); return; } project->datum = read_item("Datum der Messung: "); project->title = read_item("Projekt-Titel: "); project->filename = f_name; project->funktion_x = read_item("Messfunktion x: "); project->funktion_y = read_item("Messfunktion y: "); project->unit_x = read_item("Einheit x: "); project->unit_y = read_item("Einheit y: "); dmm[0].dmm_typ = get_dmmtyp (read_item("Daten x: ")); if (dmm[0].dmm_typ == DMM) dmm[0].dmm_name = read_item("Messgerät x: "); else dmm[0].dmm_name = ""; dmm[1].dmm_typ = get_dmmtyp(read_item("Daten y: ")); if ((dmm[1].dmm_typ == DMM) || (dmm[1].dmm_typ == DEVICE)) dmm[1].dmm_name = read_item("Messgerät y: "); else dmm[1].dmm_name = ""; if (dmm[1].dmm_typ == PH) // pH simulation { ha.name = read_item("ha: "); dmm[1].ca = get_dbstr (read_item("ca: ")); dmm[1].va = get_dbstr (read_item("va: ")); dmm[1].cb = get_dbstr (read_item("cb: ")); tit_volspeed = get_dbstr (read_item("speed: ")); dmm[1].dmm_typ = PH; } project->comment = read_item("Beschreibung: "); //end: "#" (Delimiter) while ((line.find ("#")>0) && (!open_file.eof())) { getline(open_file,line); if (line.find ("#")==0) break; project->comment.append(line); project->comment.append("\n"); } read_item("Messdaten: "); //values follow // set read position reset_mw(); mi= 0; while (!open_file.eof()) { getline(open_file,line); pos = line.find (","); if (pos > line.length()) break; xstr = line.substr(0,pos); val.x = get_dbstr (xstr); ystr = line.substr(pos+1); val.y = get_dbstr (ystr); new_val(val); } if ((!is_known_function (project->funktion_x)) || (!is_known_function (project->funktion_y))) translate_functions (); if (project->funktion_x != _("Time")) dmm[0].m_funkt = project->funktion_x; dmm[1].m_funkt = project->funktion_y; open_file.close(); } else fehler (_("Error opening file")); file_dialog->hide(); define_project (); reset_evaloptions (); show_diag (); menu_eval_data->set_sensitive (true); data_saved = true; return; } bool is_known_function (std::string funct) { bool known; known = false; for (int i=0; iset_text (project->funktion_x); //functions read from file file_function_y->set_text (project->funktion_y); function_x->set_active_text(project->funktion_x); //show function if known function_y->set_active_text(project->funktion_y); int result = map_func->run(); switch(result) { case(Gtk::RESPONSE_ACCEPT): { set_messfunkt (0, function_x->get_active_text()); //correct functions set_messfunkt (1, function_y->get_active_text()); break; } case(Gtk::RESPONSE_CANCEL): { break; } } map_func->hide(); return; } ////////// export Diagram ////////////////// void export_diag() { std:string f_name, img_filename, ext; int pos; Cairo::RefPtr svg; Cairo::RefPtr svg_context; Glib::RefPtr img; pos = filename.find_last_of("/"); if (pos <= filename.length()) f_name = filename.erase(0,pos+1); pos = filename.find("."); if (pos <= filename.length()) { f_name = filename.erase(pos+1); f_name = f_name.append("png"); } else f_name = "messdaten.png"; file_dialog->set_action (Gtk::FILE_CHOOSER_ACTION_SAVE); file_dialog->set_title(_("Export diagram")); file_choose_ok->set_label(_("Save")); file_dialog->set_current_folder(datadir); file_dialog->set_current_name(f_name); file_dialog->set_tooltip_text (_("filetype ist defined by extension")); if (!filefilter_img) { filefilter_img = Gtk::FileFilter::create(); filefilter_img->add_pattern("*.png"); filefilter_img->add_pattern("*.svg"); } file_dialog->set_filter(filefilter_img); int result = file_dialog->run(); if (result == Gtk::RESPONSE_CANCEL) { file_dialog->hide(); return; } img_filename = file_dialog->get_filename(); pos = img_filename.find("."); ext = img_filename.substr(pos); if (ext == ".svg") { try { svg = Cairo::SvgSurface::create(img_filename, diag->width, diag->height); svg_context = Cairo::Context::create (svg); svg_context->set_source (diag->diag_sf, 0, 0); svg_context->paint (); } catch (const Glib::FileError & ex) { fehlercode = ex.what(); fehler(fehlercode); } } else { try { img = Gdk::Pixbuf::create(diag->diag_sf, 0, 0, diag->width, diag->height); img->save(img_filename,"png"); } catch (const Gdk::PixbufError & ex) { fehlercode = ex.what(); fehler(fehlercode); } catch (const Glib::FileError & ex) { fehlercode = ex.what(); fehler(fehlercode); } } file_dialog->hide(); return; } ///////////////////// Read Items from data file /////////////////// typ get_dmmtyp(std::string t) { typ dmmtyp; if (t == "0") dmmtyp = TIME; else if (t == "1") dmmtyp = DMM; else if (t == "2") dmmtyp = DEVICE; else if (t == "3") dmmtyp = LINEAR; else if (t == "4") dmmtyp = EXP; else if (t == "5") dmmtyp = PH; else if (t == "6") dmmtyp = PEAK; else dmmtyp = DMM; return dmmtyp; } std::string read_item(std::string opt_item) { std::string opt = "", line; int pos; open_file.seekg(0,std::ios::beg); while (open_file.peek() != EOF) { getline(open_file,line); pos = line.find (opt_item); if (pos <= line.length()) { opt = line.substr (pos + opt_item.length ()); break; } } return opt; }galvani-v0.38/po/0000755000175000017500000000000014713174213013542 5ustar burkardburkardgalvani-v0.38/po/LINGUAS0000644000175000017500000000006314713174213014566 0ustar burkardburkard# please keep this list sorted alphabetically # de galvani-v0.38/po/de.po0000644000175000017500000010256314713174213014501 0ustar burkardburkard# German translation for Galvani. # Copyright (C) 2022 Burkard Lutz. # This file is distributed under the same license as the PACKAGE package. # Burkard Lutz , 2022-2024. # msgid "" msgstr "" "Project-Id-Version: galvani\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-03 11:55+0100\n" "PO-Revision-Date: 2024-11-03 11:46+0100\n" "Last-Translator: Burkard Lutz \n" "Language-Team: LANGUAGE \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Gtranslator 42.0\n" #: src/data_rw.cxx:43 src/eval.cxx:39 src/eval.cxx:52 msgid "No data" msgstr "Keine Daten vorhanden" #: src/data_rw.cxx:47 src/ui/galvani.ui:539 msgid "Save data" msgstr "Daten speichern" #: src/data_rw.cxx:50 src/data_rw.cxx:295 src/options.cxx:1228 #: src/ui/data_rw.ui:50 src/ui/galvani.ui:185 src/ui/options.ui:45 #: src/ui/options.ui:1177 src/ui/options.ui:2964 msgid "Save" msgstr "Speichern" #: src/data_rw.cxx:72 msgid "Error writing file" msgstr "Datei kann nicht geschrieben werden" #: src/data_rw.cxx:134 src/main.cc:597 src/mess.cxx:1934 src/mess.cxx:2457 msgid "Save data?" msgstr "Daten speichern?" #: src/data_rw.cxx:136 msgid "Import data" msgstr "Messdaten importieren" #: src/data_rw.cxx:138 src/options.cxx:1306 src/ui/galvani.ui:175 msgid "Open" msgstr "Öffnen" #: src/data_rw.cxx:164 msgid "No Galvani data file" msgstr "Keine Galvani-Datei" #: src/data_rw.cxx:216 src/eval.cxx:61 src/eval.cxx:119 src/main.cc:60 #: src/main.cc:96 src/mess.cxx:1817 src/mess.cxx:1952 src/mess.cxx:2150 #: src/mess.cxx:2160 src/mess.cxx:2238 src/mess.cxx:2298 src/mess.cxx:2505 #: src/mess.cxx:2508 src/options.cxx:257 src/options.cxx:660 #: src/options.cxx:841 src/options.cxx:845 src/options.cxx:1187 #: src/options.cxx:1691 src/ui/data_rw.ui:196 src/ui/galvani.ui:1044 #: src/ui/options.ui:1074 msgid "Time" msgstr "Zeit" #: src/data_rw.cxx:220 msgid "Error opening file" msgstr "Datei kann nicht gelesen werden" #: src/data_rw.cxx:294 src/ui/galvani.ui:205 msgid "Export diagram" msgstr "Diagramm exportieren" #: src/data_rw.cxx:298 msgid "filetype ist defined by extension" msgstr "Erweiterung legt den Dateityp fest" #: src/eval.cxx:68 src/eval.cxx:73 src/main.cc:61 src/main.cc:96 #: src/mess.cxx:63 src/mess.cxx:341 src/mess.cxx:503 src/mess.cxx:594 #: src/mess.cxx:663 src/mess.cxx:2161 src/mess.cxx:2176 src/options.cxx:598 #: src/options.cxx:984 src/options.cxx:1211 src/ui/data_rw.ui:197 #: src/ui/data_rw.ui:255 src/ui/galvani.ui:1045 src/ui/galvani.ui:1106 #: src/ui/options.ui:1900 src/ui/options.ui:2013 src/ui/options.ui:3738 #: src/ui/options.ui:3852 msgid "DC Voltage" msgstr "Gleichspannung" #: src/eval.cxx:77 src/ui/eval.ui:373 src/ui/eval.ui:550 msgid "none" msgstr "keine" #: src/eval.cxx:137 src/options.cxx:732 msgid "Reset options of current page?" msgstr "Einstellungen der Auswahlseite auf Standardwerte zurücksetzen?" #: src/eval.cxx:205 src/eval.cxx:228 src/eval.cxx:251 src/eval.cxx:274 msgid "Operation cannot be executed" msgstr "Operation kann nicht ausgeführt werden" #: src/eval.cxx:386 msgid "Volume" msgstr "Volumen" #: src/eval.cxx:387 src/eval.cxx:398 src/main.cc:97 src/mess.cxx:356 #: src/mess.cxx:510 src/mess.cxx:599 src/mess.cxx:647 src/mess.cxx:1839 #: src/mess.cxx:2166 src/mess.cxx:2181 src/options.cxx:605 src/options.cxx:1020 #: src/ui/data_rw.ui:204 src/ui/data_rw.ui:262 src/ui/galvani.ui:1052 #: src/ui/galvani.ui:1113 src/ui/options.ui:1907 src/ui/options.ui:2445 #: src/ui/options.ui:3745 src/ui/options.ui:4284 msgid "Temperature" msgstr "Temperatur" #: src/eval.cxx:390 src/eval.cxx:391 src/eval.cxx:401 src/eval.cxx:402 #: src/main.cc:97 src/mess.cxx:353 src/mess.cxx:511 src/mess.cxx:512 #: src/mess.cxx:598 src/mess.cxx:670 src/mess.cxx:2163 src/mess.cxx:2178 #: src/options.cxx:602 src/options.cxx:1000 src/ui/data_rw.ui:201 #: src/ui/data_rw.ui:259 src/ui/galvani.ui:1049 src/ui/galvani.ui:1110 #: src/ui/options.ui:1904 src/ui/options.ui:2301 src/ui/options.ui:3742 #: src/ui/options.ui:4140 msgid "Resistance" msgstr "Widerstand" #: src/eval.cxx:390 src/eval.cxx:391 src/eval.cxx:401 src/eval.cxx:402 #: src/main.cc:97 src/mess.cxx:354 src/mess.cxx:514 src/mess.cxx:671 #: src/mess.cxx:2164 src/mess.cxx:2179 src/options.cxx:603 src/options.cxx:1010 #: src/ui/data_rw.ui:202 src/ui/data_rw.ui:260 src/ui/galvani.ui:1050 #: src/ui/galvani.ui:1111 src/ui/options.ui:1905 src/ui/options.ui:2349 #: src/ui/options.ui:3743 src/ui/options.ui:4188 msgid "Conductivity" msgstr "Leitfähigkeit" #: src/eval.cxx:450 msgid "Regression cannot be computed - no data available" msgstr "Regression kann nicht berechnet werden - keine Daten vorhanden" #: src/eval.cxx:956 src/ui/eval.ui:49 src/ui/eval.ui:752 msgid "Linear Regression" msgstr "Lineare Regression" #: src/eval.cxx:957 msgid "Slope: " msgstr "Steigung: " #: src/eval.cxx:959 msgid "Intercept: " msgstr "Achsenabschnitt: " #: src/eval.cxx:967 src/ui/eval.ui:796 msgid "Differential Function" msgstr "Differential-Funktion" #: src/eval.cxx:968 msgid "No Maxima found" msgstr "Keine Maxima gefunden" #: src/eval.cxx:971 msgid "Maxima:" msgstr "Maxima:" #: src/eval.cxx:982 src/ui/eval.ui:890 msgid "Peak-Integration" msgstr "Peak-Integration" #: src/eval.cxx:983 msgid "No Peaks found" msgstr "Keine Peaks gefunden" #: src/eval.cxx:986 msgid "Number" msgstr "Anzahl" #: src/eval.cxx:989 msgid "Peak Maximum" msgstr "Peak Maximum" #: src/eval.cxx:991 msgid "Peak Area" msgstr "Peakfläche" #: src/eval.cxx:993 msgid "Percent" msgstr "Prozent" #: src/main.cc:96 src/mess.cxx:342 src/mess.cxx:505 src/mess.cxx:595 #: src/mess.cxx:663 src/mess.cxx:2161 src/mess.cxx:2176 src/options.cxx:599 #: src/options.cxx:984 src/ui/data_rw.ui:198 src/ui/data_rw.ui:256 #: src/ui/galvani.ui:1046 src/ui/galvani.ui:1107 src/ui/options.ui:1901 #: src/ui/options.ui:2061 src/ui/options.ui:3739 src/ui/options.ui:3900 msgid "AC Voltage" msgstr "Wechselspannung" #: src/main.cc:96 src/mess.cxx:343 src/mess.cxx:507 src/mess.cxx:596 #: src/mess.cxx:664 src/mess.cxx:2162 src/mess.cxx:2177 src/options.cxx:600 #: src/options.cxx:993 src/ui/data_rw.ui:199 src/ui/data_rw.ui:257 #: src/ui/galvani.ui:1047 src/ui/galvani.ui:1108 src/ui/options.ui:1902 #: src/ui/options.ui:3740 msgid "DC Current" msgstr "Gleichstrom" #: src/main.cc:96 src/mess.cxx:348 src/mess.cxx:509 src/mess.cxx:597 #: src/mess.cxx:664 src/mess.cxx:2162 src/mess.cxx:2177 src/options.cxx:601 #: src/options.cxx:993 src/ui/data_rw.ui:200 src/ui/data_rw.ui:258 #: src/ui/galvani.ui:1048 src/ui/galvani.ui:1109 src/ui/options.ui:1903 #: src/ui/options.ui:3741 msgid "AC Current" msgstr "Wechselstrom" #: src/main.cc:97 src/mess.cxx:355 src/mess.cxx:513 src/mess.cxx:600 #: src/mess.cxx:653 src/mess.cxx:2180 src/options.cxx:604 src/options.cxx:1015 #: src/ui/data_rw.ui:203 src/ui/data_rw.ui:261 src/ui/galvani.ui:1051 #: src/ui/galvani.ui:1112 src/ui/options.ui:1906 src/ui/options.ui:2397 #: src/ui/options.ui:2764 src/ui/options.ui:3744 src/ui/options.ui:4236 msgid "pH" msgstr "pH" #: src/main.cc:99 src/ui/galvani.ui:1171 msgid "Hydrochloric acid" msgstr "Salzsäure" #: src/main.cc:100 src/ui/galvani.ui:1172 msgid "Hydrobromic acid" msgstr "Bromwasserstoffsäure" #: src/main.cc:101 src/ui/galvani.ui:1173 msgid "Bromic acid" msgstr "Bromsäure" #: src/main.cc:102 src/ui/galvani.ui:1185 msgid "Acetic acid" msgstr "Essigsäure" #: src/main.cc:103 src/ui/galvani.ui:1174 msgid "Hypochloric acid" msgstr "Hypochlorige Säure" #: src/main.cc:104 src/ui/galvani.ui:1175 msgid "Chloric acid" msgstr "Chlorsäure" #: src/main.cc:105 src/ui/galvani.ui:1176 msgid "Hydrofluoric acid" msgstr "Flusssäure" #: src/main.cc:106 src/ui/galvani.ui:1177 msgid "Hydroiodic acid" msgstr "Hypoiodige Säure" #: src/main.cc:107 src/ui/galvani.ui:1178 msgid "Iodic acid" msgstr "Iodsäure" #: src/main.cc:108 src/ui/galvani.ui:1179 msgid "Nitrous acid" msgstr "Salpetrige Säure" #: src/main.cc:109 src/ui/galvani.ui:1180 msgid "Nitric acid" msgstr "Salpetersäure" #: src/main.cc:110 src/ui/galvani.ui:1183 msgid "Phosphoric acid" msgstr "Phosphorsäure" #: src/main.cc:111 src/ui/galvani.ui:1181 msgid "Sulfurous acid" msgstr "Schweflige Säure" #: src/main.cc:112 src/ui/galvani.ui:1182 msgid "Sulfuric acid" msgstr "Schwefelsäure" #: src/main.cc:113 src/ui/galvani.ui:1184 msgid "Formic acid" msgstr "Methansäure" #: src/main.cc:114 src/ui/galvani.ui:1186 msgid "Chloroacetic acid" msgstr "Monochloressigsäure" #: src/main.cc:115 src/ui/galvani.ui:1187 msgid "Dichloroacetic acid" msgstr "Dichloressigsäure" #: src/main.cc:116 src/ui/galvani.ui:1188 msgid "Trichloroacetic acid" msgstr "Trichloressigsäure" #: src/main.cc:117 src/ui/galvani.ui:1189 msgid "Benzoic acid" msgstr "Benzoesäure" #: src/main.cc:118 src/ui/galvani.ui:1190 msgid "Oxalic acid" msgstr "Oxalsäure" #: src/main.cc:119 src/ui/galvani.ui:1191 msgid "Tartaric acid" msgstr "Weinsäure" #: src/main.cc:120 src/ui/galvani.ui:1192 msgid "Citric acid" msgstr "Zitronensäure" #: src/main.cc:670 msgid "Documentation " msgstr "Dokumentation" #: src/main.cc:671 msgid " not found" msgstr " nicht gefunden" #: src/mess.cxx:276 src/mess.cxx:302 src/mess.cxx:767 src/mess.cxx:789 #: src/mess.cxx:2289 src/mess.cxx:2303 msgid "Device unreachable: " msgstr "Keine Verbindung zu Messgerät: " #: src/mess.cxx:288 msgid "Transmission error from " msgstr "Übertragungsfehler von" #: src/mess.cxx:359 msgid "Funktion not set: " msgstr "Funktion nicht gesetzt" #: src/mess.cxx:477 msgid "Device Error" msgstr "Messgerät: Bereichsüberlauf" #: src/mess.cxx:518 src/mess.cxx:571 msgid "unknown function" msgstr "unbekannte Funktion" #: src/mess.cxx:552 msgid "unknown unit" msgstr "unbekannte Einheit" #: src/mess.cxx:691 msgid "Transmission error: " msgstr "Übertragungsfehler: " #: src/mess.cxx:691 msgid "Measurement aborted" msgstr "Messung abgebrochen" #: src/mess.cxx:737 msgid "Multimeter function" msgstr "Messfunktion des Multimeters" #: src/mess.cxx:741 msgid "differs from Project function" msgstr "weicht von der im Projekt eingestellten Messfunktion ab" #: src/mess.cxx:745 msgid "- continue measurement?" msgstr "- Messung fortsetzen?" #: src/mess.cxx:1307 msgid "Not enough space to calculate splines" msgstr "Nicht genügend Speicherplatz zur Berechnung der Splines" #: src/mess.cxx:1360 msgid "Error calculating splines" msgstr "Fehler bei der Berechnung der Splines" #: src/mess.cxx:1496 msgid "Derivative with Gauss model" msgstr "Ableitung mit Gauss-Modell" #: src/mess.cxx:1497 msgid "Derivative" msgstr "Ableitung" #: src/mess.cxx:1958 src/mess.cxx:1976 msgid "device not configured" msgstr "Gerät nicht konfiguriert" #: src/mess.cxx:1964 src/mess.cxx:1983 src/mess.cxx:2001 msgid "Simulation (linear)" msgstr "Simulation (linear)" #: src/mess.cxx:1984 msgid "Simulation (exponential)" msgstr "Simulation (exponentiell)" #: src/mess.cxx:1987 msgid "Simulation (pH)" msgstr "Simulation (pH)" #: src/mess.cxx:1990 msgid "Simulation (chromatogram)" msgstr "Simulation (Chromatogramm)" #: src/mess.cxx:2067 msgid "No titration data set" msgstr "Keine Daten für die Simulation der Titrationskurve" #: src/mess.cxx:2244 src/mess.cxx:2253 src/mess.cxx:2266 src/mess.cxx:2275 msgid "Data channel" msgstr "Messdaten Kanal" #: src/mess.cxx:2247 src/mess.cxx:2269 msgid "Device name not set" msgstr "Gerätename nicht angegeben" #: src/mess.cxx:2256 src/mess.cxx:2278 msgid "Interface not set" msgstr "Interface nicht angegeben" #: src/mess.cxx:2450 msgid "Delete diagram?" msgstr "Diagramm löschen?" #: src/mess.cxx:2483 msgid "Maximum number of values reached" msgstr "Maximale Anzahl an Messwerten erreicht" #: src/options.cxx:197 src/options.cxx:785 src/ui/options.ui:549 msgid "cross" msgstr "Kreuz" #: src/options.cxx:198 src/options.cxx:790 src/ui/options.ui:551 msgid "square" msgstr "Quadrat" #: src/options.cxx:199 src/options.cxx:791 src/ui/options.ui:550 msgid "circle" msgstr "Kreis" #: src/options.cxx:200 src/options.cxx:792 src/ui/options.ui:552 msgid "diamond" msgstr "Raute" #: src/options.cxx:201 src/ui/options.ui:548 msgid "no symbol" msgstr "kein Symbol" #: src/options.cxx:204 src/options.cxx:797 src/ui/options.ui:569 msgid "filled" msgstr "gefüllt" #: src/options.cxx:205 src/options.cxx:788 src/ui/options.ui:568 msgid "outline" msgstr "Umriss" #: src/options.cxx:207 src/options.cxx:801 src/ui/options.ui:630 msgid "dashed" msgstr "gestrichelt" #: src/options.cxx:208 src/options.cxx:802 src/ui/options.ui:631 msgid "dotted" msgstr "punktiert" #: src/options.cxx:209 src/ui/options.ui:629 msgid "solid" msgstr "durchgehend" #: src/options.cxx:211 src/options.cxx:806 src/ui/options.ui:613 msgid "line" msgstr "Linie" #: src/options.cxx:212 src/options.cxx:811 src/ui/options.ui:614 msgid "curve" msgstr "Kurve" #: src/options.cxx:213 src/ui/options.ui:612 msgid "no connection" msgstr "Keine Verbindung" #: src/options.cxx:275 src/options.cxx:647 src/options.cxx:661 #: src/options.cxx:680 src/ui/options.ui:1075 src/ui/options.ui:2744 msgid "Digitalmultimeter" msgstr "Digitalmultimeter" #: src/options.cxx:334 src/options.cxx:681 src/options.cxx:891 #: src/ui/options.ui:2746 msgid "Device" msgstr "Messgerät" #: src/options.cxx:345 src/options.cxx:645 src/options.cxx:847 #: src/ui/options.ui:1076 src/ui/options.ui:2745 msgid "Simulation" msgstr "Simulation" #: src/options.cxx:354 src/options.cxx:373 src/options.cxx:381 #: src/options.cxx:665 src/ui/options.ui:1091 src/ui/options.ui:2761 msgid "Linear" msgstr "Linear" #: src/options.cxx:355 src/options.cxx:374 src/options.cxx:411 #: src/options.cxx:853 src/ui/options.ui:2762 msgid "Exponential" msgstr "Exponentiell" #: src/options.cxx:356 src/options.cxx:375 src/options.cxx:451 #: src/options.cxx:863 src/ui/options.ui:2763 msgid "Chromatogram" msgstr "Chromatogramm" #: src/options.cxx:1247 src/options.cxx:1430 msgid "Error writing File" msgstr "Datei kann nicht geschrieben werden" #: src/options.cxx:1332 msgid "No Galvani DMM configuration file" msgstr "Keine Galvani DMM-Konfigurationsdatei" #: src/options.cxx:1395 msgid "Error reading File" msgstr "Datei kann nicht gelesen werden" #: src/options.cxx:1564 msgid "No Galvani Configuration File" msgstr "Keine Galvani-Konfigurationsdatei" #: src/options.cxx:1689 msgid "Error Reading Configuration File" msgstr "Konfigurationsdatei kann nicht gelesen werden" #: src/options.cxx:1735 src/options.cxx:1742 msgid "Conversion to double: " msgstr "Umwandlung in Fließkomma-Zahl:" #: src/options.cxx:1761 src/options.cxx:1768 msgid "Conversion to integer: " msgstr "Umwandlung in Ganzzahl:" #: src/options.cxx:1786 msgid "Conversion to bool: " msgstr "Umwandlung in boolesche Variable:" #: src/print.cxx:37 msgid "Page Elements" msgstr "Seitenelemente" #: src/print.cxx:99 msgid "Title" msgstr "Titel" #: src/print.cxx:114 msgid "Comment" msgstr "Beschreibung" #: src/print.cxx:129 src/ui/galvani.ui:394 src/ui/options.ui:1020 msgid "Diagram" msgstr "Diagramm" #: src/print.cxx:144 msgid "Evaluation" msgstr "Auswertung" #: src/print.cxx:245 src/print.cxx:421 msgid "Peak-Integration:" msgstr "Peak-Integration" #: src/print.cxx:250 src/print.cxx:430 msgid "Linear Regression:" msgstr "Lineare Regression" #: src/print.cxx:435 msgid "Differential Function:" msgstr "Differentialfunktion" #: src/ui/data_rw.ui:19 src/ui/options.ui:17 msgid "Choose File" msgstr "Datei auswählen" #: src/ui/data_rw.ui:35 src/ui/data_rw.ui:105 src/ui/eval.ui:172 #: src/ui/galvani.ui:815 src/ui/galvani.ui:939 src/ui/options.ui:31 #: src/ui/options.ui:288 msgid "Cancel" msgstr "Abbrechen" #: src/ui/data_rw.ui:89 msgid "Mapping of diagram functions" msgstr "Zuordnung der Diagrammfunktionen" #: src/ui/data_rw.ui:119 src/ui/eval.ui:186 src/ui/galvani.ui:97 #: src/ui/galvani.ui:829 src/ui/galvani.ui:953 src/ui/options.ui:302 msgid "OK" msgstr "OK" #: src/ui/data_rw.ui:149 msgid "Select appropiate function" msgstr "Wählen Sie eine geeignete Funktion aus" #: src/ui/data_rw.ui:171 src/ui/galvani.ui:1030 msgid "Function X-Axis: " msgstr "Funktion X-Achse: " #: src/ui/data_rw.ui:205 msgid "Wavelength" msgstr "Wellenlänge" #: src/ui/data_rw.ui:230 src/ui/galvani.ui:1092 msgid "Function Y-Axis: " msgstr "Funktion Y-Achse: " #: src/ui/data_rw.ui:263 msgid "Absorption" msgstr "Absorption" #: src/ui/eval.ui:7 msgid "Data Evaluation" msgstr "Datenauswertung" #: src/ui/eval.ui:20 msgid "Close" msgstr "Schließen" #: src/ui/eval.ui:141 msgid "Data evaluation" msgstr "Datenauswertung" #: src/ui/eval.ui:157 src/ui/options.ui:273 msgid "Reset" msgstr "Zurücksetzen" #: src/ui/eval.ui:241 msgid "Channel X:" msgstr "Kanal X:" #: src/ui/eval.ui:275 msgid "Titrator Volume" msgstr "Titrator-Volumen" #: src/ui/eval.ui:291 msgid "Time -> Volume" msgstr "Zeit -> Volumen" #: src/ui/eval.ui:356 src/ui/eval.ui:533 msgid "Thermocouple" msgstr "Thermoelement" #: src/ui/eval.ui:404 src/ui/eval.ui:581 msgid "Inversion" msgstr "Umkehrung" #: src/ui/eval.ui:451 src/ui/eval.ui:628 msgid "Logarithm" msgstr "Logarithmus" #: src/ui/eval.ui:499 msgid "Channel Y:" msgstr "Kanal Y" #: src/ui/eval.ui:673 msgid "" "Data\n" "Transformation" msgstr "" "Daten\n" "Transformation" #: src/ui/eval.ui:706 msgid "Function Graph" msgstr "Funktionsgraph" #: src/ui/eval.ui:724 msgid "Colour of Function Graph" msgstr "Farbe des Funktionsgraphen" #: src/ui/eval.ui:825 src/ui/eval.ui:919 msgid "Minimum:" msgstr "Minimum:" #: src/ui/eval.ui:838 msgid "Percent of maximum derivative" msgstr "Prozent des Maximalwert des Differentialquotienten" #: src/ui/eval.ui:862 src/ui/eval.ui:955 msgid "%" msgstr "%" #: src/ui/eval.ui:932 msgid "Percent of Y-scale" msgstr "Prozent der Y-Skala" #: src/ui/eval.ui:988 msgid "Show Baseline" msgstr "Basislinie anzeigen" #: src/ui/eval.ui:1031 msgid "Show Peak Limits" msgstr "Peakgrenzen anzeigen" #: src/ui/eval.ui:1075 msgid "Show Peak Area" msgstr "Peakfläche anzeigen" #: src/ui/eval.ui:1129 msgid "Functions" msgstr "Funktionen" #: src/ui/galvani.ui:21 msgid "Error Message" msgstr "Fehlermeldung" #: src/ui/galvani.ui:80 msgid "" "Data logging from digital Devices\n" "Evaluation and Simulation of Measurement data" msgstr "" "Messdatenerfassung von Digitalmultimetern und digitalen Messgeräten\n" "Auswertung von Messdaten und Simulation von Messdiagrammen" #: src/ui/galvani.ui:155 msgid "_File" msgstr "_Datei" #: src/ui/galvani.ui:165 msgid "New project" msgstr "Neues Projekt" #: src/ui/galvani.ui:166 msgid "New" msgstr "Neu" #: src/ui/galvani.ui:174 msgid "Read data from file" msgstr "Messdaten aus Datei importieren" #: src/ui/galvani.ui:184 msgid "Save data to file" msgstr "Daten speichern" #: src/ui/galvani.ui:194 msgid "Export" msgstr "Exportieren" #: src/ui/galvani.ui:204 msgid "Save diagram as PNG, SVG or EPS-File" msgstr "Diagramm als Bild (PNG, SVG, EPS) speichern" #: src/ui/galvani.ui:224 msgid "Print report" msgstr "Bericht drucken" #: src/ui/galvani.ui:225 msgid "Print" msgstr "Drucken" #: src/ui/galvani.ui:240 msgid "Quit" msgstr "Beenden" #: src/ui/galvani.ui:253 msgid "_View" msgstr "_Ansicht" #: src/ui/galvani.ui:263 msgid "Show measurement values in display" msgstr "Messdaten numerisch im Display anzeigen" #: src/ui/galvani.ui:264 msgid "Display" msgstr "Display" #: src/ui/galvani.ui:278 msgid "_Measurement" msgstr "_Messung" #: src/ui/galvani.ui:288 msgid "New measurement" msgstr "Neue Messung" #: src/ui/galvani.ui:296 msgid "Start measurement" msgstr "Messung starten" #: src/ui/galvani.ui:305 msgid "Start with timer" msgstr "Mit Timer starten" #: src/ui/galvani.ui:313 msgid "Cancel measurement" msgstr "Messung abbrechen" #: src/ui/galvani.ui:321 msgid "Stop measurement" msgstr "Messung anhalten" #: src/ui/galvani.ui:330 msgid "End measurement" msgstr "Messung beenden" #: src/ui/galvani.ui:342 msgid "_Evaluation" msgstr "_Auswertung" #: src/ui/galvani.ui:352 msgid "Evaluate measurement data" msgstr "Messdaten auswerten" #: src/ui/galvani.ui:353 msgid "Data" msgstr "Messdaten" #: src/ui/galvani.ui:365 msgid "_Settings" msgstr "_Einstellungen" #: src/ui/galvani.ui:375 msgid "Settings for data channel 1 (X)" msgstr "Einstellungen für Kanal 1 (X)" #: src/ui/galvani.ui:376 msgid "Data channel X" msgstr "Messdaten Kanal X" #: src/ui/galvani.ui:384 msgid "Settings for data channel 2 (Y)" msgstr "Einstellungen für Kanal 2 (Y)" #: src/ui/galvani.ui:385 msgid "Data channel Y" msgstr "Messdaten Kanal Y" #: src/ui/galvani.ui:393 msgid "Settings for data plot" msgstr "Diagramm-Einstellungen" #: src/ui/galvani.ui:408 msgid "Save all options to configuration file" msgstr "Alle aktuellen Einstellungen speichern" #: src/ui/galvani.ui:409 msgid "Save options" msgstr "Einstellungen speichern" #: src/ui/galvani.ui:417 msgid "Load all options from configuration file" msgstr "Gespeicherte Einstellungen laden" #: src/ui/galvani.ui:418 msgid "Load options" msgstr "Einstellungen laden" #: src/ui/galvani.ui:426 msgid "Load options automatically at programm start" msgstr "Einstellungen beim Programmstart laden" #: src/ui/galvani.ui:427 msgid "AutoLoad options" msgstr "Einstellungen automatisch laden" #: src/ui/galvani.ui:435 msgid "Save options automatically at programm end" msgstr "Einstellungen beim Programmende speichern" #: src/ui/galvani.ui:436 msgid "AutoSave options" msgstr "Einstellungen automatisch speichern" #: src/ui/galvani.ui:449 msgid "_Help" msgstr "_Hilfe" #: src/ui/galvani.ui:500 msgid "New Project" msgstr "Neues Projekt" #: src/ui/galvani.ui:513 msgid "Edit Project settings" msgstr "Projekteinstellungen bearbeiten" #: src/ui/galvani.ui:526 msgid "Import data from file" msgstr "Messdaten importieren" #: src/ui/galvani.ui:552 msgid "Export Diagram" msgstr "Diagramm exportieren" #: src/ui/galvani.ui:565 msgid "Print Report" msgstr "Bericht drucken" #: src/ui/galvani.ui:578 msgid "New Measurement" msgstr "Neue Messung" #: src/ui/galvani.ui:592 msgid "Start Measurement" msgstr "Messung starten" #: src/ui/galvani.ui:607 msgid "Start Timer" msgstr "Timer starten" #: src/ui/galvani.ui:620 msgid "Cancel Measurement" msgstr "Messung abbrechen" #: src/ui/galvani.ui:633 msgid "Stop Measurement" msgstr "Messung anhalten" #: src/ui/galvani.ui:648 msgid "Delete diagram and end measurement" msgstr "Diagramm löschen und Messung beenden" #: src/ui/galvani.ui:661 msgid "Reset scale" msgstr "Skalierung zurücksetzen" #: src/ui/galvani.ui:681 msgid "Starting measurement . . ." msgstr "Starte Messung ..." #: src/ui/galvani.ui:711 msgid "X:" msgstr "X:" #: src/ui/galvani.ui:731 msgid "Y:" msgstr "Y:" #: src/ui/galvani.ui:800 msgid "Start Timer to begin measurement" msgstr "Timer für Messvorgang starten" #: src/ui/galvani.ui:858 msgid "Start measurement in" msgstr "Messung starten in" #: src/ui/galvani.ui:889 msgid "seconds" msgstr "Sekunden" #: src/ui/galvani.ui:923 msgid "Project Settings" msgstr "Projekteinstellungen" #: src/ui/galvani.ui:989 msgid "Project Title: " msgstr "Titel des Projekts: " #: src/ui/galvani.ui:1066 msgid "" "Device Channel X\n" "Click to configure" msgstr "" "Messgerät Kanal X\n" "Zur Konfiguration anklicken" #: src/ui/galvani.ui:1127 msgid "" "Device Channel Y\n" "Click to configure" msgstr "" "Messgerät Kanal Y\n" "Zur Konfiguration anklicken" #: src/ui/galvani.ui:1158 msgid "Titrand (acid):" msgstr "Titrand (Säure)" #: src/ui/galvani.ui:1222 msgid "Titrator (base): Sodium hydroxide" msgstr "Titrator (Base): Natriumhydroxid" #: src/ui/galvani.ui:1246 msgid "Acid concentration [mol/L]:" msgstr "Säurekonzentration [mol/L]:" #: src/ui/galvani.ui:1294 msgid "Base concentration [mol/L]:" msgstr "Basenkonzentration [mol/L]:" #: src/ui/galvani.ui:1342 msgid "Volume of acid [mL]:" msgstr "Volumen der Säure [mL]:" #: src/ui/galvani.ui:1389 msgid "Titration velocity [ml/min]:" msgstr "Titrationsgeschwindigkeit [ml/min]:" #: src/ui/galvani.ui:1448 msgid "Comment:" msgstr "Beschreibung" #: src/ui/options.ui:257 msgid "Settings" msgstr "Einstellungen" #: src/ui/options.ui:357 msgid "Background: " msgstr "Hintergrund" #: src/ui/options.ui:375 msgid "Diagram background" msgstr "Diagramm-Hintergrund" #: src/ui/options.ui:403 msgid "Axes:" msgstr "Achsen" #: src/ui/options.ui:421 msgid "Colour of Axes" msgstr "Farbe der Achsen" #: src/ui/options.ui:450 msgid "Grid: " msgstr "Gitter" #: src/ui/options.ui:486 msgid "Colour of grid" msgstr "Farbe des Gitters" #: src/ui/options.ui:520 msgid "Values: " msgstr "Messwerte" #: src/ui/options.ui:546 msgid "symbol for data points" msgstr "Symbol für Messwerte" #: src/ui/options.ui:565 msgid "symbol style" msgstr "Symbolstil" #: src/ui/options.ui:582 msgid "magnitude of symbols in points" msgstr "Größe der Symbole in Pixel" #: src/ui/options.ui:610 msgid "connection between data points" msgstr "Verbindung zwischen Messwerten" #: src/ui/options.ui:627 msgid "linestyle" msgstr "Linienstil" #: src/ui/options.ui:646 msgid "Colour of data points" msgstr "Farbe der Messpunkte" #: src/ui/options.ui:687 msgid "Scaling: " msgstr "Skalierung" #: src/ui/options.ui:716 msgid "auto:" msgstr "auto:" #: src/ui/options.ui:751 msgid "manual:" msgstr "manuell:" #: src/ui/options.ui:923 msgid "Show Zero: " msgstr "Nulllinie" #: src/ui/options.ui:975 msgid "Project title: " msgstr "Projekt-Titel" #: src/ui/options.ui:991 msgid "Show Project title as headline in diagram" msgstr "Projekt-Titel als Diagramm-Überschrift" #: src/ui/options.ui:1055 src/ui/options.ui:2725 msgid "Source" msgstr "Datenquelle" #: src/ui/options.ui:1071 src/ui/options.ui:2741 msgid "Device or simulation" msgstr "Messgerät oder Simulation" #: src/ui/options.ui:1089 src/ui/options.ui:2759 msgid "Type of simulation" msgstr "Type der Simulation" #: src/ui/options.ui:1130 src/ui/options.ui:2796 src/ui/options.ui:2917 msgid "Typ" msgstr "Typ" #: src/ui/options.ui:1146 src/ui/options.ui:2812 src/ui/options.ui:2933 msgid "Type of Device" msgstr "Typ des Messgeräts" #: src/ui/options.ui:1163 src/ui/options.ui:2950 msgid "Load" msgstr "Laden" #: src/ui/options.ui:1208 src/ui/options.ui:2849 src/ui/options.ui:2995 msgid "Interface" msgstr "Interface" #: src/ui/options.ui:1224 src/ui/options.ui:2865 src/ui/options.ui:3011 msgid "" "List of vailable ports.\n" "Connect serial USB-Adaptor first." msgstr "" "Liste der verfügbaren Schnittstellen.\n" "USB-Adapter zuerst verbinden." #: src/ui/options.ui:1252 src/ui/options.ui:3039 msgid "SCPI" msgstr "SCPI" #: src/ui/options.ui:1267 src/ui/options.ui:3054 msgid "Send SCPI commands?" msgstr "SCPI-Befehle senden?" #: src/ui/options.ui:1284 src/ui/options.ui:3071 msgid "Remote Control" msgstr "Externes Setup" #: src/ui/options.ui:1300 src/ui/options.ui:3087 msgid "Remote Setup possible?" msgstr "Kann das Gerät über die Schnittstelle programmiert werden?" #: src/ui/options.ui:1347 msgid "Baudrate in bit/s" msgstr "Baudrate in Bit/s" #: src/ui/options.ui:1350 src/ui/options.ui:3187 msgid "Baudrate" msgstr "Baudrate" #: src/ui/options.ui:1401 src/ui/options.ui:1420 src/ui/options.ui:3257 msgid "Number of data bits" msgstr "Anzahl Datenbits" #: src/ui/options.ui:1404 src/ui/options.ui:3241 msgid "Charsize" msgstr "Zeichenlänge" #: src/ui/options.ui:1456 src/ui/options.ui:3294 msgid "Flow control" msgstr "Flusskontrolle" #: src/ui/options.ui:1506 msgid "Number of Stopbits" msgstr "Anzahl Stopbits" #: src/ui/options.ui:1509 src/ui/options.ui:3346 msgid "Stopbits" msgstr "Stopbits" #: src/ui/options.ui:1560 src/ui/options.ui:3397 msgid "Parity" msgstr "Parität" #: src/ui/options.ui:1612 src/ui/options.ui:3449 msgid "Polling" msgstr "Polling" #: src/ui/options.ui:1628 src/ui/options.ui:3465 msgid "Send Character for data polling" msgstr "Zeichen für Datenanforderung senden" #: src/ui/options.ui:1656 src/ui/options.ui:3493 msgid "Bytes" msgstr "Bytes" #: src/ui/options.ui:1672 src/ui/options.ui:1827 src/ui/options.ui:3509 #: src/ui/options.ui:3664 msgid "Number of transmitted Bytes" msgstr "Anzahl der übertragenen Bytes" #: src/ui/options.ui:1703 src/ui/options.ui:3540 msgid "Values" msgstr "Messwerte" #: src/ui/options.ui:1719 src/ui/options.ui:3556 msgid "Number of transmitted data values" msgstr "Anzhal der übertragenen Messwerte" #: src/ui/options.ui:1751 src/ui/options.ui:3588 msgid "Timeout" msgstr "Timeout" #: src/ui/options.ui:1767 src/ui/options.ui:3604 msgid "Timeout in milliseconds" msgstr "Timeout in Millisekunden" #: src/ui/options.ui:1811 src/ui/options.ui:3648 msgid "Bytes (USB)" msgstr "Bytes (USB)" #: src/ui/options.ui:1882 src/ui/options.ui:3719 msgid "Function" msgstr "Funktionen" #: src/ui/options.ui:1898 src/ui/options.ui:3735 msgid "Measurement function" msgstr "Messfunktion" #: src/ui/options.ui:1934 src/ui/options.ui:3772 msgid "Range" msgstr "Messbereich" #: src/ui/options.ui:1950 src/ui/options.ui:3788 msgid "Function range" msgstr "Messbereich" #: src/ui/options.ui:2029 src/ui/options.ui:2077 src/ui/options.ui:2125 #: src/ui/options.ui:2173 src/ui/options.ui:2221 src/ui/options.ui:2269 #: src/ui/options.ui:2317 src/ui/options.ui:2365 src/ui/options.ui:2413 #: src/ui/options.ui:2461 src/ui/options.ui:3868 src/ui/options.ui:3916 #: src/ui/options.ui:3964 src/ui/options.ui:4012 src/ui/options.ui:4060 #: src/ui/options.ui:4108 src/ui/options.ui:4156 src/ui/options.ui:4204 #: src/ui/options.ui:4252 src/ui/options.ui:4300 msgid "Control String" msgstr "Steuercode" #: src/ui/options.ui:2109 src/ui/options.ui:3948 msgid "DC Current (mA)" msgstr "Gleichstrom (mA)" #: src/ui/options.ui:2157 src/ui/options.ui:3996 msgid "AC Current (mA)" msgstr "Wechselstrom (mA)" #: src/ui/options.ui:2205 src/ui/options.ui:4044 msgid "DC Current (A)" msgstr "Gleichstrom (A)" #: src/ui/options.ui:2253 src/ui/options.ui:4092 msgid "AC Current (A)" msgstr "Wechselstrom (A)" #: src/ui/options.ui:2518 src/ui/options.ui:4366 msgid "Slope" msgstr "Steigung" #: src/ui/options.ui:2535 src/ui/options.ui:2610 src/ui/options.ui:4384 #: src/ui/options.ui:4463 src/ui/options.ui:4571 src/ui/options.ui:4652 #: src/ui/options.ui:4733 src/ui/options.ui:4843 src/ui/options.ui:4921 #: src/ui/options.ui:4999 src/ui/options.ui:5082 msgid "auto: " msgstr "auto:" #: src/ui/options.ui:2547 src/ui/options.ui:5027 msgid "" "select slope\n" "auto for random slope" msgstr "Steigung wählen" #: src/ui/options.ui:2593 src/ui/options.ui:4445 src/ui/options.ui:4715 msgid "Deviation" msgstr "Abweichung" #: src/ui/options.ui:2622 src/ui/options.ui:4475 src/ui/options.ui:4745 msgid "" "Select uncertainty of value.\n" "Effective deviation is randomized." msgstr "" "Ungenauigkeit des Messwerts festlegen.\n" "Die effektive Abweichung wird durch eine Zufallszahl modifiziert." #: src/ui/options.ui:2692 msgid "" "Measurement Data\n" "Channel 1 (X)" msgstr "" "Messdaten\n" "Kanal 1 (X)" #: src/ui/options.ui:3122 msgid "Time Interval" msgstr "Zeit-Intervall" #: src/ui/options.ui:3138 msgid "Time Interval in seconds" msgstr "Zeit-Intervall in Sekunden" #: src/ui/options.ui:4396 msgid "" "Select slope.\n" "auto for random slope" msgstr "" "Steigung wählen.\n" "auto für Zufallswert" #: src/ui/options.ui:4553 msgid "Initial value" msgstr "Anfangswert" #: src/ui/options.ui:4583 msgid "" "Select initial value.\n" "auto for random value" msgstr "" "Anfangswert wählen\n" "auto für Zufallswert" #: src/ui/options.ui:4634 msgid "Time constant" msgstr "Zeitkonstante" #: src/ui/options.ui:4664 msgid "" "Select time constant.\n" "auto for random value" msgstr "" "Zeitkonstante wählen\n" "auto für Zufallswert" #: src/ui/options.ui:4825 msgid "Number of peaks" msgstr "Anzahl der Peaks" #: src/ui/options.ui:4855 msgid "Select number of peaks." msgstr "Anzahl der Peaks" #: src/ui/options.ui:4903 msgid "Maximum Retention" msgstr "Maximale Retention" #: src/ui/options.ui:4933 msgid "Select maximum retention time." msgstr "Maximale Retentionszeit wählen." #: src/ui/options.ui:4981 msgid "Peak width" msgstr "Peakbreite" #: src/ui/options.ui:5011 msgid "" "Select peak width.\n" "Effective peak width is randomized." msgstr "" "Peakbreite wählen.\n" "auto für Zufallswert" #: src/ui/options.ui:5064 msgid "Drift" msgstr "Drift" #: src/ui/options.ui:5094 msgid "Select baseline drift." msgstr "Drift der Basislinie wählen." #: src/ui/options.ui:5174 msgid "" "Measurement Data\n" "Channel 2 (Y)" msgstr "" "Messdaten\n" "Kanal 2 (Y)" #~ msgid "Intensity" #~ msgstr "Intensität" #~ msgid "Simulation (spectrum)" #~ msgstr "Simulation (Spektrum)" #~ msgid "Spektrum" #~ msgstr "Spektrum" #~ msgid "" #~ "Multimeter function differs from Project function - continue measurement?" #~ msgstr "" #~ "Die Messfunktion des Multimeters entspricht nicht den " #~ "Projekteinstellungen. Messung fortsetzen?" #~ msgid "AC Current (mA" #~ msgstr "Wechselstrom (mA)" #~ msgid "Cannot generate Array: no space left" #~ msgstr "Array kann nicht angelegt werden" #~ msgid "Differential" #~ msgstr "Differential" #~ msgid "Lutron PH-207" #~ msgstr "Lutron PH-207" #~ msgid "Hardware" #~ msgstr "Hardware" #~ msgid "Software" #~ msgstr "Software" #~ msgid "None" #~ msgstr "Keine" #~ msgid "odd" #~ msgstr "odd" #~ msgid "even" #~ msgstr "even" #~ msgid "Print Settings" #~ msgstr "Druckeinstellungen" #~ msgid "Comment: " #~ msgstr "Beschreibung" #~ msgid "Diagram: " #~ msgstr "Diagramm: " #~ msgid "Evaluation results: " #~ msgstr "Ergebnisse der Auswertung" #~ msgid "Remote-Control: " #~ msgstr "Externes Setup" #~ msgid "DC Voltage: " #~ msgstr "Gleichspannung: " #~ msgid "AC Voltage: " #~ msgstr "Wechselspannung: " #~ msgid "Resistance:" #~ msgstr "Widerstand:" #~ msgid "Conductivity:" #~ msgstr "Leitfähigkeit:" #~ msgid "pH:" #~ msgstr "pH:" #~ msgid "Temperature:" #~ msgstr "Temperatur:" #~ msgid "" #~ "Measurement function\n" #~ "Send to Device if possible" #~ msgstr "" #~ "Messfunktion\n" #~ "Zum Gerät senden, falls möglich" #~ msgid "" #~ "Function range\n" #~ "Send to Device if possible" #~ msgstr "" #~ "Messbeeich\n" #~ "Zum Gerät senden, falls möglich" #~ msgid "Zero Points" #~ msgstr "Nullstellen" galvani-v0.38/po/POTFILES.in0000644000175000017500000000032214713174213015314 0ustar burkardburkard# List of source files containing translatable strings. src/data_rw.cxx src/eval.cxx src/main.cc src/mess.cxx src/options.cxx src/print.cxx src/ui/data_rw.ui src/ui/eval.ui src/ui/galvani.ui src/ui/options.ui galvani-v0.38/po/Makevars0000644000175000017500000000717314713174213015246 0ustar burkardburkard# Makefile variables for PO directory in any package using GNU gettext. # # Copyright (C) 2003-2019 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation gives # unlimited permission to use, copy, distribute, and modify it. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ #XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Burkard Lutz # This tells whether or not to prepend "GNU " prefix to the package # name that gets inserted into the header of the $(DOMAIN).pot file. # Possible values are "yes", "no", or empty. If it is empty, try to # detect it automatically by scanning the files in $(top_srcdir) for # "GNU packagename" string. PACKAGE_GNU = no # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = b.lutz@online.de # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = no # These options get passed to msgmerge. # Useful options are in particular: # --previous to keep previous msgids of translated messages, # --quiet to reduce the verbosity. MSGMERGE_OPTIONS = # These options get passed to msginit. # If you want to disable line wrapping when writing PO files, add # --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and # MSGINIT_OPTIONS. MSGINIT_OPTIONS = # This tells whether or not to regenerate a PO file when $(DOMAIN).pot # has changed. Possible values are "yes" and "no". Set this to no if # the POT file is checked in the repository and the version control # program ignores timestamps. PO_DEPENDS_ON_POT = yes # This tells whether or not to forcibly update $(DOMAIN).pot and # regenerate PO files on "make dist". Possible values are "yes" and # "no". Set this to no if the POT file and PO files are maintained # externally. DIST_DEPENDS_ON_UPDATE_PO = yes galvani-v0.38/man/0000755000175000017500000000000014713174213013677 5ustar burkardburkardgalvani-v0.38/man/galvani.10000644000175000017500000000471014713174213015404 0ustar burkardburkard.\"Created with GNOME Manpages Editor Wizard .\"http://sourceforge.net/projects/gmanedit2 .TH galvani 1 "January 11, 2023" "Burkard Lutz" "Galvani Manual" .SH NAME Galvani \- a program for plotting and evaluating measurement data .SH SYNOPSIS .B galvani .RI [ options ] .br .SH DESCRIPTION \&\fBGalvani\fR reads measurement data of digital multimeters from a serial interface. Data are plotted graphically in a diagram. Two channels are available, therefore 2 devices can be used in parallel. .PP Several mathematical \fBtransformations\fR are available for data evaluation: .PD 0.5 .TP 2 \(bu Inverse (1/x) .TP 2 \(bu Logarithm .TP 2 \(bu Conversion of a Copper/Constantan\- or Nickel/Chromnickel\-thermocouple voltage to temperature difference .TP 2 \(bu Conversion of timeline to volumina (for titrations) .PD 1 .PP There are some \fBmathematical operations\fR available for evaluation of graphs: .PD 0.5 .TP 2 \(bu Differential function .TP 2 \(bu Integration of peak area in Chromatograms including tabulation .TP 2 \(bu Linear regression of data .PD 1 .PP Diagrams can be exported into several file formats (PNG, SVG, EPS) or printed as report. .PP .PD 0.5 Additionally, measurement data can be \fBsimulated\fR (in combination with random variables) as: .TP 2 \(bu Linear function .TP 2 \(bu Exponential function (decay curve) .TP 2 \(bu Chromatogram .HP 2 \(bu Titration curve .PD 1 .SH SETTINGS The appearance of diagrams can be controlled in several options. Data points can be shown as cross, circle, square or diamond and/or can be interpolated by lines or curves. .PP All settings for serial communication with the device can be saved as files. For some devices, there exist already configuration files from which settings can be read. Also, setting measurement function remotely is possible if the device has this option. .SH FILES .TP 4 \fB$(HOME)/galvani\fR .br Device specific settings are saved as files in this folder. .TP 4 \fB$(HOME)/galvani/data\fR .br This folder contains the data files (.dat) produced by galvani and graphical data (.png, .svg, .eps) exported by the program. Alternatively other folders can be chosen for saving data files. .TP 4 \fB$(HOME)/.galvani\fR .br In this hidden folder galvani saves the file galvani.ini holding information for autoloading and autosaving program settings and the configuration file galvani.conf in which all program settings are saved and can be read at program start. .TP 4 \fB/tmp/galvani\fR .br Folder for temporary files. galvani-v0.38/man/galvani.manpages0000644000175000017500000000005614713174213017036 0ustar burkardburkardman/galvani.1 # Translations man/galvani.de.1 galvani-v0.38/man/galvani.de.10000644000175000017500000000561114713174213015774 0ustar burkardburkard.\"Created with GNOME Manpages Editor Wizard .\"http://sourceforge.net/projects/gmanedit2 .TH galvani 1 "January 11, 2023" "Burkard Lutz" "Galvani Manual" .SH NAME Galvani \- ein Programm zur grafischen Darstellung und Auswertung von Messdaten .SH ÜBERSICHT .B galvani .RI [ options ] .br .SH BESCHREIBUNG \&\fBGalvani\fR liest Messdaten von Digitalmultimetern oder anderen digitalen Messgeräten über eine serielle Schnittstelle. Die Messdaten werden in einem Diagramm grafisch dargestellt. Zur Erfassung der Messdaten stehen \fBzwei Kanäle\fR zur Verfügung, so dass zwei Messgeräte parallel verwendet werden können. .PP Zur Auswertung stehen verschiedene mathematische \fBTransformationen\fR der Daten zur Verfügung: .PD 0.5 .TP \(bu Umkehrung (1/x) .TP \(bu Logarithmus .TP \(bu Umwandlung der Thermospannung von Kupfer/Konstantan\- und Nickel/Chromnickel\-Thermoelementen in Temperaturdifferenzen .HP 2 \(bu Umwandlung der Zeitachse in Volumina für Titrationen .PD 1 .PP Die Auswertung des Funktionsgraphen kann durch verschiedene \fBOperationen\fR unterstützt werden: .PD 0.5 .TP \(bu Differentialfunktion .TP \(bu Integration von Peakflächen bei Chromatogrammen mit tabellarischer Ausgabe .TP \(bu Lineare Regression der Messdaten .PD 1 .PP Diagramme können in verschiedenen Dateiformaten (PNG, SVG, EPS) exportiert oder als Messbericht ausgegeben werden. .PP .PD 0.5 Zusätzlich können Messdaten (in Kombination mit Zufallsvariablen) \fBsimuliert\fR werden als: .TP \(bu Lineare Funktion .TP \(bu Exponentialfunktion (Zerfallskurve) .TP \(bu Chromatogramm .TP \(bu pH-Kurve .PD 1 .SH EINSTELLUNGEN Das Aussehen des Diagramms kann durch verschiedene Einstellungen gesteuert werden. Messpunkte können isoliert als Kreuz, Kreis, Quadrat oder Raute gezeichnet werden und/oder durch Linien oder Kurven interpoliert werden. .PP Einstellungen für die serielle Kommunikation mit dem Messgerät können als Datei gespeichert werden. Für einige Digitalmultimeter liegen Gerätedateien vor, aus denen die Einstellungen eingelesen werden können. Das Programm erlaubt auch die Softwaregesteuerte Einstellung der Messfunktion, sofern das Digitalmultimeter diese Funktion besitzt. .SH DATEIEN .TP 4 \fB$(HOME)/galvani\fR .br In diesem Ordner werden die gerätespezifischen Einstellungen als Datei (.dmm) abgelegt. .TP 4 \fB$(HOME)/galvani/data\fR .br Dieser Ordner enthält die von Galvani erstellten Messdaten-Dateien (.dat) sowie vom Programm exportierte Diagramm als Grafikdateien (.png, .svg, .eps). Beim Erstellen der Dateien können aber auch andere Ordner gewählt werden. .TP 4 \fB$(HOME)/.galvani\fR .br In diesem versteckten Ordner liegt die Datei galvani.ini, in der festgelegt ist, ob die Programmeinstellungen automatisch gespeichert bzw. geladen werden sollen, sowie die Konfigurationsdatei galvani.conf, in der alle Programmeinstellungen gespeichert werden. .TP 4 \fB/tmp/galvani\fR .br Ordner für temporäre Dateien. galvani-v0.38/NEWS0000644000175000017500000000000014713174213013611 0ustar burkardburkardgalvani-v0.38/configure0000755000175000017500000255551014713174213015050 0ustar burkardburkard#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for galvani 0.38. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 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 more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # 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 sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='galvani' PACKAGE_TARNAME='galvani' PACKAGE_VERSION='0.38' PACKAGE_STRING='galvani 0.38' PACKAGE_BUGREPORT='' PACKAGE_URL='' gt_needs= # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS GALVANI_LIBS GALVANI_CFLAGS LIBSERIAL_LIBS LIBSERIAL_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG CXXCPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP FILECMD LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP LIBTOOL POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS EGREP GREP CPP host_os host_vendor host_cpu host build_os build_vendor build_cpu build am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC XGETTEXT_EXTRA_OPTIONS MSGMERGE_FOR_MSGFMT_OPTION MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS SED GETTEXT_PACKAGE am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_shared enable_static with_pic enable_fast_install with_aix_soname with_sysroot enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS CPP LT_SYS_LIBRARY_PATH CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR LIBSERIAL_CFLAGS LIBSERIAL_LIBS GALVANI_CFLAGS GALVANI_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # 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. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= 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 case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -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) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$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 ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$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 ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) 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 ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=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 ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$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'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" 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 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 ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # 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 the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | 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 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # 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 galvani 0.38 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 \`..'] 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] --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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/galvani] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _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 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 galvani 0.38:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --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) 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-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path LIBSERIAL_CFLAGS C compiler flags for LIBSERIAL, overriding pkg-config LIBSERIAL_LIBS linker flags for LIBSERIAL, overriding pkg-config GALVANI_CFLAGS C compiler flags for GALVANI, overriding pkg-config GALVANI_LIBS linker flags for GALVANI, overriding pkg-config 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 the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. 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 else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF galvani configure 0.38 generated by GNU Autoconf 2.71 Copyright (C) 2021 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 fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* 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_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by galvani $as_me 0.38, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { 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` /usr/bin/hostinfo = `(/usr/bin/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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&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_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=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append 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 as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset 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: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } 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. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " gt_needs="$gt_needs " # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*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 do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="ltmain.sh config.guess config.sub compile config.rpath missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; 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,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$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 # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$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. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## 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 ac_config_headers="$ac_config_headers config.h" am__api_version='1.16' # 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. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. 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_fn_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 rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$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' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file 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 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". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file 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 $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi 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='galvani' VERSION='0.38' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # 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"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' ac_ext=cpp 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 -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 printf %s "checking whether the C++ compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 printf %s "checking for C++ compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; 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 ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 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 DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CXX_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop 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". rm -rf conftest.dir 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 am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # 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. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 printf "%s\n" "$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 GETTEXT_PACKAGE=galvani printf "%s\n" "#define GETTEXT_PACKAGE \"$GETTEXT_PACKAGE\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test ${enable_nls+y} then : enableval=$enable_nls; USE_NLS=$enableval else $as_nop USE_NLS=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.20 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 printf "%s\n" "$MSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GMSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 printf "%s\n" "$GMSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XGETTEXT+y} then : printf %s "(cached) " >&6 else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 printf "%s\n" "$XGETTEXT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGMERGE+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 printf "%s\n" "$MSGMERGE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' else if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' else MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' fi fi test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; 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 ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 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 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" 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 depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop 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". rm -rf conftest.dir 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 am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # 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. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$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 # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 printf %s "checking for ld... " >&6; } elif test "$GCC" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test -n "$LD"; then # Let the user override the test with a path. : else if test ${acl_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext /* end confdefs.h. */ #if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : # The compiler produces 64-bit code. Add option '-b64' so that the # linker groks 64-bit object files. case "$acl_cv_path_LD " in *" -b64 "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc64-*-netbsd*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop # The compiler produces 32-bit code. Add option '-m elf32_sparc' # so that the linker groks 32-bit object files. case "$acl_cv_path_LD " in *" -m elf32_sparc "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi LD="$acl_cv_path_LD" fi if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${acl_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 printf %s "checking for shared library run path origin... " >&6; } if test ${acl_cv_rpath+y} then : printf %s "(cached) " >&6 else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test ${enable_rpath+y} then : enableval=$enable_rpath; : else $as_nop enable_rpath=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 printf %s "checking 32-bit host C ABI... " >&6; } if test ${gl_cv_host_cpu_c_abi_32bit+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$gl_cv_host_cpu_c_abi"; then case "$gl_cv_host_cpu_c_abi" in i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) gl_cv_host_cpu_c_abi_32bit=no ;; *) gl_cv_host_cpu_c_abi_32bit=unknown ;; esac else case "$host_cpu" in # CPUs that only support a 32-bit ABI. arc \ | bfin \ | cris* \ | csky \ | epiphany \ | ft32 \ | h8300 \ | m68k \ | microblaze | microblazeel \ | nds32 | nds32le | nds32be \ | nios2 | nios2eb | nios2el \ | or1k* \ | or32 \ | sh | sh1234 | sh1234elb \ | tic6x \ | xtensa* ) gl_cv_host_cpu_c_abi_32bit=yes ;; # CPUs that only support a 64-bit ABI. alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ | mmix ) gl_cv_host_cpu_c_abi_32bit=no ;; i[34567]86 ) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) \ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _ILP32 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=yes else $as_nop gl_cv_host_cpu_c_abi_32bit=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; rs6000 ) gl_cv_host_cpu_c_abi_32bit=yes ;; riscv32 | riscv64 ) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) gl_cv_host_cpu_c_abi_32bit=unknown ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&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+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" 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. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$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. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 printf %s "checking for ELF binary format... " >&6; } if test ${gl_cv_elf+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ELF__ Extensible Linking Format #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Extensible Linking Format" >/dev/null 2>&1 then : gl_cv_elf=yes else $as_nop gl_cv_elf=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 printf "%s\n" "$gl_cv_elf" >&6; } if test $gl_cv_elf; then # Extract the ELF class of a file (5th byte) in decimal. # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header if od -A x < /dev/null >/dev/null 2>/dev/null; then # Use POSIX od. func_elfclass () { od -A n -t d1 -j 4 -N 1 } else # Use BSD hexdump. func_elfclass () { dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' echo } fi case $HOST_CPU_C_ABI_32BIT in yes) # 32-bit ABI. acl_is_expected_elfclass () { test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 } ;; no) # 64-bit ABI. acl_is_expected_elfclass () { test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 } ;; *) # Unknown. acl_is_expected_elfclass () { : } ;; esac else acl_is_expected_elfclass () { : } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 printf %s "checking for the common suffixes of directories in the library search path... " >&6; } if test ${acl_cv_libdirstems+y} then : printf %s "(cached) " >&6 else $as_nop acl_libdirstem=lib acl_libdirstem2= acl_libdirstem3= case "$host_os" in solaris*) if test $HOST_CPU_C_ABI_32BIT = no; then acl_libdirstem2=lib/64 case "$host_cpu" in sparc*) acl_libdirstem3=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test $HOST_CPU_C_ABI_32BIT != no; then # 32-bit or unknown ABI. if test -d /usr/lib32; then acl_libdirstem2=lib32 fi fi if test $HOST_CPU_C_ABI_32BIT != yes; then # 64-bit or unknown ABI. if test -d /usr/lib64; then acl_libdirstem3=lib64 fi fi if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib32 ) acl_libdirstem2=lib32 ;; */lib64 ) acl_libdirstem3=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" if test $HOST_CPU_C_ABI_32BIT = yes; then # 32-bit ABI. acl_libdirstem3= fi if test $HOST_CPU_C_ABI_32BIT = no; then # 64-bit ABI. acl_libdirstem2= fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 printf "%s\n" "$acl_cv_libdirstems" >&6; } acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test ${with_libiconv_prefix+y} then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi fi if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 printf %s "checking for CFPreferencesCopyAppValue... " >&6; } if test ${gt_cv_func_CFPreferencesCopyAppValue+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFPreferencesCopyAppValue=yes else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFLocaleCopyPreferredLanguages=yes else $as_nop gt_cv_func_CFLocaleCopyPreferredLanguages=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 printf %s "checking for GNU gettext in libc... " >&6; } if eval test \${$gt_func_gnugettext_libc+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libc=yes" else $as_nop eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 printf %s "checking for iconv... " >&6; } if test ${am_cv_func_iconv+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 printf %s "checking for working iconv... " >&6; } if test ${am_cv_func_iconv_works+y} then : printf %s "(cached) " >&6 else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 printf %s "checking how to link with libiconv... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test ${with_libintl_prefix+y} then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi fi if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 printf %s "checking for GNU gettext in libintl... " >&6; } if eval test \${$gt_func_gnugettext_libintl+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libintl=yes" else $as_nop eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 printf %s "checking whether to use NLS... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 printf %s "checking how to link with libintl... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.7' macro_revision='2.4.7' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. 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 delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop 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 variants of GNU ld 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 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop 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* | cegcc*) # 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; ;; mint*) # On MiNT this can take a long time and run out of memory. 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # 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`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` 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` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$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' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. set dummy ${ac_tool_prefix}file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="${ac_tool_prefix}file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_FILECMD"; then ac_ct_FILECMD=$FILECMD # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_FILECMD"; then ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD if test -n "$ac_ct_FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 printf "%s\n" "$ac_ct_FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_FILECMD" = x; then FILECMD=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FILECMD=$ac_ct_FILECMD fi else FILECMD="$ac_cv_prog_FILECMD" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop 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 # that 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 aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -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', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) 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|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD 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])(-bit)?( [LM]SB)? 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 ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) 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=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) 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 ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi 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 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # 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]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # 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 # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && 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 <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_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 -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) 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" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} 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 $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} 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 $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} 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 $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h 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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop 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 <<_LT_EOF 1>&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 _LT_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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop 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 <<_LT_EOF 1>&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 _LT_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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script 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;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## 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... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # 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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; 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= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # 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' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; 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 ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; 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' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) 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 ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # 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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; 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 # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker 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 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $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 .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $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 .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # 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_|_GLOBAL__F[ID]_.*' # 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. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. 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 supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [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 # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) 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 ;; esac ;; 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* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' 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 '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; 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 '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; 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~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&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. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' 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 ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= 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 yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; 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 : 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' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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 '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ 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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) 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 ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper 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 `func_echo_all "$deplibs" | $SED '\''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' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" 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 ;; # 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* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=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 fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker 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 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=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 yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) 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 ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $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 $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' 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' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $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 -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; 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 if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # 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 yes,yes = "$GCC,$enable_shared"; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic 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\":${as_lineno-$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=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # 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. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi 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" 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 # correct to gnu/linux during the next big refactor 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' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' 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="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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 dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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$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`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor 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 ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $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' ;; netbsdelf*-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='NetBSD ld.elf_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 # correct to gnu/linux during the next big refactor 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=qnx 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='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; 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 ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 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 # correct to gnu/linux during the next big refactor 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 ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; 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* | cegcc*) 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char shl_load (); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dld_link (); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; 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 <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 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_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; 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 <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 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_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$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 striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } 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 if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /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. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$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. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 else _lt_caught_CXX_error=yes fi ac_ext=cpp 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= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS 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 $as_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 $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop 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 variants of GNU ld 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 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$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 yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -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 -v "^Configured with:" | $GREP " \-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; 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 : 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' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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 '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX 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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # 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_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' 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--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -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$_lt_dsymutil" archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -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$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes file_list_spec_CXX='@' ;; 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 ;; freebsd2.*) # 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* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; 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 "x$output_objdir/$soname" = "x$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) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_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*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) 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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $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 ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; 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" && func_echo_all "-set_version $verstring"` -update_registry $output_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 yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) 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; func_echo_all "$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* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) 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' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no 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' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # 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' ;; esac ;; 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::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | 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. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) 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" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) 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" && func_echo_all "-set_version $verstring"` -update_registry $output_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 $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac 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=`func_echo_all "$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; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac 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 -v "^Configured with:" | $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 ;; 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* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -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 $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 compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # 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 yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $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 $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -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 -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $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 $wl-h $wl$soname -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 -v "^Configured with:" | $GREP " \-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && 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... # 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= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev 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 prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$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 no = "$pre_test_object_deps_done"; 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 CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # 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' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; 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= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; 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_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 ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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' ;; 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* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; 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* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; 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' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; 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*) ;; solaris*) case $cc_basename in CC* | sunCC*) # 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 ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # 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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; 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 # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker 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 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $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 .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $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 .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl* | icl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # 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 yes,yes = "$GCC,$enable_shared"; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc_CXX+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_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\":${as_lineno-$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=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_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* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&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" 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 # correct to gnu/linux during the next big refactor 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' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' 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' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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 dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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$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`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor 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 ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $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' ;; netbsdelf*-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='NetBSD ld.elf_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 # correct to gnu/linux during the next big refactor 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=qnx 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='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; 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 ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 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 # correct to gnu/linux during the next big refactor 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 ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 printf "%s\n" "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC 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 fi # test yes != "$_lt_caught_CXX_error" 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 ac_config_commands="$ac_config_commands libtool" # Only expand once: if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libserial" >&5 printf %s "checking for libserial... " >&6; } if test -n "$LIBSERIAL_CFLAGS"; then pkg_cv_LIBSERIAL_CFLAGS="$LIBSERIAL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libserial\""; } >&5 ($PKG_CONFIG --exists --print-errors "libserial") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSERIAL_CFLAGS=`$PKG_CONFIG --cflags "libserial" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBSERIAL_LIBS"; then pkg_cv_LIBSERIAL_LIBS="$LIBSERIAL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libserial\""; } >&5 ($PKG_CONFIG --exists --print-errors "libserial") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSERIAL_LIBS=`$PKG_CONFIG --libs "libserial" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBSERIAL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libserial" 2>&1` else LIBSERIAL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libserial" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBSERIAL_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (libserial) were not met: $LIBSERIAL_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBSERIAL_CFLAGS and LIBSERIAL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables LIBSERIAL_CFLAGS and LIBSERIAL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else LIBSERIAL_CFLAGS=$pkg_cv_LIBSERIAL_CFLAGS LIBSERIAL_LIBS=$pkg_cv_LIBSERIAL_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtkmm-3.0 " >&5 printf %s "checking for gtkmm-3.0 ... " >&6; } if test -n "$GALVANI_CFLAGS"; then pkg_cv_GALVANI_CFLAGS="$GALVANI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkmm-3.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors "gtkmm-3.0 ") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GALVANI_CFLAGS=`$PKG_CONFIG --cflags "gtkmm-3.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GALVANI_LIBS"; then pkg_cv_GALVANI_LIBS="$GALVANI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkmm-3.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors "gtkmm-3.0 ") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GALVANI_LIBS=`$PKG_CONFIG --libs "gtkmm-3.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GALVANI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtkmm-3.0 " 2>&1` else GALVANI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtkmm-3.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GALVANI_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtkmm-3.0 ) were not met: $GALVANI_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GALVANI_CFLAGS and GALVANI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GALVANI_CFLAGS and GALVANI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GALVANI_CFLAGS=$pkg_cv_GALVANI_CFLAGS GALVANI_LIBS=$pkg_cv_GALVANI_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi ac_config_files="$ac_config_files Makefile src/Makefile po/Makefile.in" 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, we kill variables containing newlines. # 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. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} 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}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $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} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by galvani $as_me 0.38, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent 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 the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ galvani config.status 0.38 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. 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=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; 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 || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; 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+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #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. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # 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. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 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. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # 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 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # 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 # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # 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 into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # 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 # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # 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 # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # 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 # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # 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 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # 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 # 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 # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # 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 a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # 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 # 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 DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # 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 # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # 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 # 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 # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps 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 # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # 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" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # 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 # 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 # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # 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 a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # 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 # 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 DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_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 # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_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 # 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 # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX 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 # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # 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 || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi galvani-v0.38/doc/0000755000175000017500000000000014713174213013671 5ustar burkardburkardgalvani-v0.38/doc/galvani.css0000755000175000017500000000400414713174213016025 0ustar burkardburkardbody { background-color: #F6F5Ed; margin: 0; padding: 0; font-family: gill, helvetica, sans-serif; } a:link {text-decoration: none; color:#000000;} a:visited {color:#000000;} a:hover {font-weight:bold;} a:active {text-decoration:underline; font-weight:bold;} a:target {padding-top: 200px;} #kopf h1 { font-size: 350%; float: left; padding-left: 10px; font-family: serif; color: #F4F4F2; } #kopf { background-color: #261A90; position: fixed; top: 0; width:100%; max-width: 2560px; height: 120px; padding: 10px; padding-top: 0; } #navi { position: fixed; top: 120px; width: 100%; height: 30px; background-color: #E7E7E7; margin: 0; padding: 10px; } #navi ul { list-style-type: none; margin: 0; padding: 0.3em; } #navi li { display: inline; padding: 0.2em; background-image: url(../image/button_inactive.png); } #navi .cur span { padding:0.5em; color: gray; } .logo { float: left; margin-right: 20px; margin-bottom: 10px; vertical-align: middle; } .titel { margin-top: 200px; margin-left: 50px; margin-right: 50px; font-size: 150%; } #intro { margin-left: 50px; margin-right: 50px; font-size: 120%; line-height: 150%; } .info { margin-left: 30px; width: 70%; font-size: 120%; line-height: 150%; margin-bottom: 2em; } .infobox { float: left; margin-left: 8em; width: 50%; background-color: #F3C876; text-align: justify; padding: 10px; } .infobox th { background-color: #1F5663; color: #F3ECD7; text-align: center; line-height: 150%; } .item_1 { font-size: 150%; margin-left: 50px; line-height: 150%; } .item_2 { font-size: 130%; margin-left: 80px; line-height: 150%; } .anleitung { margin-left: 100px; margin-right: 30px; margin-bottom: 2em; width: 90%; line-height: 120%; } .anleitung a { text-decoration: underline; } .anleitung ul { display: block; margin-left: 2em; } ol { font-size: 120%; display: block; margin-left: 2em; line-height: 150%; } ol li { margin-bottom: 1em; line-height: 150%; } .symbol { display: inline; vertical-align: middle; } galvani-v0.38/doc/image/0000755000175000017500000000000014713174213014753 5ustar burkardburkardgalvani-v0.38/doc/image/document-revert.png0000644000175000017500000000550514713174213020611 0ustar burkardburkardPNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org< IDATx՚ p\Uܻτ "J E8VEgTeD""b -E-ˣbDT+Д6i̹0rg݊:ݿE?pk~zr'>>X|RAAF|Ӡqⷓp{#nsϢߢf)(`%Ƿ5{_\a7m^I:0{A$Rt`P5WXp Om/ㄷ-E \WYtB(uK۴tͷzHzygҿ?]~fe=Hz⇿8T7ӿ7Ŗuذ\pOrb=SCNf .n5+|享n70YO-c-m_y^q^y⸘Li\|6>rz0o Z˳wk@Z\A`\a"(Ӄް|rN@a}rq\#V$< ( M & ej 6NENy x^ܺO Z3<M 3$Q0UJM=y'6qޛ".PC52Z']HZx"&CgVj柎)fsqϏ奧rJP@+6VfIA&6XF08hqp@獽CtߧդH;C=Ԟφ4Amam|Ք߅d '%9݌_7 R(T#0*jZv{1Ƃ3 X}5 Ԝt&!$}ݱ_:Kf Dqt9V؎$*ؿW3a2nYy >YŃY4+Ʃ(/mmaELd'? 1N6 t+8!Tx洲s?-[0}޲vyypt2umA w=+Q}jLBQنVq +@v"-d2q>f-4Q:F(I]vw$bGoaטCF&#N0vٛ'I0srv 3aG#(㢕 2byb=^f+8L[`sNl&Zhhl$4 BD#K!06Wvz&@(6 \ h[w{nocBao-ڠ-0( *E+1EXvd6`' 8(@AF0ƠwE4FY%W􇚻XhK=&hI'Қ]?8A 7Ep',^vb"wُ<2pi}cZiBd;`#l"XvWE/I"ִ朜_] +Wv7=v_oC bAIC"‰ dp 4R7,^c]?Q̡ܹF?ljC$]ACJS04,p3{^/7=_@hAe!ED~*1Lƅk9ʛ]at4ƞ=妶ny|[|- VB\TT>]ρؖ0(w񬾵_j7/L: ,+pD$Y.R)h԰!LmIN|wu}"lDR xn j pCEڵiJNs_9@ P~A)d$=ذ'>I&#5u~ͷ߲Xr+F[QrƸ"}n<Mk\cc2طYl޸|g*917br9-@۞ڋpڽ/|:n'2M lv4HƲVcHake"}zWoG%W& ~/yB!Yx Aod볟[ܹK@qԛ>xCDxLY%YB,IENDB`galvani-v0.38/doc/image/document-properties.png0000644000175000017500000000451314713174213021474 0ustar burkardburkardPNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<IDATx՗ pTwwn6 BB$ 0V-eeʳD@P aDP UŢ#d塑 d$Wyߝ;z&39&9Y6 hM=b2ѣG/.((r,AօO/Nڧ%|СCÏ=:^vx^$%@u)VL3Wc3Gva/졸Pg z&PǨϴꨍc!an\Jo90dYp_镤2Osek[H(xGXVJWXJn16^Ƒ-[rfQ.⿥M 5}8d-#cz#_W cyre7>90@o @_DŗůE]ʰᱫ\yЃC1PTcIT1&4еSהּ`KNߔlь  *"j.zvdH󜝔d;rn!7{ܱtUQ+FGčcdsR.b5w g'v[Wf\-A54Y6ugzskLYIn.YobK)ޏ]Zث& M$^ɠ dlŞ:d b"U|3>~>MK06g $5ǠZvUmSY3i10CZz#*ʧ!ť肓齙U\–Kf.b-q1-b%hhXZӱjRX ˸<ĔgRbObZN#س`lwx՟3]MBU~ƍHcu^wZcH:Tf0tX?g {%C5wF? ev;*uҫ9x&R$q}%`nХS<'70hd@ % a{(g]Fm&Κp7h+  Q8οp:Ⴭ 5{ ]B١-dFB>p}H,ҋN g=KbN Z,EFA:uƍB B+`ߍ>2XtR;?酳_2~LZxaQ6s9?\^p8zNۨ6: }ݗ÷u"NsZy̚Rߵ p(.bq/z 7` 6kll$yJpl5a#F6^selfu&u +/>ԉh= O,;f3`~2|~rX&>>GR>;mM`:ȾkM۸`O.˕y󷖗*"a,Ӌrz{JȦk] PJ<| ~ ʼP(妲R^x[Eȳ`2uLV@SSSOIIb-َ}2}hK_UUI~AÇT#G0p@(Bhvu"D*gdD߸O "s<%@QV##[|ѻE#tIlVuŠ-# Qz>??_B!O7*Jde%ߊ߁R}ƟaG34?o'Sg^{I xX2y5򲏀2n~]SSS٣G7 0ZA(,49̙J9awI]j2jMV8a5VF^U9ǩc l͚XZR[}#/bڧ:|jd܌:IW)puPS%@&IENDB`galvani-v0.38/doc/image/document-open.png0000644000175000017500000000535614713174213020247 0ustar burkardburkardPNG  IHDR00WsRGBbKGD pHYspMBtIMEz nIDAThݙMeGL+AQ!f!*bTDAQYQB\( "хP.1蘉Q'uf0ttOϪ:ŭ{_=FbO>w=uGՃϝw᫒.]Ge>j{y钝9sTJzn/KfHT%@=Br̙{|.ε)+"8p"H~97 *;99ƫ@DZɬ uj\",K8Ͻ=} ۻZhnMzD䊆pQ8:ɓ?n~&>+iRR~цNς3CDq:sz=\QНȩS?}lmY8yl4洗s1=sEZQ@nV}/Zcs P菭{WO\x-hDB WzWYhb61q?x0n%E_,dΡB'8CoRh\ɢ(v v,--s ]8Z,Bdc F~dT<F34 ^IPe~VVX/qV]N0UAmFأ!CxZgǜs;@rY=C'u( XYYaii믿WVg8x ({F#>IeG1һ<`р%*&3%/ L6_#p"Te"r++h(&mH0#x~Up]b:Wљ*i,xZ hdAGNSW2r=U֕p*'wWp5f>S C&MD'|$aʆѬ*+h-0gp;&52zOB),s{? I)9mB޽ԋ5)&̄R[/f-noe8g65k' h0|ɫ$cyTm<f&9"L˱dq#H$UkeL2@c227{'2-ZL0U'uz*(Yh; %b{$2SrN(˲Y.o T P9IpςZ$?xlA$WNvw26J̺{-#EYM^~bs$:5-qܤJL"1]_сaE&3]:潖Q:ejJ=:^5l''s͘8R*qftEQmV7 b Z\t27{37VVWMCfe-=4yYV"RԮti,d?nOAsSEⱳ#e2C ڞ>h`d $~nJ2ID'L&c:M`S]ʤ]Kj5SBQ"bwvcPU zyKPJ{$cN`POl?y溃7p*  0:`%UQØR .2iY5C j2 +ۇ{Ӿ[M5],Li ϧnrW7a"鸧>BNk陥gb`R,LP3.>rp,'ollӴ᷅WHs0 q/-!UС kX2yX0 ,PS5)aղSҁc}IENDB`galvani-v0.38/doc/image/galvani.svg0000644000175000017500000002116014713174213017115 0ustar burkardburkard image/svg+xml g galvani-v0.38/doc/image/document-save-as.png0000644000175000017500000000732014713174213020636 0ustar burkardburkardPNG  IHDR00W pHYs a aJ%tIMEzbKGD]IDATxZkTյΣ=33<`0APh-CEE+KG55Ws&qhDKDFR1!ϣ'?}ZZ{wWlm3M`Ukut, ]n۳u:~sPdDp|2>{m;/p=ò16ǻB TUf͚2o\d"8[ZQ {5p DhtDgExLOv~vlX\ŭ/{jeYh&BAnhhɲ4LO? #؆H\| \[?#`?hY%W4`0hcY-xsL&uZ%,2 tTD@#{l')^`wT 8LN4Ea]DXeI%qɒ*cw#jԦ0IϛR㯥D6Yߎ@0a/@#Ϩ .\ L Xk,O9K15m+}y`MӡiCD냸3:ȈGOx}xv#e>sDesgQ(y(`hIiP1a,G.ǒKUBAH~S#A2RAQ,WcdYy\]tLlh uJ'Z#i(@uEeKD^X2Jd N`͟b2գ-ʄuGPg D#zו9}[ Vu^-KDزJt+G@HDZo5鳠aZv{.t_Wmb @ȏ׏0C,!13SOb6|_߂ >6W67>ɳU)'+1E*Щލ򊕠$yjLD+ħn޾ܔ̗ƙs [NJ\ir2mSi6b[`:¡H^ȲpҜ3&X9'Kb^#׏xQt^!^y*k Bm7ZL#cHhx[̼+>DfsP< Ti2ar7L^A8ƶ;U% +ؐXnJ|l,*V!4$T5qO`p`Ets$|/+E$=sVU A:(Y])WJ2,@PNat?Eog(td".S `wK0]Ks@@ܭ}΄VNBl)ڷořu{qŅUZ\ -L}SJã߲av;PaL%۹P(ރ@ɶʍX8@8ن|n^O=έN  fv 5IZDD30I:" ̼k P_ڎSZ aQCi{?[%{5 ;۞f?RbRo^FR1!pc#9 ߜǜ#*FCge[Lˊ"q͏e4Ńh:R:>chhEڲkqy LqӍ̨yeg 8J({}gPk۹w>}GdqDP qpO9 \6 q>>c=kGgLEkmD{j&-bݺ/WX`ɗqA޷[],|ݟ3%dRT⺶H2**LTT1纻p;r~87Wxj5k_`s o}}"R경L9D4'ܪ-17|/I"2:u.&|m3O4`^45/0֍'YǰihG۝et qNL'ZԼI7ʊ ؎eJ4 [Ɖl[ZPzjȏWse|cޖř-lnkIBa<{&pvq8C}y%D>aHrO0 <^㾥8 Vǰ8'" )dNާ%0ұ4z}Wɦp<{7ăbH_.m4Š#)^.K, _g/{R)6; %}wqgcZf5WDuB^ŤzvQTUq>pD,Pz+&aQFxtӻ6m17bbX'DM&(^cGGGVb AN䵱{:tRk>|̇}g=Z'?GUe?&1AlHqdc[GtV<(qL?XzW(&5ѕm~rs˹ǟxg?<5CGXqF\|%Xځ UX2N)~ϰ =d_GwϾ^z~k.UQYםw=RM)ecQxGRM/A!^X|7Ϲe_spt׈zܵc_9lhyS- OEp*~- + ng ­+@{-y)QLP?(\|>wlZu N]vŻ?QVw(uM_`F0/n2T=D6V\m0GKC2A ~@z*҃tpqs?Տl'IRڀL&*~R-9LyDc)q9`0J(~B4!\E<GWGBsp~`a(&A` إE]qfL 9u޷b(G:Ke'n44/#‡ELz~SWλSE,aA4gĞw,bzBP]}p7ڻ~z4fsA*A$^`df[2(,@a?,gd(A!cޱ^z9,o[`ȺZ HnJޤ8iͧOdy )Wf3!X+2X,*Q"HaZ=HGaյ-PY}GsRɖ6oNx)1xxj!-.̊/1Nqq^yt ^`R @2%B]r )7Î;f7p(`mܚۍЃS#v ߪ ^weI(jwĆx›VI֘@!} O/8i;vΆwDXM䵼-oXzum:L'Wsh'8#6 %\._`kC1c#aO.jHx1%$IU" `p*%=`>.Y>Q0 V3:څ fgAC@~DU)P1&sPZn\)Epsic!HE#D\Ds}XDn"TmH!:d&jh)PbgHvKb|+z,5 \T N!A":sGP2 '*e<43X_`U~rOW*>" c 4]+dXi,)tXk)_(I> @"?}Xwײ}忏a7"HL`I, X! d K/j]=wML.!@1\¶)B$A:lv4`G2W0> 3#{8֨1vቨ™q8ƺuC[ؓ 6Åh&𑵭~F@8 iALnLkSayc~pHpv:f,.O8N1+/f/!X!GPT` %yל2bē?)/FbB+KUɆ̠A.J4[B47H!2RPZJE"udN[Jbm`:+A! B@^HMڵPxvInȜv:n3[K,A$Q .pK\ϯ. }IM[ EKWAeOlz2|:n8W(+mNul),) D!$ 0 ( I:'Z"z/wKDjEo{c Vyrj}]BFd{MdV'K0ZywJDpHߞsx~5WZ\}A"΄e1% ӎD DRRi8=}Zu f,D j:ph*r)3bUGS!D.A)A<%$ջs" ?<[_򙙸#Nni̬Ыr03(Xj㙀3KI[G̀"PXªe T,3Nts/8=001 1Rh4~ՖY{E&9S5pΌZ0@v5qvRò3oA7]5-ڳVuRWw h UGP[*k0(|8cwr=07c䞘DCۖZ7{ga\֏KI(zc%u ֟o yrSoSu1yv\9JƆ0-3=F xpaȗ*c'#)}?5`2"1֘C)l){?J,O$*hF;(a:^~:9OԍIENDB`galvani-v0.38/doc/image/media-record.png0000644000175000017500000000553314713174213020022 0ustar burkardburkardPNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org< IDATxڽZoT>5'6XY0( 9PEbڢFo$-<$ 8N ¼ BPqBy^ݞhj&#ܻsg33ބh4*M6mJl}TBNTR;C*RIa[TnިrR^dɒ REZyH$eM*[eҥ ?B-d$դex |04ILLdS4ՠ}}ٲe7֭ i/nnn/^P:99Y:w,)))&HSNC5ɐH|Xv(WMs1YYY#T%ܾ}[ݻ'ot2|V{+V({kk֬oWID>p@5M'%%A \br#SQQ!nsh9H&+W,~cEEEigj毯P($ҭ[7x׮]c@S\9A"P@SS> .HuuE\khxvU0lͳ#0f4hui95ysZ\xD@5ZW.{-5&l<4ut8a۷Z\/GqI‰q PHq 脁oj傂{tBp=B<Ncu=BJyheʔ)ӗ>I'Op` mǏeر2l0a WV/ŵ,@q=,UVV&gΜ\üwB5*uamEXa)1,={tn6 <'wܑc[ըk֍TnBѣGc]1}mZb@l4&/օ pL t4޽;.]\]*JR-4IIUn.= ^zɐ!Cع \|9\%P+8C_Ij*"ȵd|Z\jYȁ" 1n8vq@@PL>>ԉڇ>|dgg?qM\M׮$|[@tR/)?}WoaKwԩ?DTׯc!]%j^l-Ҫ35ɠbI hZ  ;~/O ClN 0qf`4 `8HmM|'i}$Ag*$ hDܪ$,wOrZ :'  qWF|hQ>uS> :ZNKxh۵Y!K6؀xB½Hѽ•WwLIƬ F HД\xd\rȶv*Zӥ[:qB |P#1qʸq `p6!˧B777F0 r7i& w(/چ>!8%knoܸ!~'Ôf zK 5O>*yg(pe~u(Ui3#6 t-66Lr &1=꜒x6n8_NHغukX 'U[0ރ֠$~>VT^+`i?Bqm ?w.ϸ3!OD~FPޔ3mjٷQq!r^I5˾ѣGy6p]`&&!hr`N`Gih C+ϟQX\5%cǎmȵǏ7o8w07>g^Æ>0OiJ9'3_>8pc FI/W˾uaB!po^pΝ  .X  1Z#3gD [nhvx( < 7[.SaacL6 !vxt@$A <J:w:t11]^^gH^pCAS"RM-Ҹ "TUUY ʕ+l17yCCI}̈́2b&M/M;v A\<^2d{[7o(%I(೰Lj#,J$nl8㘟Q\\\׬s H`HDqvEHa$쫰0׬Ls̱xΐ'~$kM{]RR|j0{l@;Y6Ƿ/}zkݻGc֬YvZ}LDp6>طo_>X6 (\}f/}nt0!L“N#IENDB`galvani-v0.38/doc/image/media-playback-stop.png0000644000175000017500000000354314713174213021314 0ustar burkardburkardPNG  IHDR00 1 sBITUF pHYs11(RtEXtSoftwarewww.inkscape.org<IDATxڝX[hEw7{Kd( >M@_T ZJ RT$>_ZTXтTJ mf9~936:Ovg朙9'KelD] tf>_^ q?FPlx?9s(FQ3hƓ] |*;0~ Ms=")0dbw? 0D%behdqibV@()$f=L/ \PeQ_NҗT(՝I?_v=&Rhq*(=6NO˔9I_Q_XسoU-M48aG}#Q"-,~2 OEϤfM촎+F%[JjŖ] l]ZwD; FO.  >f29lziKTĐՅi0_ (~gp+Η;Pϵ2bOK:.CAc|*t^O/SVDo,69 bc^t'[Wnwt͸ӧ&A9]VTO؄Ңwރ6oMUb/(aj{Zd8QC%\#չ< HD݊Dȕ 8bI g1i832fO>װ oRc0E ZETTާԂN[, yOe)M?$>pɣ%.2"as ys[]%[-\O'Z;Jd[R^"UFtۚs4Fq-hz#װ͙GAy7(JREmvOWӘUr!XA/u]!v0/u5v%Eu-\m2hȪV$O4U v=>2¯bc9s:qB?ge<]K3O5j|t,Ɍ5iBc+lQ\_ɴ}mb%kC҃ НtI΅Oy1u*M!)`3iig / jE\|0r _=%$$[l:LY|8t[6zTX #fi*/Ge,ʧpc欒upmD"9~|4)и9_vBYErbV6CGɽL=A)ZAЭ+RWKfFTl쁞?l G5Բw~W*`jE<+% P遻oN5IڞqWL5GM7q)8I}xL6hːLtg /^M?c^BEܪpޝĻd( 7-DMwG}XP vjb 6:4e&fTQBzÈ}~cM~L;o]h$M|p+4}?Н^@ԤaŘF\?vz9x$J %+- ^CC|Ś,W^Lbe@V~kq n喐1"8ɭ \%"MLZC }phR#!XE<~݉| ^v.UCUMF h!|p^%D IT\,XH&/C]ːn:'cP2is5Fr]6IENDB`galvani-v0.38/doc/image/document-new.png0000644000175000017500000000463514713174213020076 0ustar burkardburkardPNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org< IDATx՚kl;3kݍqp)(R!(!?- (|U)"_8%"y RVqgn5ah|pqyuU{1PDķž(q?ZO"C)E'f\ʕg]X^_bx3?,$I.~O`FGjuB5Z[ G.d[)EH9缞e]w ofud+ek_KdX/KH3hi"h) =NլrlY ̕r]x?8̂-[<393#s@N)&}}^ Cy9 ,[z<> Oɚt_qrlϱyx34{r~h@H@=j+`@`/u.stuM`sRG`*>OqPר9>YkZ  3DOEũ$9w ǤД>q% a$ *nqg?z()k>'CJlNC8d`yP qu.@B8q@0{.[9(_}ʂx O_(NU+7mL@ZXxd3zGXɴP6<&mdmL &n- dJ4:0F0_ʛ,(y>\ TBa)L!`|[_nXBL(DobiS8Nsκsy|q)+yh` QfP) pʐ68 ^~{,#] G UWsٳ~9 ~|h]@=Hrx߲8T@Yd2lڴIK{n=@\Je@G ^ tE ?@^ᵓx%&q8ؓáu PLF%$NحcaA s@ho٪ipbx=:z ZZ@tlzc.akJ|oq8}}}$IeF.jbd֮]0'@ND3V` ݬ^˲(Je|Wu]_ʔCWW@p&!a\oo/6e@JH#-r7M8eh-*AmX֫#۳3@`%ʃyv!&꼌 ay vHA6`=S.,#A&|Ί q\U:Zyw .3 VzY]qНPniۯnh!&xxR|>mYTץl6Z[oO93!Da'Y/05umգk֨щ ;>x ! m~&`&D!CPhëEi˴tv1s}='ɭ﮽\?W6gc nuE`p8,w\Ub߸z6}|~o!Fl^q;nZR-;q_)忾GnYv+ִjZx ֶ_|~y>|m֔_Xrcux(V:uzcU:cime/Bv :6޻[VކVnF31DB6$pb#؋}`rߦ$n;2-[Eso gjxZKZ_su{Ǽ m&3&%xga 0\.mzid|KquN$M'D`srYV BtցL8M43| u$U-eeZM$,l-&VI .9H.N@ƀPB<8\)Ru!D X7Иi`A.eR7I "+M}ϔ^9FvmX &0 YJ"ET)umʋsp0܎m^cclX"b0`#FT2Vl?/;xꍧ]9amܤ^@=WărA}`.s 9- N9Sݡ=80kk0:/>ч_~xt߫ʶtCp8©ThOUY? q1t=/49>1x>yU~iy)lbB&n=KlZe$Ź"|9ZhPtx Sձ rg-7Vzw؊U]`^:rpwȢ#aG@ܧ@O*m"0/9^KtyU^S3c4N.D2 ;č"]ǶqTU.?#EP8d$(60%x;)c8Bxx{x_b:bңұ @F`"6` l}`-9& š 63w)s+[rss815-sDxJ" 9PUɅ)$ZQ? CBVEi Bu;V]Xއ8&TLʼnu[Iv 5t( vLJXF S0zbIyyv%Oңqɤ(HS2؏տ|V* |Bi/j*ZǢj`3ؠ]} $7Hv8t5 K@aCB5֏az" Y'{w!/fq|M KdV TxO~OR( 4_.ă# ;xOʐ8aYKTZFӔSݠj(N!.kuaN^6pyr!ԋg\ Dv e48AZ-ēU7JJ b-`^H421*i ЛeCKERj󛜚$/W \q6[_((AP'%frM'C‚jk:Ai"[G=1N`^ t\^Z%XYj moO sFa\ߥe}io,]%t3kZ[KQE;-߆)V7zksM@ZZG֯(a hi+AJ'(GOs647ϴ)I)IO5ia[x'vSǯ?{GpAmӴAbH׏ڑ>Niqu()buIENDB`galvani-v0.38/doc/image/button_inactive.png0000755000175000017500000000506514713174213020667 0ustar burkardburkardPNG  IHDRxhM IDATh}Z[ nx;<[A垉*&I  ؟AHD@ߢz8~C_$!uI_kJ~d>P6sʌGllo~{W$̋ʒG 5-T\IPg/'q AݕO"Ɠ̀^\Q ?#v6̺k^WOсέw*l:(n$2]lW3 ;‰ic3k̋z351qv|3ls}wcZQ;^A.ް3ܸiqmͣ.`]P3u#eO ȿWi=~vtWKIQy,eT@\i2 ʙG/ k qkܜEɵeN7wOeK~U&۾$ @];9Q!$gaNόt /*QKp9dt 8QR'LwgVSCQP@Qԝ^m@42w1QE$q7( xTZAH0"Gdcm`=h0xT<ńzgI-A({ F56\|g9AE4pao)dDkmPܡmav凜S3r5jC̷ -1 7? R6 p0dpr#UZ ut}F) ̡LdVVтZ}c9 i^La }?6 __{+撇W<Ï>I`>];P%ˡI<#|_~#>-z_pݰb'>#7QEuػ|v9Q*2YuE!*D)w!fKO(JU% =! \ښey(b$$ٜtɽFFYj1A #3Ȕ&zIPA2eJ$㙩 ȠW$#yHObA)wdp"&wVpX6G+b1I]5]] Za2e10=_Up \a.fQ:y՛ *tW`ܡ(R`TW"zPxMK: DZ2Fl,¤w񨼦A.8I]U樋y4pUB8[tR([rE<`~ɢHYѱj-B4OhuIҢ9NVYre.';D_$ \2u{x]%..)_{QfXMEPZ׌ZgyZ3o+C=ezS /e-&Uevɣ*RJ{ )Ig(Q0mnp`,xweOC5[U(}lrG/P5ېךU,=~6w?RO`2mFlL6\AܹEW) +=G*/̞Q!@hSR4 R-D+H}uʟQ@v 9zuU)V)t|^1 )RO6oLxBA2,7}lЈ9mo2)욚^.D9H_ы:*3n c,n챻DVKcmz>wVgժk<GP+2yGQ>",!%SF z6wP;vP'y }Ӭv:wL$I q$'ӏn<KzSO^1W*۪MK3ofej2*մ dW g(;\ݤ7{O./;lRK׋ݨpgmryte~IT+ Uhg6j0R>ucSx1 ŕ>0HdA 1O0q2!^ 0`QD#7hTL̦YڈQ.YBBta}f*E vUwED|nf# 4w)1j|p.ދsUT=9$izk(H%Xdmm#LaufYFYO]tm14vmQ| FK1}uI}ԣ1)Z̼vbYLcWor$N#H*.+`P댣KY&iyxT>nshqѴrsjj$EP}RτpH`sxo5|_i$vpe縱bAcs 5ϫOckl_U0cK-`ܖQDm!Jq%[}cuzArW)dK0  m7̼(^hge&rۺ*?귙d IENDB`galvani-v0.38/doc/image/document-save.png0000644000175000017500000000411214713174213020231 0ustar burkardburkardPNG  IHDR00WbKGD pHYs a aJ%tIMEzIDATxYKlU3vqH8)O⣈ z,'$ XfoV/["k` HHl#,Ȃ !$>N0 %x]afCws?Uc;]/)MS+V9okO .ez| ;4A+M3_pmZsNI@"e@)ڶ=NEGO.;6λzO[ܡyϿxVvA@ //R!#"V/m!nZ[ PͷO2pԍ0i!0 7ZdTcK(OD(&D x"@لr2k苯׶(嗕a-ϓw:);ߺO2~!<2od@<=Pl|jxe̡(nCK`5JрL@@' J邸0{:WXy@ z̅0,)2)@~_5{ X_<{r 5"-e"c MH[@7I HgmaE`{@D+J 's!')"Z'yK5J񠞒@̠ a:J@kf#ւ 6sbE$GIb16@3XӰܒb@YȠgoqFry{k 18lX,ČIinШpaƔ( rj]Y<++n*O(%G@9ç#$ 逃U@v H*iG`}+P35dt a!\8~ {Y|X+ Xƒ( I0`egn  O..,|@D-0bj! ˬ<8iٱu >Oȉqؽ'SMN@# xbϑ᭣@0Vd,`%&qPٝ$nDEaί}ѣgfY4•W@gf.݅ L3[ryZר8OIn+0ց#cnq}}q: MhH̿ `vN"3 cn a Z]j*:Q4Ժ DLKY}J!ѠP xeC` RR(ubJIDH:Nw{{vwhc~IM9UG&uǏ'N270.S[z.bmm .\N$ S`Cf8IENDB`galvani-v0.38/doc/image/document-print.png0000644000175000017500000000370714713174213020440 0ustar burkardburkardPNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<DIDATxYOTWy3$ C61IuF]ؐt_ЄUĤ&(l!PCcC@*pz{fvMN{}|={g[A|u:cҤn{DosիW/{Jr>/B[ 6`+.M5spR&P.HBzbI@5i5_*B 7@iV*crG͛ "_?0$_P HzIU"<I/I _-~mEZ ~_/k,<L6`!$\.o>xx(]M Bݜ%I 0x=@K"֙.bă~ O]ZZZ~qF#}]A csǏ ar%f34=+!5rWX`. ;HRUXkkkvEX$@'opܭ-WX޽zlbV`f{:=-676~,bq511Q}q1{@2<ֵҀ tTB yTdC!bJٳg|yB l>|Pa %f x DذC1ⶄ\K+o,wakY[WӿI&lc-T- [ Bĉ6}X~z_)QOL6a lىZ; YF%>Uԅr.V o UK\N---%SО@%:lg×ZAb$qvJQF95ot| p1د~ "P699@"}S" PWe_ݠ_V$!b%ؔxJ'C.IܯixƂB= KU?2gfx"-KIENDB`galvani-v0.38/doc/image/dialog-cancel.png0000644000175000017500000000734114713174213020150 0ustar burkardburkardPNG  IHDR00WbKGD pHYs^tIME ,nIDATxyp}?﹇d],˖-c`Ri C0`id&(L00`SHIMoٖ%KNxJk@ә|G_}>{] _Pr#.P w1㠬u ^k9 &CC/Ξr? pBeyQ]@SXܹHpDps9XLW HGSoǻ_=޾tz.K5;$k4N2kY BzB0 ǃ#$ZN1>mmұ?Uskzq maL| gH#w3kK߾v6P yvv4^,.-?col"q%gJ0(nYw6~d?umD'o%0ׁO> l9!lƲvƧ!xaW憺M[Ӵ #&{:ylon:L29x?(3PuKq%\5P[ {W.[0iPyqc, ؐ3! Մ7,kh_Vͣrŗē?߅5!od="cp/;t%Sgu(&7U_%PWSRT\@7/B&{u; fVPegI(P.9F;Iv' xײs]o疊{(+ Qz_$L43ʯ/ׯ@Ս "W:k}`iczЃƐmB(Ps}'!}h7W6EqmV&J$.Nß 'kbYw˦on!\؄ FUxI\f 7ضcYgnڹ6|͡ Ysfl, !J;S=1vw j")s xt"E8k1n6=\^u;u]f=i?ڸNE5ԣKGSώL7+a* B%,+A$_\+[dGjfQnrPD>cOD{Vua~x[SiFhZIEn^pevT1,+L~zh[Ύo[X <] V&jP;Ud܉q,gΓl; aCi ._cŽ86LW&hKg3ړ ;~nƳV"ۈzA0a3hvmt,JtA'/d{U«/=եt;N΄mG,uLlpÇ EPS:PXIݝAn]i}Cv_P]ٿq~ubT&UWK˧}39(6ؾhN*Ԧq^;%TE:"\ \HXA\E?hn̮ hk\q >xgJ?)lu;c$b [d(4(- ` 0-/@t\(|JQhtf֔?-KVt}<ΟM ʟqn¸]@$+Hؕ30|+>LS3h0E_'o+n-M LXnPh]I φY1|BPB-PU|p2+څp&q0| -Ps!H J%]It282+dWV0l 4ýGk :\Qm͒Cӝ[#CY+V`H,7ի$q|Q"&{9OK'[@0_;Ǐۓ*0 8J*.i$刓1@3'.eh@Jo@V="( m1 ϓͮ7R%s'(:8# [!>mA rQ OF3χ2ܮjR`n?34٥%80Bʤ S8 0bʝWqQawgbi q?9S<^6/ 3Ԓ:o vQ !x#. J~G$5>>jfظ6]h(kh>jOc'l~-ݧ16u*Y +\9pFz}8=BbW%&hsy*$֨r?=ҙF`߫+=)jȼ ?&-n@5 j2D.{[GLlơ ~ّ`r7W3}k(3nw \':;nb9jZH-_eo 5ɡK+D$Ƙ'{Ic (K;RfY)gMZ^u -)06FkjIY0n*K&)顬P%r})rbURvu'~!O@0n.7mE:L1&K=lBăq vRf3] "& nc$n}p'4@+॰_c&.1\1 _ЋO Ӿ1TEa>r1';!Hccr}ܧCG0Up.)q8'ynD^/cZP`A1,nTS0#anB((SAOOxTgxWAw`~CUE¦TWF}Y Mãj8FR#iusR9! 6 $ ʿjP<+AU]zW@"MGT,OFыD\"*Ђ;m6kr%3.fL J%&vfx6}6&;<旡$̀tohlK.mLo)c>`8\eOOS}ʀ&޷@" 0/` fO9+FBq"dd6v> ==:#~ _~FB$ ًr 5+,Xs'̊nz+s`9΀q4_;l6 h:lZ˶0 :·b?v[=PGn#eX'pk5iҗ!o #5)Tm o,ծD(*;LowPY31jZzfX!~#$ |A댯Q'<*"r Ee) Xo+@9N 0ŊBXff+A75}^u8#e VEd2R8Œ/b9Kcc " SWG,?D@D&[ 8!N "Mg|VNFfN8@/ûGDe"cs/2G.>WKDy C 2 b3{+'lTL]БӾͧL 6_iJitܱ"_DQX b˯dS]r{͝ˮz_m,s څ.j `c!|ꖻ1tŴyg26O@L %HW^]ik#+Sd'0ro/!c|sj_̔}ٰ̆&"P1"E>6?19Laުh^x>}C 2yE~r^^_F\ISGb;ExMpbOf|ۅ, Pg'&7+]ofg/|< $iqd0{70V(J+t\19j$!_BkSQ &ƗeUV#Fz !Pw>77c a,7Ιd2Qӹ :9sʓӲ}bٽ >s휺+?c.cm56yTAd~@hUs62nLK Qql7"ÌسuTg}GYşn~K):f;Ě%EqWC@V('&`i,jA9fLw ^!!r鋘*x(|# Z 3cP@A40hW UU+M%ƴ#j2E!"Ñ9Tcˈ7iЖ7C ĊF. (:Yn$*S&_)! GB{*_r`qD4?? )wnf 5eQģ E`44U͂'cӄZQނ$Gfo_`]7 uuXY:l+98Y SS0Z(Y.W7Ȏw hA fqB`ĉ t?+Wuf ?]ͽ,x u;yܬ sqT)D0Xkfj@-+¤*P(Þ;䆻Xx|ذ?vqMh FՈ<*׍ݔ\%!$ C>g9k* ýOCP.("v /{?" sC ĽM][a$;!^YPkN>GoK.+WM}<dˏPᨎ0.<,}om$1u?E BF֯ǐV|XP '{(=]]̿)/ޱpZ!߹Y.:}yrvJ ϗX|(HHƱFsPIyP;ЊUc&bȓ嬛崋.#Qm6. }{hTHxvp!| ^7]3e3>J}q`a6(Y `p X 4@k3l)~uJƙs0 k~(O(o> d?YMaTG@V~ZIݬcʋm6ܶsMP#Vp,l8wΏW5"Q(큨va+PF<) _!B"+ۂ8(Ǚ&'Z M(wn>9,cMX 2%Ҿ=4rx;зw@VːŤx|P gOQ4rR_%53g(HF7'H ZϑlD` [)GWc ף^k*kxSi!JW:v@,0u19|9q `J6,ɶ*@$ &PV`k=[N@@SgAf U+j P{";WõЗ~"` [ <Y6X_b'}fDuhE(i_e Galvani Handbuch

Galvani Handbuch

galvani-icon

Einstellungen

Die Parameter der Messung und der Darstellung der Messdaten können im Menü "Einstellungen" festgelegt werden.
Wenn im Menü Einstellungen die Option "Einstellungen automatisch laden" aktiviert ist, werden die Parameter beim Start des Programms aus der Konfigurationsdatei eingelesen.
Wenn im Menü Einstellungen die Option "Einstellungen automatisch speichern" aktiviert ist, werden die Parameter vor dem Beenden des Programms in der Konfigurationsdatei abgelegt.
In den Projekteinstellungen oder in den Einstellungen der Messkanäle gewählte Messfunktionen werden durch den Messvorgang überschrieben, falls das Messgerät diese Daten sendet.
Galvani-Optionen unterteilen sich nach:


Projekteinstellungen

In die Projekteinstellungen werden die wesentlichen Parameter des Messprojekts eingetragen:

  • Titel: Eine kurze Bezeichnung des Messprojekts (optional).
  • Die auf der x-Achse dargestellte Funktion (Kanal 1).
  • Die auf der y-Achse dargestellte Funktion (Kanal 2).
  • Eine Beschreibung des Projektes. Hier können Parameter der Messung oder Angaben zur Probe eingetragen werden (optional).

Für beide Kanäle stehen folgende Messfunktionen zur Auswahl:

  • Gleichspannung (Standardeinstellung)
  • Gleichstrom
  • Wechselspannung
  • Wechselstrom
  • Widerstand
  • Elektrische Letifähigkeit
  • pH-Wert
  • Temperatur

Für den Kanal 1 (x-Achse) kann zusätzlich die Zeitvariable gewählt werden - dies ist die Standardeinstellung.

Galvani stellt die passende Einheit (Volt, Ampere, Ohm, Siemens, pH, °C) je nach der gewählten Messfunktion ein. Wenn die vom Messgerät gesendeten Daten eine Angabe zu Messfunktion und Einheit enthalten, werden die Projekteinstellungen überschrieben. Auch bei den Simulationen pH-Wert und Spektrum werden die Projekteinstellungen überschrieben. Bei der Simulation Spektrum wird für die x-Achse die Messgröße Wellenlänge (400-800 nm) und für die y-Achse Absorption (Intensität) festgelegt.

Neben der gewählten Messfunktion wird das zugeordnete Messgerät bzw. die Simulationsfunktion angezeigt. Ein Klick auf diese Schaltfläche führt zum Einstellungsmenü, wo das entsprechende Gerät konfiguriert werden kann.

Für die Simulation von Titrationskurven kann eine Säure aus einem Dropdown-Menü gewählt werden.
Das Volumen der zu titrierenden Säure, ihre Konzentration sowie die Konzentration des Titrators und die Titrationsgeschwindigkeit können angegeben werden. Ein Wert von 50 mL/min ist bei einem Messintervall von 0,1 Sekunden empfehlenswert.
Zur Berechnung der Titrationskurven verwendet Galvani die tabellierten pKs-Werte der gewählten Säure (H.R.Christen: Grundlagen der allgemeinen und anorganischen Chemie, Frankfurt a.M. 1980, G.H.Aylward, T.J.V.Findlay: Datensammlung Chemie, Weinheim 1975). Der Algorithmus beruht auf dem Konzept von de Levie (R. de Levie: "General expressions for acid-base titrations of arbitrary mixtures", Washington 1995 - Technical report #7, Chemistry Department, Georgetown).


Diagramm-Einstellungen

Die Parameter für das Diagramm findet man im Menü Einstellungen/Diagramm.

Diagramm-Hintergrund

Ein Klick auf die Farbfläche öffnet ein Farbauswahlfenster zur Auswahl der Hintergrundfarbe.

Farbe der Achsen

Ein Klick auf die Farbfläche öffnet ein Farbauswahlfenster zur Auswahl der Achsenfarbe.

Gitter

Über einen Schalter lässt sich das Gitter im Diagramm ein- und ausschalten.
Ein Klick auf die Farbfläche öffnet ein Farbauswahlfenster zur Auswahl der Farbe der Gitterlinien.

Darstellung der Messwerte

Für das Aussehen der Datenpunkte und ihre Verbindung im Diagramm können folgende Parameter ausgewählt werden:

  • Punktesymbol (Kreuz, Kreis, Quadrat, Raute oder kein Symbol)
  • Aussehen der Symbole (gefüllt oder Umriss)
  • Größe der Symbole in Punkten
  • Verbindung der Symbole (Linie, Kurve oder keine Verbindung).
    Kurvenabschnitte berechnet Galvani als kubische (Hermite) Splines.
  • Linienstil (durchgehend, gestrichelt oder punktiert)
  • Linienfarbe: Ein Klick auf die Farbfläche öffnet ein Farbauswahlfenster zur Auswahl der Linienfarbe.

Skalierung

Über einen Schalter kann die automatische Skalierung des Diagramms ein- und ausgeschaltet werden. Ein weiterer Schalter erzwingt die Darstellung der Nulllinie.
Die Grenzen des Koordinatensystems können in die entsprechenden Eingabefelder manuell eingetragen werden. Wenn der Schalter "auto" aktiv ist, werden die Koordinatengrenzen ausgehend von den manuell eingegebenen automatisch angepasst.

Projekt-Titel

Ein Schalter legt fest, ob der Titel des Projekts als Überschrift über dem Diagramm angezeigt wird.


Einstellungen für die Messwert-Kanäle

Die Parameter für die Messwert-Kanäle findet man im Menü Einstellungen/Messdaten Kanal X / Y.
Die Optionen sind für beide Kanäle weitgehend identisch. Allerdings kann die Zeitvariable nur für den Kanal 1 (X-Achse) gewählt werden. Andere Messgeräte als Digitalmultimeter können nur für Kanal 2 (Y-Achse) ausgewählt werden.

Datenquelle

Für Kanal 1 ist die Zeitvariable die Standardeinstellung.
Außerdem gibt es folgende Auswahlmöglichkeiten:

  • Digitalmultimeter (Standardeinstellung für Kanal 2)
  • Anderes Messgerät (nur Kanal 2)
  • Simulation

Messintervall

Das Messintervall (der zeitliche Abstand zwischen zwei Messungen) kann stufenlos bis zu einem Maximalwert von 1 Stunde (3600 Sekunden) gewählt werden. Der Mindestwert wird im Falle eines Digitalmultimeters oder anderen digitalen Messgeräts durch das Messgerät festgelegt (Parameter "Timeout").
Das Messintervall wird in den Einstellungen für Kanal 2 (Y) gewählt.

Datenquelle Simulation

Diese Einstellung erlaubt die Simulation von Messungen. Der Benutzer kann einzelne Parameter für die Simulation wählen oder automatisch erzeugen lassen. Galvani moduliert die Berechnung der Messwerte durch Zufallsvariablen.
Folgende Optionen stehen zur Verfügung:

  • Linear
  • Exponentiell (Zerfallskurve)
  • Chromatogramm (Peakmodellierung durch die Gauß-Funktion)
  • pH-Diagramm (Titrationskurve)

Datenquelle Digitalmultimeter

Galvani unterstützt die Kommunikation mit dem Messgerät über die serielle Schnittstelle (RS232C) und über die USB-Schnittstelle (USB-TMC). Für die Kommunikation mit dem Messgerät muss der Benutzer auf die jeweilige Schnittstelle zugreifen können.
Für die serielle Schnittstelle wird er am einfachsten der Gruppe dialout hinzugefügt: sudo usermod -aG dialout [benutzername].
Für den Zugriff auf die USB-Schnittstelle kann mit Root-Rechten im Verzeichnis /etc/udev/rules.d/ eine Datei "usbtmc.rules" angelegt werden:
# Devices
KERNEL=="usb/*", MODE="0660", GROUP="plugdev"
KERNEL=="usbtmc[0-9]*", MODE="0660", GROUP="plugdev"
Dadurch wird die Schnittstelle der Gruppe plugdev zugeordnet und der Benutzer kann erforderlichenfalls der Gruppe plugdev hinzugefügt werden: sudo usermod -aG plugdev [benutzername].


Galvani stellt Konfigurationsdateien (Dateierweiterung .dmm) für einige Digitalmultimeter zur Verfügung. Sie liegen im Galvani-Datenverzeichnis des Benutzers ~/galvani/. Die aktuelle Version von Galvani unterstützt ausschließlich Geräte, die Messwerte als ASCII-Daten senden. Galvani unterstützt auch die Kommunikation über SCPI (Standard Commands for Programmable Instruments).
Über den Button Laden werden die Geräteeinstellungen aus der Konfigurationsdatei eingelesen und in einer Liste von bis zu 10 Geräten gespeichert. Die konfigurierten Geräte stehen dann für einen Messvorgang auf beiden Kanälen zur Verfügung.
Manuell konfigurierte Parameter können als Gerätedatei nach Klick auf den Button Speichern auf dem Datenträger gesichert werden.

Parameter für die Kommunikation über die serielle Schnittstelle:

  • Interface: Galvani listet alle verfügbaren Schnittstellen auf.
    Die Schnittstellen /dev/ttyS0 - /dev/ttyS3 werden allerdings auch dann gelistet, wenn sie physikalisch nicht verfügbar sind. Die Auswahl führt zu einem korrupten Port, der nicht zurückgesetzt werden kann. Das Programm muss dann neu gestartet werden.
    Eine Schnittstelle wird durch einen Messvorgang belegt und wird erst durch Beenden der Messung geschlossen und ist dann wieder verfügbar.
    Bei der Auswahl einer seriellen Schnittstelle werden weitere Parameter (s.u.) angezeigt.
  • SCPI (Schalter): Das Gerät unterstützt die Kommunikation über SCPI-Befehle.
  • Externes Setup (Schalter): Die Messfunktion des Gerätes kann über die Schnittstelle gesteuert werden.
    Wenn dieser Schalter aktiviert ist, können in weiteren Auswahlfeldern Messfunktion und Messbereich eingestellt und die Steuercodes für die einzelnen Messfunktionen in Eingabefelder eingegeben werden.
  • Baudrate: Datenübertragungsrate (600-115200 Bit/s)
  • Zeichenbreite: Anzahl der Datenbits (7 oder 8)
  • Stopbits: (1 oder 2)
  • Flusskontrolle: Kommunikationssteuerung (Hardware, Software oder keine)
  • Parität: Kontrollbit (odd, even oder none)
  • Polling (Schalter): Das Gerät erwartet ein Anforderungszeichen ("D" bzw. "MEAS?" als SCPI-Befehl) für das Senden der Messdaten.
  • Bytes: Galvani wartet beim Auslesen der Daten, bis die angegebene Anzahl von Bytes vom Gerät gesendet wurden (Standard: 0).
  • Messwerte: Anzahl der vom Gerät gesendeten Messwerte (Standard: 1)
  • Timeout: Zeitlicher Mindestabstand zwischen zwei Messungen (gerätespezifisch).

Datenquelle Messgerät

Neben Digitalmultimetern können auch spezielle Messgeräte mit serieller Kommunikation in Galvani verwendet werden. Hier ist nach der Geräteauswahl lediglich die Schnittstelle anzugeben.
Galvani unterstützt aktuell folgende Messgeräte:

  • pH-Meter Lutron PH-207



galvani-v0.38/doc/de/files.html0000644000175000017500000000417214713174213016255 0ustar burkardburkard Galvani Handbuch

Galvani Handbuch

galvani-icon

Programm-Ordner und Dateien

Das Zeichen "~" in den folgenden Pfadangaben steht für das persönliche Verzeichnis des Benutzers.

~/galvani/

Dieser Ordner im Home-Verzeichnis des Benutzers enthält die Konfigurationsdateien für bekannte Messgeräte (.dmm).

~/galvani/data/

Standard-Speicherort für von Galvani erzeugte Messdaten-Dateien (.dat) sowie vom Programm exportierte Diagramme als Grafikdateien (.png, .svg, .eps).

~/.galvani/

In diesem versteckten Ordner liegt die Datei galvani.ini, in der festgelegt ist, ob die Programmeinstellungen automatisch gespeichert bzw. geladen werden sollen, sowie die Konfigurationsdatei galvani.conf, in der alle Programmeinstellungen gespeichert werden.

/tmp/galvani/

Ordner für temporäre Dateien.

galvani-v0.38/doc/de/index.html0000644000175000017500000000504714713174213016264 0ustar burkardburkard Galvani Handbuch

Galvani Handbuch

galvani-icon

Galvani - ein Programm zur grafischen Darstellung und Auswertung von Messdaten

Galvani liest Messdaten von Digitalmultimetern oder anderen digitalen Messgeräten über eine serielle Schnittstelle. Die Messdaten werden in einem Diagramm grafisch dargestellt. Zur Erfassung der Messdaten stehen zwei Kanäle zur Verfügung, so dass zwei Messgeräte parallel verwendet werden können.

Zur Auswertung stehen verschiedene mathematische Transformationen der Daten zur Verfügung:

  • Umkehrung (1/x)
  • Logarithmus
  • Umwandlung der Thermospannung von Kupfer/Konstantan- und Nickel/Chromnickel-Thermoelementen in Temperaturdifferenzen
  • Umwandlung der Zeitachse in Volumina für Titrationen

Die Auswertung des Funktionsgraphen kann durch verschiedene Operationen unterstützt werden:
  • Differentialfunktion
  • Integration von Peakflächen bei Chromatogrammen mit tabellarischer Ausgabe
  • Lineare Regression der Messdaten

Diagramme können in verschiedenen Dateiformaten (PNG, SVG, EPS) exportiert oder als Messbericht ausgegeben werden.

Zusätzlich können Messdaten (in Kombination mit Zufallsvariablen) simuliert werden als:
  • Lineare Funktion
  • Exponentialfunktion (Zerfallskurve)
  • Chromatogramm
  • Titrationskurve

galvani-v0.38/doc/de/toolbar.html0000644000175000017500000001234714713174213016620 0ustar burkardburkard Galvani Handbuch

Galvani Handbuch

galvani-icon

Die Symbolleiste

Schaltflächen der Symbolleiste

Galvani verwendet die Gtk-Symbole. Je nach gewähltem Symboltheme können die in dieser Anleitung enthaltenen Symbole von denen des Desktops abweichen.

Ein neues Projekt anlegen.
Danach öffnet sich die Eingabemaske "Projekteinstellungen", auf der verschiedene Daten zum Messprojekt eingetragen werden können.


Projekteinstellungen bearbeiten


Messdaten aus Datei importieren.
Der Standard-Pfadname für Galvani-Messdaten ist ~/galvani/data/ im Home-Verzeichnis des Benutzers. Wenn die Datei unbekannte Funktionsnamen enthält (z.B. in anderen Sprachen), können diese bekannten Funktionen zugeordnet werden. Nach dem Einlesen werden zunächst die in der Datei gespeicherten Parameter des Messprojekts eingeblendet. Titel und Beschreibung des Projekts können editiert werden, alle anderen Daten sind gesperrt. Die Messdaten werden dann als Diagramm dargestellt und können weiter ausgewertet werden.


Messdaten als Datei speichern.
Der Standard-Pfadname für Galvani-Messdaten ist ~/galvani/data/ im Home-Verzeichnis des Benutzers. Die Standard-Dateierweiterung ist ".dat".


Diagramm exportieren.
Der Standard-Pfadname für Diagramm-Dateien ist ~/galvani/data/ im Home-Verzeichnis des Benutzers. Mit der Eingabe des Dateinamens kann der Benutzer steuern, ob das Diagramm als PNG-, SVG- oder EPS-Datei gespeichert wird. Dazu muss lediglich die entsprechende Dateierweiterung gewählt werden.


Öffnet den Druckdialog zur Ausgabe der aktuellen Messdaten.
Im Druckdialog können einzelne Elemente des Reports an- bzw. abgewählt werden.


Beginnt eine neue Messung.
Falls das Projekt noch nicht konfiguriert wurde, öffnet sich die Eingabemaske "Projekteinstellungen". Danach wird ein Messdiagramm angezeigt.


Startet den Messvorgang (wird nach Beginn der Messung angezeigt).
Alternativ kann die Eingabetaste gedrückt werden.


Startet einen Timer (Vorgabe 10 Sekunden) für den Messvorgang (wird nach Beginn der Messung angezeigt).


Bricht den Messvorgang ab.


Stoppt den Messvorgang (wird nach dem Start des Messvorgangs angezeigt).
Alternativ kann die Leertaste gedrückt werden. Danach kann die Auswertung der Messdaten erfolgen.


Beendet die Messung (wird nach dem Abbruch des Messvorgangs angezeigt).
Nach Löschen des Diagramms kann eine neue Messung gestartet werden. Die Einstellungen bleiben dabei erhalten.


Stellt die ursprünglichen Koordinatengrenzen wieder her (wird nach Auswahl eines Diagrammbereichs angezeigt).



galvani-v0.38/doc/de/eval.html0000644000175000017500000001670014713174213016102 0ustar burkardburkard Galvani Handbuch

Galvani Handbuch

galvani-icon

Auswertung von Messdiagrammen

Die Auswertung der Messdaten kann nach Abschluss einer Messung oder nach dem Einlesen einer Messdaten-Datei durchgeführt werden.
Dazu im Menü Auswertung/Messdaten wählen. Das Fenster Datenauswertung wird angezeigt.

Einen Ausschnitt des Diagramms vergrößern (zoomen)

Nach dem Start der Auswertung werden im Display die Koordinaten des Mauszeigers im Diagramm angezeigt.
Ein Ausschnitt des Diagramms wird durch Aufziehen eines Rechtecks mit der Maus gewählt und auf die Diagrammfläche projiziert. Dabei glättet Galvani die Grenzen des Koordinatensystems.
Um zu den ursprünglichen Koordinaten des Messdiagramms zurückzukehren, in der Werkzeugleiste das Symbol auswählen.

Datentransformation (Umrechnung von x- und y-Werten)

Galvani stellt einige Umrechnungsverfahren zur Verfügung, die in der Auswertung von Messdiagrammen häufiger vorkommen. Die einzelnen Transformationen können auch miteinander kombiniert werden.
Die Messdaten selbst werden dabei nicht verändert. Wenn die Transformation wieder zurückgenommen wird, werden die Messdaten in ihrer ursprünglichen Form dargestellt. Auch die Messfunktion wird wieder hergestellt.

Titrator-Volumen

Die Zeitvariable wird in Volumenanteile (Sekunden -> Milliliter) umgerechnet. Diese Transformation ist für volumetrische Analysen (Titrationen) gedacht, bei denen mit einer Titrationspumpe oder einer Gleichlaufbürette gearbeitet wird, so dass eine konstante Auslaufgeschwindigkeit vorliegt.

  • Den Schalter Titrator-Volumen aktivieren.
  • Die Auslaufgeschwindigkeit der Gleichlaufbürette (muss in einem Vorversuch ermittelt werden) in der Einheit ml/min in das Eingabefeld eintragen.
  • Die Auswahl mit OK übernehmen.

Im Diagramm wird auf der x-Achse die Messgröße Volumen in der Einheit Milliliter angezeigt.

Thermospannung eines Thermoelementes

Diese Funktion kann nur gewählt werden, wenn die Messdaten des Kanals in der Funktion Gleichspannung vorliegen.
Die gemessene Spannung des Thermoelemente-Paares (unterstützt werden Kupfer/Konstantan- und Nickel/Chromnickel-Thermoelemente) wird in die Temperaturdifferenz (in Kelvin, Anzeige in °C) umgerechnet. Thermoelemente eignen sich zur genauen Messung von Temperaturdifferenzen, wenn ein hochauflösendes Digitalmultimeter (Empfindlichkeit im Mikrovoltbereich) verwendet wird. 1 °C entspricht bei einem Kupfer/Konstantan-Thermoelement oder einem Nickel/Chromnickel-Thermoelement einer Thermospannung von etwa 39 µV, der Wert ist allerdings temperaturabhängig, die Steigung nicht linear. Galvani berechnet die Temperaturdifferenz aus der Spannung mit Hilfe einer polynomialen Interpolation mit einer Genauigkeit von +/- 0,01 °C im Messbereich von 0 °C bis 100 °C.
Zur Messung der Temperatur einer Messstelle muss das zweite Thermoelement auf einer konstanten Temperatur gehalten werden z.B. mit schmelzendem Eis auf 0 °C.

  • Im Auswahlfeld Thermoelement Cu/CuNi für Kupfer/Konstantan bzw. Ni/NiCr für Nickel/Chromnickel wählen.
  • Die Auswahl mit OK übernehmen.

Im Diagramm wird auf der y-Achse die Messgröße Temperatur in der Einheit °C angezeigt.

Umkehrung (reziproke Datenwerte)

Entspricht der Datentransformation x -> 1/x

  • Den Schalter Umkehrung aktivieren.
  • Die Auswahl mit OK übernehmen.

Die Messfunktion Widerstand (Einheit Ohm) wird zur Messfunktion Leitfähigkeit (Einheit Siemens) bzw. umgekehrt. In allen anderen Fällen wird der Ausdruck "1/" vor der Messfunktion und Einheit im Diagramm angezeigt.

Logarithmus (dekadisch)

Entspricht der Datentransformation x -> log x

  • Den Schalter Logarithmus aktivieren.
  • Die Auswahl mit OK übernehmen.

Der Ausdruck "log" wird vor der Messfunktion und Einheit im Diagramm angezeigt.

Funktionen

Funktionsgraph

Ein Klick auf die Farbfläche öffnet ein Farbauswahlfenster zur Auswahl der Farbe des Funktionsgraphen.

Lineare Regression

Nach Aktivierung des Schalters wird eine lineare Regression der Messdaten durchgeführt.
Die Parameter (Steigung und Achsenabschnitt der Geraden) werden angezeigt und die resultierende Gerade ins Diagramm der Messwerte eingezeichnet.

Differentialfunktion

Nach Aktivierung des Schalters wird die erste Ableitung der Messdaten-Funktion berechnet. Der Differentialquotient wird auf der Basis des gleitenden Durchschnitts berechnet. Der Kurvenverlauf der Maxima wird an ein Gauss-Modell angepasst (Regression nach der Methode der kleinsten Fehlerquadrate). Galvani gibt die Maxima der Differentialfunktion aus und zeichnet den Funktionsgraphen (Gauss-Modell) zusammen mit den Differentialquotienten der Datenpunkte in das Diagramm der Messwerte ein. Aus der Differentialfunktion können Wendepunkte (Titrationskurven) der Messdaten-Funktion abgelesen werden.

Peak-Integration

Nach Aktivierung des Schalters werden Peaks im Verlauf der Messdaten gesucht. Diese Funktion ist für die Auswertung von Chromatogrammen hilfreich.
Galvani gibt eine Tabelle mit den x-Koordinaten der Maxima (Retentionszeit), der Peakflächen (Substanzmenge) und den prozentualen Anteilen an der Gesamtfläche aller Peaks an.
Optional können im Diagramm die Peakflächen, die Peakgrenzen sowie die Basislinie des Chromatogramms dargestellt werden.

galvani-v0.38/doc/de/menu.html0000644000175000017500000001677714713174213016135 0ustar burkardburkard Galvani Handbuch

Galvani Handbuch

galvani-icon

Das Menü

Menü Datei

Neu

Erstellt ein neues Projekt.
Danach öffnet sich die Eingabemaske "Projekteinstellungen", auf der verschiedene Daten zum Messprojekt eingetragen werden können.

Öffnen

Lädt mit Galvani gespeicherte Messdaten von einem Datenträger.
Der Standard-Pfadname für Galvani-Messdaten ist ~/galvani/data/ im Home-Verzeichnis des Benutzers.
Wenn die Datei unbekannte Funktionsnamen enthält (z.B. in anderen Sprachen), können diese bekannten Funktionen zugeordnet werden. Nach dem Einlesen werden zunächst die in der Datei gespeicherten Parameter des Messprojekts eingeblendet. Titel und Beschreibung des Projekts können editiert werden, alle anderen Daten sind gesperrt. Die Messdaten werden dann als Diagramm dargestellt und können weiter ausgewertet werden.

Speichern

Speichert die aktuellen Messdaten als Textdatei.
Der Standard-Pfadname für Galvani-Messdaten ist ~/galvani/data/ im Home-Verzeichnis des Benutzers. Die Standard-Dateierweiterung ist ".dat".

Exportieren

Speichert das aktuelle Diagramm als Bilddatei.
Der Standard-Pfadname für Diagrammdateien ist ~/galvani/data/ im Home-Verzeichnis des Benutzers.
Mit der Eingabe des Dateinamens kann der Benutzer steuern, ob das Diagramm als PNG-, SVG- oder EPS-Datei gespeichert wird. Dazu muss lediglich die entsprechende Dateierweiterung gewählt werden.

Drucken

Öffnet den Druckdialog zur Ausgabe der aktuellen Messdaten. Hier können die systemüblichen Einstellungen (Druckerwarteschlange, Seiteneinstellungen usw.) festgelegt werden. Im Abschnitt Seitenelemente können einzelne Elemente des Reports an- bzw. abgewählt werden:

  • Titel des Projekts
  • Projektbeschreibung
  • Diagramm
  • Ergebnisse der Auswertung (Peakflächen bei Chromatogrammen oder Parameter einer linearen Regression

Für die Druckvorschau muss der Dokumentenbetrachter evince installiert sein.

Beenden

Beendet das Programm.



Menü Ansicht

Display

Der Schalter Display legt fest, ob die Messwerte während des Messvorgangs im rechten oberen Bereich des Fensters numerisch angezeigt werden.
Während der Auswertung des Messdiagramms gibt das Display die x- und y-Werte der Cursorposition im Diagramm wieder und ist immer aktiv.



Menü Messung

Neu

Beginnt eine neue Messung mit den gewählten Einstellungen.
Falls das Projekt noch nicht konfiguriert wurde, öffnet sich die Eingabemaske "Projekteinstellungen". Danach wird ein Messdiagramm angezeigt.

Messung starten

Startet den Messvorgang. Alternativ kann die Eingabetaste gedrückt werden.



Messung mit Timer starten

Startet einen Timer (Vorgabe 10 Sekunden) für den Messvorgang.



Messung abbrechen

Bricht den Messvorgang ab.



Messung anhalten

Stoppt den Messvorgang. Alternativ kann die Leertaste gedrückt werden.
Danach kann die Auswertung der Messdaten erfolgen.



Messung beenden

Beendet die Messung. Nach Löschen des Diagramms kann eine neue Messung gestartet werden. Die Einstellungen bleiben dabei erhalten.



Menü Auswertung

Messdaten

Startet die Auswertung der Messdaten.



Menü Einstellungen

Messdaten Kanal X

Hier können die Parameter für den Kanal 1 (X) festgelegt werden: Auswahl des Messgeräts bzw. einer Simulation, Parameter der Datenübertragung.



Messdaten Kanal Y

Hier können die Parameter für den Kanal 2 (X) festgelegt werden: Auswahl des Messgeräts bzw. einer Simulation, Parameter der Datenübertragung.



Diagramm

Hier können die Parameter für das Diagramm festgelegt werden: Farben, Punktesymbole, Linienstil, Koordinaten.



Einstellungen speichern

Speichert die aktuellen Einstellungen in der Galvani-Konfigurationsdatei.



Einstellungen laden

Lädt alle Einstellungen aus der Galvani-Konfigurationsdatei.



Einstellungen automatisch speichern

Dieser Schalter legt fest, ob die Programmeinstellungen automatisch beim Beenden des Programms gespeichert werden.



Einstellungen automatisch laden

Dieser Schalter legt fest, ob die Programmeinstellungen automatisch beim Start des Programms geladen werden.



Menü Hilfe

Zugriff auf diese Anleitung und allgemeine Informationen zum Programm.



galvani-v0.38/doc/de/mess.html0000644000175000017500000000752614713174213016130 0ustar burkardburkard Galvani Handbuch

Galvani Handbuch

galvani-icon

Der Messvorgang

Galvani unterstützt die Kommunikation mit dem Messgerät über die serielle Schnittstelle (RS232C) und über die USB-Schnittstelle (USB-TMC). Für die Kommunikation mit dem Messgerät muss der Benutzer auf die jeweilige Schnittstelle zugreifen können.
Für die serielle Schnittstelle wird er am einfachsten der Gruppe dialout hinzugefügt: sudo usermod -aG dialout [benutzername].
Für den Zugriff auf die USB-Schnittstelle kann mit Root-Rechten im Verzeichnis /etc/udev/rules.d/ eine Datei "usbtmc.rules" angelegt werden:
# Devices
KERNEL=="usb/*", MODE="0660", GROUP="plugdev"
KERNEL=="usbtmc[0-9]*", MODE="0660", GROUP="plugdev"
Dadurch wird die Schnittstelle der Gruppe plugdev zugeordnet und der Benutzer kann erforderlichenfalls der Gruppe plugdev hinzugefügt werden: sudo usermod -aG plugdev [benutzername].

Der Ablauf einer Messung läuft idealtypisch nach folgenden Schritten ab:

  1. Das Messgerät über die serielle oder USB-Schnittstelle (/dev/ttyS0 ... S3, /dev/ttyUSB0 usw.) mit dem Computer verbinden.
  2. Ein neues Projekt erstellen und konfigurieren.
  3. Die Einstellungen für die Messkanäle konfigurieren. Dabei die Parameter für das angeschlossene Messgerät einlesen oder manuell konfigurieren.
    Wenn das Messgerät über die serielle oder USB-Schnittstelle gesteuert werden kann, den Schalter Externes Setup aktivieren und Messfunktion sowie ggf. Messbereich auswählen.
  4. Die Einstellungen für das Diagramm wählen, falls erforderlich.
  5. Eine neue Messung beginnen (Menü Messung/Neue Messung oder Symbol ).
  6. Den Messvorgang starten (Menü Messung / Messung starten oder Symbol oder Eingabetaste drücken).
  7. Den Messvorgang anhalten (Menü Messung / Messung anhalten oder Symbol oder Leertaste drücken).
  8. Die Messergebnisse auswerten.
  9. Die Messdaten speichern (Menü Datei / Speichern oder Symbol ).
  10. Die Messung beenden (Menü Messung / Messung beenden oder Symbol ).

galvani-v0.38/doc/en/0000755000175000017500000000000014713174213014273 5ustar burkardburkardgalvani-v0.38/doc/en/options.html0000644000175000017500000002643714713174213016670 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

Settings

Settings for measurement and data plotting can be defined in the menu "Settings".
If the option "autoload options" is active, all parameters are read from the configuration file at program start.
If the option "autosave options" is active, all parameters are saved in the configuration file at program end.
Function parameters, which are defined in project or data channel settings, will be overwritten during the measurement, if the device is sending these data.
Galvani options can be classified as:


Project settings

In the project settings the main measurement parameters are defined:

  • Title: A short identifier of the measurment project (optional).
  • The function shown on x-axis (data channel 1).
  • The function shown on y-axis (data channel 2).
  • A project comment. In this entry the measurement parameters or a description of the sample can be filled in (optional).

For both channels these measurement functions ca be selected:

  • DC voltage (default)
  • DC current
  • AC voltage
  • AC current
  • Resistance
  • Electrical conductivity
  • pH
  • Temperature

In channel 1 (x-axis) the time variable can also be selected - this is the default option.

Galvani selects the unit (volt, ampere, ohm, siemens, pH, °C) according to the defined function. If the data sent by the device contain a function and a unit, project or channel settings are overwritten. Project settings are also overwritten when a simulation pH or spectrum is selected. With simulation spectrum the function wavelength (400-800 nm) is selected for x-axis and absorption (intensity) for y-axis.

Together with the measurement function the related device e.g. simulation type is shown. A click on this button leads to the settings menu where the related device can be configured.

For simulation of titration curves the convenient acid can be chosen from a dropdown list. The user can fill in the acid volume an concentration, the concentration of the titrator (sodium hydroxide) an the titration velocity. A value of 50 mL/min with a time interval of 0.1 seconds is suitable.
For the calculation of titration curves Galvani uses the tabulated pKs-values (H.R.Christen: Grundlagen der allgemeinen und anorganischen Chemie, Frankfurt a.M. 1980, G.H.Aylward, T.J.V.Findlay: Datensammlung Chemie, Weinheim 1975). The algorithm is based on the concept of de Levie (R. de Levie: "General expressions for acid-base titrations of arbitrary mixtures", Washington 1995 - Technical report #7, Chemistry Department, Georgetown).


Diagram settings

Diagram settings can be selected in menu Settings/diagram.

Background

A mouse click on the area opens a colour selection window where the background colour can be chosen.

Colour of axes

A mouse click on the area opens a colour selection window where the axes' colour can be chosen.

Grid

Turn on the switch to show the grid.
A mouse click on the area opens a colour selection window where the grid colour can be chosen.

Data points

To define the appearance and the junction of data points, these options can be chosen:

  • Symbol (cross, circle, square, diamond or no symbol)
  • Appearance of symbols (filled or outline)
  • Size of the symbols in points
  • Junction of symbols (line, curve or no junction).
    Galvani calculates curve segments by cubic (Hermite) splines.
  • Line style (solid, dashed or dotted)
  • Line colour: A mouse click on the area opens a colour selection window where the line colour can be chosen.

Scaling

Turn on the switch for autoscaling the diagram coordinates. Another switch forces the zero line to be shown.
The limits of the coordinate system can be adjusted manually in the appropiate entry fields. If the switch "autoscale" is on, the coordinate system is adjusted to actual data based on the manually defined.

Project title

Turn on the switch to show the project title as headline of the diagram.


Settings for data channels

Parameters for data channels can be selected in menu Settings/Data channel X / Y.
Most options are identical for both data channels. The time variable can only be selected for channel 1 (x-axis). Other devices than digital multimeters can be chosen only for channel 2 (y-axis).

Data source

The time variable is the default function for channel 1.
In addition there are the following options:

  • Digital multimeter (default for channel 2)
  • Other device (only channel 2)
  • Simulation

Measurement interval

The measurement interval (the time difference between two measurements) can be chosen up to a maximum of 1 hour (3600 seconds). The minimum is defined by the multimeter or device (parameter "timeout").
Choose the measurement interval in the selection window for channel 2 (y).

Data source simulation

This option allows the simulation of measurements. The user can define special simulation parameters or let galvani create them (auto). Galvani modulates the calculation of data with random variables.
The following functions are available:

  • Linear
  • Exponential (decay curve)
  • Chromatogram (Peak modeling by Gauß function)
  • pH-diagram (titration curve)

Data source digital multimeter

Galvani supports communication to the instrument over a serial (RS232C) or USB (USB-TMC) interface. In order to communicate to the device the user must have access to these interfaces.
A common way to achieve this for the serial interface is to add the user to the group dialout:
sudo usermod -aG dialout [username].
For an USB interface a file "usbtmc.rules" can be generated in /etc/udev/rules.d/:
# Devices
KERNEL=="usb/*", MODE="0660", GROUP="plugdev"
KERNEL=="usbtmc[0-9]*", MODE="0660", GROUP="plugdev"
In that way the interface is writable by the group plugdev. If necessary the user can be added to this group:
sudo usermod -aG plugdev [username].


Galvani supplies configuration files (extension .dmm) for some devices. They can be found in the user's Galvani data directory ~/galvani/. This version of Galvani supports only devices sending ASCII data. Galvani supports although communication by SCPI commands (Standard Commands for Programmable Instruments).
With the Load button the device settings are read from a configuration file and saved in a list of up to 10 devices. Configured devices can be selected for measurements on both channels.
Manually configured parameters can be saved as files by clicking on the Save button.

Parameters for serial communication:

  • Interface: Galvani lists all available interfaces.
    The interfaces /dev/ttyS0 - /dev/ttyS3 are listed even when they are physically not available. When they are chosen in this case, this leads to a corrupted port, which cannot be resetted. The program then must be restarted.
    An interface is occupied by a measurement operation. It will be unavailable until the measurement process is terminated.
    When a serial interface (RS232C) is chosen, further parameters are shown (see below).
  • SCPI (switch): The instrument supports communication by SCPI commands.
  • Remote control (switch): The measurement function of the device can be set up over the serial interface.
    If this switch is on, measurement function and range can be selected in further choice boxes and input fields can be filled with control strings.
  • Baudrate: data transfer rate (600-115200 Bit/s)
  • Charsize: number of data bits (7 or 8)
  • Stopbits: (1 or 2)
  • Flowcontrol: control of serial communication (hardware, software or none)
  • Parity: control bit (odd, even or none)
  • Polling (switch): The device expects a request character ("D" or "MEAS?" in case of SCPI) before sending data.
  • Bytes: Galvani waits for the specified number of bytes to be sent by the device (default: 0).
  • Values: Number of data values sent by the device (default: 1)
  • Timeout: Minimal timeout between data readings (device dependent).

Data source device

Besides digital multimeters other measuring devices with serial communication can be used in Galvani. The device being chosen only the interface must be selected.
This version of Galvani supports the following devices:

  • pH meter Lutron PH-207



galvani-v0.38/doc/en/files.html0000644000175000017500000000400114713174213016256 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

Files and folders of Galvani

The character "~" in the following path expressions is representing the user's home directory.

~/galvani/

This folder in the user's home directory contains configuration files for known devices (.dmm).

~/galvani/data/

Default storage location for data files generated by Galvani (.dat) and also diagrams exported as files (.png, .svg, .eps).

~/.galvani/

In this hidden folder you can find the file galvani.ini, which determines whether the program settings are saved resp. loaded automatically. Galvani has its configuration file galvani.conf, holding all program settings, in this place.

/tmp/galvani/

Folder for temporary files.

galvani-v0.38/doc/en/index.html0000644000175000017500000000451414713174213016274 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

Galvani - a program for plotting and evaluating measurement data

Galvani reads measurement data from digital multimeters or other digital devices over a serial interface. Measurement data are plotted in a diagram. Two channels can be used for data recording - therefore two devices can be used in parallel.

Some mathematical transformations can be used in data evaluation:

  • Inverse (1/x)
  • Logarithm
  • Conversion of copper/constantan or nickel/chrome nickel thermocouple voltage to temperature difference
  • Conversion of timeline to volume (for titrations)

There are some mathematical operations available for evaluation of graphs:
  • Differential function
  • Integration of peak area in Chromatograms including tabulation
  • Linear regression of measurement data

Diagrams can be exported into several file formats (PNG, SVG, EPS) or printed as report.

Additionally, measurement data can be simulated (in combination with random variables) as:
  • Linear function
  • Exponential function (decay curve)
  • Chromatogram
  • Titration curve

galvani-v0.38/doc/en/toolbar.html0000644000175000017500000001113214713174213016621 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

The toolbar

Toolbar buttons

Galvani uses Gtk symbols. Depending on the desktop's symbol theme, the symbols in this manual can differ from those of your desktop.

Create a new project.
After creating the new project, an entry mask "Project settings" is opened, where all the items should be filled in.

Edit project settings


Import data from file.
The default path for Galvani data files is ~/galvani/data/ in the user's home directory.
If the file contains unknown function names (perhaps in other languages) they can be mapped on known names. After loading the measurement data, project settings are shown. Title and comment can be edited, all other settings are read-only. Data can then be plotted in a diagram and can be evaluated.


Save actual measurement data as text file.
The default path for Galvani data files is ~/galvani/data/ in the user's home directory. The default extension is ".dat".

Save the actual diagram as image file.
The default path for diagram files is ~/galvani/data/ in the user's home directory.
The filename extension determines the image type (PNG, SVG or EPS).


Show the print dialog for the output of actual measurement data.
In the print dialog some items can be selected or deselected.


Begin a new measurement with the actual settings.
If the project is not yet configured, the entry mask "Project settings" is shown. Then a diagram is shown.


Start the measurement procedure. Press return key alternatively.


Start a timer for a new measurement procedure.


Cancel the measurement procedure.


Stop the measurement procedure. Press space key alternatively.
Then data evaluation can be processed.


End the measurement. After deleting the diagram a new measurement can be established. The actual settings are conserved.


Reset the original coordinate system settings. This icon is shown after having selected a part of the diagram.



galvani-v0.38/doc/en/eval.html0000644000175000017500000001514614713174213016117 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

Data evaluation

Evaluation can be processed after termination of a measurement or after reading measurement data from file.
Choose Evaluation/Data in the menu. A window Data evaluation is shown.

Enlarge a part of the diagram (zoom)

When data evaluation is started, the coordinates of the mouse pointer are shown in the display.
Drag a frame on the diagram in order to select it. It will be enlarged to the whole diagram area. Galvani smoothens the limits of the coordinate system.
Click the tool button to return to the original coordinate system.

Data transformation (conversion of x- and y-values)

Galvani provides several calculation procedures which are common for evaluation of measurement diagrams. These procedures can be combined.
Measurement data are not modified in this process. If the conversion is cancelled, measurement data are shown in their original state. Also, the measurement function itself is restored.

Titration volume

Time variable is converted to volume (seconds -> milliliter). This transformation is suitable for volumetric analyses (titrations). You have tu use a titration pump or constant velocity burrete in order to have constant volume speed.

  • Turn on the switch Titrator volume.
  • The volume speed of the burette (must be determined in a preliminary experiment) is adjusted in the input field (unit ml/min).
  • Confirm with OK.

On the diagram's x-axis the variable volume is shown (unit milliliter).

Voltage of a thermocouple

This function can only be used with a measurement function "DC voltage" in the selected channel.
The measured voltage of the thermocouple (copper/constantan and nickel/chrome nickel thermocouples are supported) is converted to temperature difference (in kelvin, shown in °C). Thermocouples are suitable for exact measurement of temperature differences if a high-resolution digital multimeter (resolution in microvolt) is used. 1 °C corresponds to 39 µV voltage for a copper/constantan or nickel/chrome nickel thermocouple. This value is temperature dependent, the slope is not linear. Galvani calculates the temperature difference from voltage with a polynomial interpolation with an accuracy of +/- 0,01 °C in the range of 0 °C to 100 °C.
The second thermocouple must be held on a constant temperature (e.g. with melting ice at 0 °C) in order to measure temperature values instead of differences.

  • Select Cu/CuNi for copper/constantan resp. Ni/NiCr for nickel/chrom nickel in the choose box Thermocouple.
  • Confirm with OK.

On the diagram's y-axis the variable temperature is shown (unit °C).

Inverse (reciprocal values)

Corresponding to data transformation x -> 1/x

  • Turn on the switch Inversion.
  • Confirm with OK.

The function resistance (uni ohm) is altered to function conductivity (unit siemens) and vice versa. In all other cases the expression "1/" is shown as a function resp. unit prefix in the diagram.

Logarithm (base 10)

Corresponding to data transformation x -> log x

  • Turn on the switch Logarithm.
  • Confirm with OK.

The expression "log" is shown as a function resp. unit prefix in the diagram.

functions

function graph

A mouse click on the area opens a colour selection window where the colour of the function graph can be chosen.

Linear regression

After turning on this switch a linear regression of measurement data is processed.
The results (slope and intercept of the straight line) are shown and the calculated straight line is shown in the diagram.

Differential function

After turning on this switch the first derivative of the data function is calculated. Differential quotients are calculated by building averages. Galvani detects function maxima by building moving averages and fits them to a gauss model by calculating least squares. Galvani reports the maxima of the derivative and shows differential quotients as data points and the function graph (gauss model) in the diagram. From the differential function turning points (titration curves) of the data function can be detected.

Peak-Integration

After turning on this switch peaks in the course of data are detected. This function is suitable for evaluation of chromatograms.
Galvani reports a table with x-coordinates of peak maxima (retention time), peak area (substance amount) and percentage of the area.
As an option peak area, peak limits and the baseline of the chromatogramm can be shown.

galvani-v0.38/doc/en/menu.html0000644000175000017500000001542014713174213016127 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

Menu

Menu File

New

Generates a new project.
After creating the new project, an entry mask "Project settings" is opened, where all the items should be filled in.

Open

Load a Galvani data file.
The default path for Galvani data files is ~/galvani/data/ in the user's home directory.
If the file contains unknown function names (perhaps in other languages) they can be mapped on known names. After loading the measurement data, project settings are shown. Title and comment can be edited, all other settings are read-only. Data can then be plotted in a diagram and can be evaluated.

Save

Save actual measurement data as text file.
The default path for Galvani data files is ~/galvani/data/ in the user's home directory. The default extension is ".dat".

Export

Save the actual diagram as image file.
The default path for diagram files is ~/galvani/data/ in the user's home directory.
The filename extension determines the image type (PNG, SVG or EPS).

Print

Show the print dialog for the output of actual measurement data, where the common printing system settings can be edited (printer queue, page setup etc.). In the section Page Elements some items can be selected or deselected:

  • Title of the project
  • Comment
  • Diagram
  • Results of evaluation (peak areas of chromatograms, parameters of linear regression)

The document viewer evince must be installed for print preview.

Quit

Quit the program.



Menu View

Display

The switch display determines, whether measured data are shown numerically during data acquisition in the right upper part of the window.
During evaluation the display shows x- and y-coordinate of the cursor position and is always active.



Menu Measurement

New measurement

Begin a new measurement with the actual settings.
If the project is not yet configured, the entry mask "Project settings" is shown. Then a diagram is shown.

Start measurement

Start the measurement procedure. Press return key alternatively.



Start with timer

Start a timer (default: 10 seconds) for beginning a new measurement procedure.



Cancel measurement

Cancel the measurement procedure and return.



Stop measurement

Stop the measurement procedure. Press space key alternatively.
Then data evaluation can be processed.



End measurement

End the measurement. After deleting the diagram a new measurement can be established. The actual settings are conserved.



Menu Evaluation

Data

Start the evaluation of measurement data.



Menu Settings

Data channel X

Select or fill in the parameters for Channel 1 (X): Select a device or a type of simulation and the settings for serial communication.



Data channel Y

Select or fill in the parameters for Channel 2 (Y): Select a device or a type of simulation and the settings for serial communication.



Diagram

Select the settings for the Diagram of measurement data: Colours, point symbols, line style, coordinate system.



Save options

Save the actual settings in the Galvani configuration file.



Load options

Load all program settings from the Galvani configuration file.



Autoload options

This switch determines whether the settings of the program are loaded automatically at program start.



Autosave options

This switch determines whether the settings of the program are saved automatically at program end.



Menu Help

Access to this manual and general informations for Galvani.



galvani-v0.38/doc/en/mess.html0000644000175000017500000000704114713174213016132 0ustar burkardburkard Galvani manual

Galvani manual

galvani-icon

The measurement process

Galvani supports communication to the instrument over a serial (RS232C) or USB (USB-TMC) interface. In order to communicate to the device the user must have access to these interfaces.
A common way to achieve this for the serial interface is to add the user to the group dialout:
sudo usermod -aG dialout [username].
For an USB interface a file "usbtmc.rules" can be generated in /etc/udev/rules.d/:
# Devices
KERNEL=="usb/*", MODE="0660", GROUP="plugdev"
KERNEL=="usbtmc[0-9]*", MODE="0660", GROUP="plugdev"
In that way the interface is writable by the group plugdev. If necessary the user can be added to this group:
sudo usermod -aG plugdev [username].

Typically the workflow of a measurement procedure is as following:

  1. Connect the device to the computer over the serial or USB interface (/dev/ttyS0 ... S3, /dev/ttyUSB0 etc.)
  2. Generate a new project and configure it.
  3. Adjust the settings for the data channels. Parameters of connected devices can be read from file or configured manually.
    If the device is controlled over the serial interface, turn on the switch Remote setup and select measurement function and range.
  4. Choose the diagram options if necessary.
  5. Begin a new measurement (menu Measurement / New measurement or toolbutton ).
  6. Start the measurement procedure (menu Measurement / Start measurement or toolbutton or press return key).
  7. Stop the measurement (menu Measurement / Stop measurement or toolbutton or press space key).
  8. Evaluate measurement data.
  9. Save measurement data (menu File / Save or toolbutton ).
  10. Terminate measurement (menu Measurement / End measurement or toolbutton ).

galvani-v0.38/ChangeLog0000644000175000017500000001447714713174213014713 0ustar burkardburkardgalvani (0.38-1) unstable; urgency=medium * several bugfixes * managing usb transmission error * improved accuracy of displaying numerical values * improved value scaling * changed ok and cancel symbol to gtk-apply and gtk-cancel -- Burkard Lutz Sun, 03 Nov 2024 14:20:06 +0100 galvani (0.37-1) unstable; urgency=medium * several bugfixes * standard deviation in linear simulation increased -- Burkard Lutz Sun, 06 Okt 2024 16:26:06 +0200 galvani (0.36-1) unstable; urgency=medium * simulation procedure improved * user can define simulation parameters * simulation "spectrum" removed * reset project settings when cancelled * several bugfixes -- Burkard Lutz Wed, 10 Jul 2024 14:37:06 +0200 galvani (0.35-1) unstable; urgency=medium * minimum for main window width and height defined. * fixed problem in calculating peak area (range check error) * corrected calculation of minimal peakheight (regarding baseline) * activate volume as x function with ph simulation * fixed bug in simulation (remote configuration off) * fixed bug in device options (interface selection) * fixed bug in usb device connection (reported falsely true) -- Burkard Lutz Thu, 02 May 2024 19:21:32 +0200 galvani (0.34-1) unstable; urgency=medium * Initial release. (Closes: #1067096) -- Burkard Lutz Thu, 29 Feb 2024 15:21:32 +0100 galvani (0.33-1) UNRELEASED; urgency=low * several bugfixes * diagram scaling when x/y-max = x/y-min * device connection only when name and interface defined * corrected function to set appropriate unit to value * improved diagram scaling with low values * improved message when device function differs from settings * bug in reading usb devices fixed * reading function from scpi device corrected * bug in data reading function (eof error) corrected * enhanced project settings (device control) * simulation type and device names are saved in data files * data for simulation of titration curves can be set * new algorithm for simulation of titration curves * calculation of differential function corrected * minimum peak height of derivative in evaluation options -- Burkard Lutz Tue, 06 Feb 2024 19:03:18 +0100 galvani (0.32-1) UNRELEASED; urgency=low * read function for Impo DMI4 corrected -- Burkard Lutz Mon, 20 Nov 2023 16:45:18 +0100 galvani (0.31-1) UNRELEASED; urgency=low * several bugfixes * spline interpolation for drawing data curves * algorithm for peak detection and integration corrected * baseline and peak limits in peak integration * improved window management -- Burkard Lutz Fri, 17 Nov 2023 17:43:18 +0100 galvani (0.30-1) UNRELEASED; urgency=low * several bugfixes -- Burkard Lutz Thu, 05 Oct 2023 17:25:18 +0200 galvani (0.29-1) UNRELEASED; urgency=low * several bugfixes * new data structure for measurement values (vector) * values are always stored in standard units without prefix * display has correct units * oscillation of diagramm scale ist omitted * improved algorithm for peak detection and integration * device options (Gtk Widgets) defined as arrays for channels x and y * improved font and line scaling for printing diagram -- Burkard Lutz Fri, 29 Sep 2023 13:10:18 +0200 galvani (0.28-1) UNRELEASED; urgency=low * several bugfixes * new algorithm for finding peak maxima and calculating peak area * (alpha - still buggy) * support for connection of devices by USB (TMC) * support for communication to devices by scpi commands * only measuring functions are listed when the appropriate * control string is filled in * measurement can be started with timer * measurement can be canceled -- Burkard Lutz Tue, 08 Aug 2023 17:51:18 +0200 galvani (0.27-1) UNRELEASED; urgency=low * several bugfixes * new algorithm for calculating differential function * derivative is calculated with building averages * maxima in derivative are found by building triangular moving averages * maxima in derivative are fitted to gauss model (least squares) * derivative graph shows differential quotient (data points) * derivative function (gauss model) is also shown * new algorithm for printing diagrams * custom widget in print dialog (page elements) added -- Burkard Lutz Mon, 28 Feb 2023 17:50:52 +0100 galvani (0.26-1) UNRELEASED; urgency=low * several bugfixes * manpage added * documentation (menu help) added * device configuration files are coppied to package-directory * bug fixed which led to loading data files even if user cancelled the operation * data evaluation - volume speed with unit ml/min * data display - unit corrected for data evaluation * pH-diagrams ymax=14 also when importing data form file * data import - unknown measurement function (e.g. foreign language) can be mapped to known function -- Burkard Lutz Mon, 30 Jan 2023 15:50:52 +0100 galvani (0.25-1) UNRELEASED; urgency=low * several bugfixes * reading data from device "Lutron PH-207": function corrected * new procedure for converting strings to double, integer and bool data types * support for "Impo DMI4" * new function for writing control-strings to dmm for remote setup * all .dmm-files updated -- Burkard Lutz Sun, 08 Jan 2023 17:23:52 +0100 galvani (0.24-1) UNRELEASED; urgency=low * new array of in session installed multimeters * several bugfixes * reset for diagram dimensions in begin_mess() * menu items disabled when not needed * simulation SPEKTRUM corrected -- Burkard Lutz Tue, 13 Dec 2022 18:23:52 +0100 galvani (0.23-1) UNRELEASED; urgency=low * enhanced simulation spectrum * several bugfixes and improvements * moved to English version * added German language support -- Burkard Lutz Fri, 04 Nov 2022 17:53:45 +0100 galvani (0.2-1) UNRELEASED; urgency=low * Initial release. * enhanced simulation Spectrum * many bugfixes and improvements -- Burkard Lutz Fri, 23 Sep 2022 17:02:21 +0200 galvani-v0.38/AUTHORS0000644000175000017500000000004014713174213014166 0ustar burkardburkardBurkard Lutz galvani-v0.38/Makefile.am0000644000175000017500000000134414713174213015162 0ustar burkardburkard## Process this file with automake to produce Makefile.in ## Created by Anjuta SUBDIRS = src po dist_doc_DATA = \ README \ AUTHORS \ ChangeLog #INTLTOOL_FILES = intltool-extract.in \ intltool-merge.in \ intltool-update.in ACLOCAL_AMFLAGS = --install -I m4 #EXTRA_DIST = \ $(INTLTOOL_FILES) DISTCLEANFILES = intltool-extract \ intltool-merge \ intltool-update \ po/.intltool-merge-cache # Remove doc directory on uninstall uninstall-local: -rm -r $(docdir) AM_LDFLAGS = -Wl,-z,relro AM_CPPFLAGS = -Wdate-time \ -D_FORTIFY_SOURCE=2 AM_CFLAGS = -g \ -O2 \ -fstack-protector-strong \ -Wformat \ -Werror=format-security AM_CXXFLAGS = -g \ -O2 \ -fstack-protector-strong \ -Wformat \ -Werror=format-security galvani-v0.38/README0000644000175000017500000000224214713174213014004 0ustar burkardburkard Galvani - a program for plotting and evaluating measurement data Galvani reads measurement data from digital multimeters or other digital devices over a serial interface. Galvani supports communication to the instrument over a serial (RS232C) or USB (USB-TMC) interface, also by SCPI commands. Measurement data are plotted in a diagram. Two channels can be used for data recording - therefore two devices can be used in parallel. Some mathematical transformations can be used in data evaluation: Inverse (1/x) Logarithm Conversion of copper/constantan or nickel/chrome nickel thermocouple voltage to temperature difference Conversion of timeline to volume (for titrations) There are some mathematical operations available for evaluation of graphs: Differential function Integration of peak area in Chromatograms including tabulation Linear regression of measurement data Diagrams can be exported into several file formats (PNG, SVG, EPS) or printed as report. Additionally, measurement data can be simulated (in combination with random variables) as: Linear function Exponential function (decay curve) Chromatogram Titration curve galvani-v0.38/dmm/0000755000175000017500000000000014713174213013701 5ustar burkardburkardgalvani-v0.38/dmm/Voltcraft M-4660A.dmm0000644000175000017500000000037214713174213017221 0ustar burkardburkardgalvani_dmm_options dmm_name: Voltcraft M-4660A dmm_baud: 9600 dmm_charsize: 7 dmm_flowcontrol: none dmm_stopbits: 2 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 14 dmm_num_val: 4 dmm_timeout: 100 dmm_remote_control: 0 dmm_scpi: 0 dmm_usb_bytes: 0 galvani-v0.38/dmm/Impo DMI4.dmm0000644000175000017500000000051114713174213015757 0ustar burkardburkardgalvani_dmm_options dmm_name: Impo DMI4 dmm_baud: 9600 dmm_charsize: 8 dmm_flowcontrol: software dmm_stopbits: 1 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 0 dmm_num_val: 1 dmm_timeout: 100 dmm_remote_control: 1 dmm_scpi: 0 dmm_usb_bytes: 0 DCV: F7 ACV: F8 DCmA: F9 ACmA: F10 DCA: F11 ACA: F12 Res: F6 Cond: pH: F3 Temp: F4 galvani-v0.38/dmm/Isotech IDM 73.dmm0000644000175000017500000000036514713174213016606 0ustar burkardburkardgalvani_dmm_options dmm_name: Isotech IDM 73 dmm_baud: 19200 dmm_charsize: 7 dmm_flowcontrol: none dmm_stopbits: 1 dmm_parity: odd dmm_polling: 0 dmm_num_bytes: 0 dmm_num_val: 1 dmm_timeout: 10 dmm_remote_control: 0 dmm_scpi: 0 dmm_usb_bytes: 0 galvani-v0.38/dmm/Voltcraft VC-506.dmm0000644000175000017500000000037014713174213017145 0ustar burkardburkardgalvani_dmm_options dmm_name: Voltcraft VC-506 dmm_baud: 1200 dmm_charsize: 7 dmm_flowcontrol: none dmm_stopbits: 2 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 0 dmm_num_val: 1 dmm_timeout: 700 dmm_remote_control: 0 dmm_scpi: 0 dmm_usb_bytes: 0 galvani-v0.38/dmm/Voltcraft VC7055BT.dmm0000644000175000017500000000037414713174213017410 0ustar burkardburkardgalvani_dmm_options dmm_name: Voltcraft VC7055BT dmm_baud: 115200 dmm_charsize: 8 dmm_flowcontrol: none dmm_stopbits: 1 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 0 dmm_num_val: 1 dmm_timeout: 100 dmm_remote_control: 0 dmm_scpi: 1 dmm_usb_bytes: 7 galvani-v0.38/dmm/Voltcraft VC-7060BT.dmm0000644000175000017500000000063114713174213017455 0ustar burkardburkardgalvani_dmm_options dmm_name: Voltcraft VC-7060BT dmm_baud: 115200 dmm_charsize: 8 dmm_flowcontrol: none dmm_stopbits: 1 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 0 dmm_num_val: 1 dmm_timeout: 100 dmm_remote_control: 1 dmm_scpi: 1 dmm_usb_bytes: 7 DCV: FUNC "VOLT" ACV: FUNC "VOLT:AC" DCmA: FUNC "CURR" ACmA: FUNC "CURR:AC" DCA: FUNC "CURR" ACA: FUNC "CURR:AC" Res: FUNC "RES" Cond: pH: Temp: TEMP:RTD galvani-v0.38/dmm/Voltcraft ME-32.dmm0000644000175000017500000000036614713174213017055 0ustar burkardburkardgalvani_dmm_options dmm_name: Voltcraft ME-32 dmm_baud: 600 dmm_charsize: 7 dmm_flowcontrol: none dmm_stopbits: 2 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 0 dmm_num_val: 1 dmm_timeout: 600 dmm_remote_control: 0 dmm_scpi: 0 dmm_usb_bytes: 0 galvani-v0.38/dmm/Voltcraft MXD-4660A.dmm0000644000175000017500000000037414713174213017457 0ustar burkardburkardgalvani_dmm_options dmm_name: Voltcraft MXD-4660A dmm_baud: 9600 dmm_charsize: 7 dmm_flowcontrol: none dmm_stopbits: 2 dmm_parity: none dmm_polling: 1 dmm_num_bytes: 14 dmm_num_val: 4 dmm_timeout: 100 dmm_remote_control: 0 dmm_scpi: 0 dmm_usb_bytes: 0 galvani-v0.38/galvani.desktop0000644000175000017500000000052414713174213016141 0ustar burkardburkard[Desktop Entry] Type=Application Hidden=false Terminal=false Path=/usr/share/galvani Icon=galvani Name=Galvani Exec=galvani Keywords=Data;Serial; Categories=Science;Education; Comment=Reading Data from a serial interface Comment[de]=Daten von der seriellen Schnittstelle lesen und auswerten Comment[en]=Reading Data from a serial interface