From a5ab81c709d23d721163d597b5dd41bc49e842d5 Mon Sep 17 00:00:00 2001 From: JinWang An Date: Fri, 23 Oct 2020 20:10:21 +0900 Subject: [PATCH] Imported Upstream version 2.35.4 --- ChangeLog | 104 + MSVC_Net2005/libxml++/libxml++.rc | 8 +- MSVC_Net2008/libxml++/libxml++.rc | 8 +- MSVC_Net2010/libxml++/libxml++.rc | 8 +- Makefile.am | 6 +- Makefile.in | 112 +- NEWS | 22 + aclocal.m4 | 405 +- configure | 4064 +++++++------ configure.ac | 4 +- docs/manual/html/ch01s02.html | 2 +- docs/manual/html/ch01s03.html | 2 +- docs/manual/html/ch02s02.html | 40 +- docs/manual/html/ch02s03.html | 4 +- docs/manual/html/chapter-introduction.html | 4 +- docs/manual/html/chapter-parsers.html | 6 +- docs/manual/html/index.html | 4 +- docs/manual/libxml++.xml | 36 +- docs/reference/html/annotated.html | 136 +- docs/reference/html/bc_s.png | Bin 677 -> 676 bytes docs/reference/html/bdwn.png | Bin 0 -> 147 bytes ...ument_1_1Init-members.html => classGValue.html} | 51 +- docs/reference/html/classes.html | 86 +- docs/reference/html/classsigc_1_1trackable.html | 41 +- .../classsigc_1_1trackable__inherit__graph.png | Bin 184565 -> 187220 bytes docs/reference/html/classstd_1_1exception.html | 41 +- .../html/classstd_1_1exception__inherit__graph.png | Bin 8488 -> 8673 bytes .../html/classxmlpp_1_1Attribute-members.html | 137 +- docs/reference/html/classxmlpp_1_1Attribute.html | 290 +- ...classxmlpp_1_1AttributeDeclaration-members.html | 141 +- .../html/classxmlpp_1_1AttributeDeclaration.html | 280 +- ...sxmlpp_1_1AttributeDeclaration__coll__graph.png | Bin 7503 -> 6901 bytes ...lpp_1_1AttributeDeclaration__inherit__graph.png | Bin 7503 -> 6901 bytes .../html/classxmlpp_1_1AttributeNode-members.html | 141 +- .../html/classxmlpp_1_1AttributeNode.html | 240 +- .../classxmlpp_1_1AttributeNode__coll__graph.png | Bin 6940 -> 6340 bytes ...classxmlpp_1_1AttributeNode__inherit__graph.png | Bin 6940 -> 6340 bytes .../html/classxmlpp_1_1Attribute__coll__graph.png | Bin 4995 -> 4550 bytes .../classxmlpp_1_1Attribute__inherit__graph.png | Bin 9758 -> 9386 bytes .../html/classxmlpp_1_1CdataNode-members.html | 143 +- docs/reference/html/classxmlpp_1_1CdataNode.html | 233 +- .../html/classxmlpp_1_1CdataNode__coll__graph.png | Bin 7133 -> 6580 bytes .../classxmlpp_1_1CdataNode__inherit__graph.png | Bin 7133 -> 6580 bytes .../html/classxmlpp_1_1CommentNode-members.html | 143 +- docs/reference/html/classxmlpp_1_1CommentNode.html | 233 +- .../classxmlpp_1_1CommentNode__coll__graph.png | Bin 7046 -> 6535 bytes .../classxmlpp_1_1CommentNode__inherit__graph.png | Bin 7046 -> 6535 bytes .../html/classxmlpp_1_1ContentNode-members.html | 139 +- docs/reference/html/classxmlpp_1_1ContentNode.html | 256 +- .../classxmlpp_1_1ContentNode__coll__graph.png | Bin 5227 -> 4813 bytes .../classxmlpp_1_1ContentNode__inherit__graph.png | Bin 18850 -> 17872 bytes .../html/classxmlpp_1_1Document-members.html | 94 +- docs/reference/html/classxmlpp_1_1Document.html | 521 +- .../html/classxmlpp_1_1Document_1_1Init.html | 123 - .../html/classxmlpp_1_1Document__coll__graph.png | Bin 3598 -> 3287 bytes .../classxmlpp_1_1Document__inherit__graph.png | Bin 3598 -> 3287 bytes .../html/classxmlpp_1_1DomParser-members.html | 135 +- docs/reference/html/classxmlpp_1_1DomParser.html | 438 +- .../html/classxmlpp_1_1DomParser__coll__graph.png | Bin 18419 -> 17123 bytes .../classxmlpp_1_1DomParser__inherit__graph.png | Bin 5321 -> 4956 bytes docs/reference/html/classxmlpp_1_1Dtd-members.html | 61 +- docs/reference/html/classxmlpp_1_1Dtd.html | 120 +- .../html/classxmlpp_1_1DtdValidator-members.html | 103 +- .../reference/html/classxmlpp_1_1DtdValidator.html | 439 +- .../classxmlpp_1_1DtdValidator__coll__graph.png | Bin 17045 -> 15917 bytes .../classxmlpp_1_1DtdValidator__inherit__graph.png | Bin 5454 -> 5041 bytes .../html/classxmlpp_1_1Element-members.html | 173 +- docs/reference/html/classxmlpp_1_1Element.html | 559 +- .../html/classxmlpp_1_1Element__coll__graph.png | Bin 4713 -> 4374 bytes .../html/classxmlpp_1_1Element__inherit__graph.png | Bin 4713 -> 4374 bytes .../classxmlpp_1_1EntityDeclaration-members.html | 147 +- .../html/classxmlpp_1_1EntityDeclaration.html | 285 +- ...lassxmlpp_1_1EntityDeclaration__coll__graph.png | Bin 7425 -> 6915 bytes ...sxmlpp_1_1EntityDeclaration__inherit__graph.png | Bin 7425 -> 6915 bytes .../classxmlpp_1_1EntityReference-members.html | 137 +- .../html/classxmlpp_1_1EntityReference.html | 246 +- .../classxmlpp_1_1EntityReference__coll__graph.png | Bin 5261 -> 4970 bytes ...assxmlpp_1_1EntityReference__inherit__graph.png | Bin 5261 -> 4970 bytes ...sxmlpp_1_1IStreamParserInputBuffer-members.html | 63 +- .../classxmlpp_1_1IStreamParserInputBuffer.html | 107 +- ...pp_1_1IStreamParserInputBuffer__coll__graph.png | Bin 6346 -> 5944 bytes ...1_1IStreamParserInputBuffer__inherit__graph.png | Bin 6346 -> 5944 bytes .../html/classxmlpp_1_1KeepBlanks-members.html | 53 +- docs/reference/html/classxmlpp_1_1KeepBlanks.html | 97 +- .../reference/html/classxmlpp_1_1Node-members.html | 129 +- docs/reference/html/classxmlpp_1_1Node.html | 706 ++- .../html/classxmlpp_1_1Node__coll__graph.png | Bin 3380 -> 3107 bytes .../html/classxmlpp_1_1Node__inherit__graph.png | Bin 31130 -> 38279 bytes .../html/classxmlpp_1_1NonCopyable-members.html | 51 +- docs/reference/html/classxmlpp_1_1NonCopyable.html | 96 +- .../classxmlpp_1_1NonCopyable__inherit__graph.png | Bin 68998 -> 75032 bytes .../classxmlpp_1_1OStreamOutputBuffer-members.html | 63 +- .../html/classxmlpp_1_1OStreamOutputBuffer.html | 109 +- ...ssxmlpp_1_1OStreamOutputBuffer__coll__graph.png | Bin 6062 -> 5575 bytes ...mlpp_1_1OStreamOutputBuffer__inherit__graph.png | Bin 6062 -> 5575 bytes .../html/classxmlpp_1_1OutputBuffer-members.html | 59 +- .../reference/html/classxmlpp_1_1OutputBuffer.html | 124 +- .../classxmlpp_1_1OutputBuffer__coll__graph.png | Bin 3645 -> 3311 bytes .../classxmlpp_1_1OutputBuffer__inherit__graph.png | Bin 5937 -> 5510 bytes .../html/classxmlpp_1_1Parser-members.html | 121 +- docs/reference/html/classxmlpp_1_1Parser.html | 662 +- .../classxmlpp_1_1ParserInputBuffer-members.html | 59 +- .../html/classxmlpp_1_1ParserInputBuffer.html | 120 +- ...lassxmlpp_1_1ParserInputBuffer__coll__graph.png | Bin 3921 -> 3604 bytes ...sxmlpp_1_1ParserInputBuffer__inherit__graph.png | Bin 6297 -> 6007 bytes .../html/classxmlpp_1_1Parser__coll__graph.png | Bin 12368 -> 11357 bytes .../html/classxmlpp_1_1Parser__inherit__graph.png | Bin 7656 -> 7167 bytes ...xmlpp_1_1ProcessingInstructionNode-members.html | 143 +- .../classxmlpp_1_1ProcessingInstructionNode.html | 231 +- ...p_1_1ProcessingInstructionNode__coll__graph.png | Bin 7923 -> 7308 bytes ..._1ProcessingInstructionNode__inherit__graph.png | Bin 7923 -> 7308 bytes .../html/classxmlpp_1_1SaxParser-members.html | 157 +- docs/reference/html/classxmlpp_1_1SaxParser.html | 686 ++- .../html/classxmlpp_1_1SaxParser__coll__graph.png | Bin 14495 -> 13370 bytes .../classxmlpp_1_1SaxParser__inherit__graph.png | Bin 5330 -> 4906 bytes .../html/classxmlpp_1_1Schema-members.html | 75 +- docs/reference/html/classxmlpp_1_1Schema.html | 245 +- .../classxmlpp_1_1SchemaValidator-members.html | 113 +- .../html/classxmlpp_1_1SchemaValidator.html | 590 +- .../classxmlpp_1_1SchemaValidator__coll__graph.png | Bin 19393 -> 18116 bytes ...assxmlpp_1_1SchemaValidator__inherit__graph.png | Bin 5964 -> 5525 bytes .../html/classxmlpp_1_1Schema__coll__graph.png | Bin 3622 -> 3322 bytes .../html/classxmlpp_1_1Schema__inherit__graph.png | Bin 3622 -> 3322 bytes .../html/classxmlpp_1_1TextNode-members.html | 143 +- docs/reference/html/classxmlpp_1_1TextNode.html | 233 +- .../html/classxmlpp_1_1TextNode__coll__graph.png | Bin 6769 -> 6296 bytes .../classxmlpp_1_1TextNode__inherit__graph.png | Bin 6769 -> 6296 bytes .../html/classxmlpp_1_1TextReader-members.html | 205 +- docs/reference/html/classxmlpp_1_1TextReader.html | 686 ++- .../html/classxmlpp_1_1TextReader__coll__graph.png | Bin 3574 -> 3295 bytes .../classxmlpp_1_1TextReader__inherit__graph.png | Bin 3574 -> 3295 bytes .../html/classxmlpp_1_1Validator-members.html | 81 +- docs/reference/html/classxmlpp_1_1Validator.html | 342 +- .../html/classxmlpp_1_1Validator__coll__graph.png | Bin 12496 -> 11447 bytes .../classxmlpp_1_1Validator__inherit__graph.png | Bin 8306 -> 7761 bytes .../html/classxmlpp_1_1XIncludeEnd-members.html | 109 + docs/reference/html/classxmlpp_1_1XIncludeEnd.html | 269 + .../classxmlpp_1_1XIncludeEnd__coll__graph.png | Bin 0 -> 4782 bytes .../classxmlpp_1_1XIncludeEnd__inherit__graph.png | Bin 0 -> 4782 bytes .../html/classxmlpp_1_1XIncludeStart-members.html | 109 + .../html/classxmlpp_1_1XIncludeStart.html | 269 + .../classxmlpp_1_1XIncludeStart__coll__graph.png | Bin 0 -> 5146 bytes ...classxmlpp_1_1XIncludeStart__inherit__graph.png | Bin 0 -> 5146 bytes .../html/classxmlpp_1_1exception-members.html | 57 +- docs/reference/html/classxmlpp_1_1exception.html | 154 +- .../html/classxmlpp_1_1exception__coll__graph.png | Bin 3042 -> 2777 bytes .../classxmlpp_1_1exception__inherit__graph.png | Bin 8806 -> 8868 bytes .../classxmlpp_1_1internal__error-members.html | 61 +- .../html/classxmlpp_1_1internal__error.html | 141 +- .../classxmlpp_1_1internal__error__coll__graph.png | Bin 4679 -> 4354 bytes ...assxmlpp_1_1internal__error__inherit__graph.png | Bin 4679 -> 4354 bytes .../html/classxmlpp_1_1parse__error-members.html | 61 +- .../reference/html/classxmlpp_1_1parse__error.html | 143 +- .../classxmlpp_1_1parse__error__coll__graph.png | Bin 4719 -> 4380 bytes .../classxmlpp_1_1parse__error__inherit__graph.png | Bin 6686 -> 6230 bytes .../classxmlpp_1_1validity__error-members.html | 65 +- .../html/classxmlpp_1_1validity__error.html | 148 +- .../classxmlpp_1_1validity__error__coll__graph.png | Bin 6708 -> 6236 bytes ...assxmlpp_1_1validity__error__inherit__graph.png | Bin 6708 -> 6236 bytes docs/reference/html/closed.png | Bin 126 -> 132 bytes .../html/dir_8637afc38b758fdb535647a385c49b5e.html | 81 + .../html/dir_a5a40681709ed751decc24cd7289c9c5.html | 67 + .../html/dir_bc161955dc3a3d2485839eba21420d01.html | 67 + .../html/dir_e3818dbe052c35541aa8102ff72444f2.html | 65 + .../html/dir_fceced95d8215eeebebd9df6aa39e1a5.html | 67 + docs/reference/html/doxygen.css | 478 +- docs/reference/html/doxygen.png | Bin 3942 -> 3779 bytes docs/reference/html/dynsections.js | 78 + docs/reference/html/ftv2blank.png | Bin 0 -> 86 bytes docs/reference/html/ftv2cl.png | Bin 0 -> 453 bytes docs/reference/html/ftv2doc.png | Bin 0 -> 746 bytes docs/reference/html/ftv2folderclosed.png | Bin 0 -> 616 bytes docs/reference/html/ftv2folderopen.png | Bin 0 -> 597 bytes docs/reference/html/ftv2lastnode.png | Bin 0 -> 86 bytes docs/reference/html/ftv2link.png | Bin 0 -> 746 bytes docs/reference/html/ftv2mlastnode.png | Bin 0 -> 246 bytes docs/reference/html/ftv2mnode.png | Bin 0 -> 246 bytes docs/reference/html/ftv2mo.png | Bin 0 -> 403 bytes docs/reference/html/ftv2node.png | Bin 0 -> 86 bytes docs/reference/html/ftv2ns.png | Bin 0 -> 388 bytes docs/reference/html/ftv2plastnode.png | Bin 0 -> 229 bytes docs/reference/html/ftv2pnode.png | Bin 0 -> 229 bytes docs/reference/html/ftv2splitbar.png | Bin 0 -> 314 bytes docs/reference/html/ftv2vertline.png | Bin 0 -> 86 bytes docs/reference/html/functions.html | 35 +- docs/reference/html/functions_0x63.html | 35 +- docs/reference/html/functions_0x64.html | 35 +- docs/reference/html/functions_0x65.html | 35 +- docs/reference/html/functions_0x66.html | 35 +- docs/reference/html/functions_0x67.html | 35 +- docs/reference/html/functions_0x68.html | 35 +- docs/reference/html/functions_0x69.html | 38 +- docs/reference/html/functions_0x6b.html | 35 +- docs/reference/html/functions_0x6c.html | 35 +- docs/reference/html/functions_0x6d.html | 35 +- docs/reference/html/functions_0x6e.html | 35 +- docs/reference/html/functions_0x6f.html | 35 +- docs/reference/html/functions_0x70.html | 40 +- docs/reference/html/functions_0x72.html | 35 +- docs/reference/html/functions_0x73.html | 35 +- docs/reference/html/functions_0x74.html | 35 +- docs/reference/html/functions_0x76.html | 35 +- docs/reference/html/functions_0x77.html | 35 +- docs/reference/html/functions_0x78.html | 41 +- docs/reference/html/functions_0x7e.html | 44 +- docs/reference/html/functions_enum.html | 35 +- docs/reference/html/functions_eval.html | 35 +- docs/reference/html/functions_func.html | 36 +- docs/reference/html/functions_func_0x63.html | 36 +- docs/reference/html/functions_func_0x64.html | 36 +- docs/reference/html/functions_func_0x65.html | 36 +- docs/reference/html/functions_func_0x66.html | 36 +- docs/reference/html/functions_func_0x67.html | 36 +- docs/reference/html/functions_func_0x68.html | 36 +- docs/reference/html/functions_func_0x69.html | 43 +- docs/reference/html/functions_func_0x6b.html | 36 +- docs/reference/html/functions_func_0x6c.html | 36 +- docs/reference/html/functions_func_0x6d.html | 36 +- docs/reference/html/functions_func_0x6e.html | 36 +- docs/reference/html/functions_func_0x6f.html | 36 +- docs/reference/html/functions_func_0x70.html | 45 +- docs/reference/html/functions_func_0x72.html | 36 +- docs/reference/html/functions_func_0x73.html | 36 +- docs/reference/html/functions_func_0x74.html | 36 +- docs/reference/html/functions_func_0x76.html | 36 +- docs/reference/html/functions_func_0x77.html | 36 +- docs/reference/html/functions_func_0x78.html | 100 + docs/reference/html/functions_func_0x7e.html | 45 +- docs/reference/html/functions_type.html | 35 +- docs/reference/html/functions_vars.html | 35 +- docs/reference/html/graph_legend.html | 111 +- docs/reference/html/graph_legend.png | Bin 15159 -> 17874 bytes docs/reference/html/hierarchy.html | 141 +- docs/reference/html/index.html | 67 +- docs/reference/html/inherit_graph_0.png | Bin 6879 -> 6573 bytes docs/reference/html/inherit_graph_1.png | Bin 1016 -> 937 bytes docs/reference/html/inherit_graph_2.png | Bin 1441 -> 967 bytes docs/reference/html/inherit_graph_3.png | Bin 994 -> 983 bytes docs/reference/html/inherit_graph_4.png | Bin 1590 -> 1478 bytes docs/reference/html/inherit_graph_5.png | Bin 68910 -> 74916 bytes docs/reference/html/inherit_graph_6.png | Bin 1974 -> 1713 bytes docs/reference/html/inherit_graph_7.png | Bin 2193 -> 2135 bytes docs/reference/html/inherits.html | 61 +- docs/reference/html/jquery.js | 8 + docs/reference/html/namespacemembers.html | 35 +- docs/reference/html/namespacemembers_enum.html | 35 +- docs/reference/html/namespacemembers_eval.html | 35 +- docs/reference/html/namespacemembers_func.html | 35 +- docs/reference/html/namespacemembers_type.html | 35 +- docs/reference/html/namespaces.html | 62 +- docs/reference/html/namespacestd_1_1locale.html | 61 + docs/reference/html/namespacestd_1_1tr2.html | 69 + docs/reference/html/namespacexmlpp.html | 294 +- docs/reference/html/nav_f.png | Bin 159 -> 153 bytes docs/reference/html/nav_g.png | Bin 0 -> 95 bytes docs/reference/html/nav_h.png | Bin 97 -> 98 bytes docs/reference/html/open.png | Bin 118 -> 123 bytes docs/reference/html/pages.html | 52 +- docs/reference/html/since_2_20.html | 37 +- docs/reference/html/since_2_24.html | 37 +- docs/reference/html/since_2_36.html | 73 +- ...uctxmlpp_1_1SaxParser_1_1Attribute-members.html | 54 +- .../structxmlpp_1_1SaxParser_1_1Attribute.html | 104 +- ...p_1_1SaxParser_1_1AttributeHasName-members.html | 54 +- ...ructxmlpp_1_1SaxParser_1_1AttributeHasName.html | 114 +- ...1SaxParser_1_1AttributeHasName__coll__graph.png | Bin 4555 -> 4327 bytes ...mlpp_1_1SaxParser_1_1Attribute__coll__graph.png | Bin 4639 -> 4230 bytes docs/reference/html/sync_off.png | Bin 0 -> 853 bytes docs/reference/html/sync_on.png | Bin 0 -> 845 bytes docs/reference/html/tab_a.png | Bin 140 -> 142 bytes docs/reference/html/tab_b.png | Bin 178 -> 170 bytes docs/reference/html/tab_h.png | Bin 192 -> 177 bytes docs/reference/html/tab_s.png | Bin 189 -> 184 bytes docs/reference/html/tabs.css | 1 + docs/reference/libxml++-2.6.devhelp2 | 670 ++- docs/reference/libxml++-2.6.tag | 6311 +++++++++++++++++--- examples/Makefile.am | 6 + examples/Makefile.in | 63 +- examples/README | 31 +- examples/dom_xinclude/example.xml | 7 + examples/dom_xinclude/include1.txt | 1 + examples/dom_xinclude/include2.xml | 4 + examples/dom_xinclude/main.cc | 198 + examples/dtdvalidation/main.cc | 12 +- examples/sax_parser/main.cc | 36 +- examples/schemavalidation/main.cc | 17 +- libxml++/document.cc | 214 +- libxml++/document.h | 87 +- libxml++/libxml++.h | 4 + libxml++/nodes/element.cc | 104 +- libxml++/nodes/element.h | 18 +- libxml++/nodes/node.cc | 59 +- libxml++/nodes/node.h | 63 +- libxml++/nodes/xincludeend.cc | 32 + libxml++/nodes/xincludeend.h | 41 + libxml++/nodes/xincludestart.cc | 32 + libxml++/nodes/xincludestart.h | 41 + libxml++/parsers/domparser.cc | 71 +- libxml++/parsers/domparser.h | 46 +- libxml++/parsers/parser.cc | 11 + libxml++/parsers/saxparser.cc | 129 +- libxml++/parsers/saxparser.h | 39 +- libxml++/parsers/textreader.cc | 16 +- libxml++/parsers/textreader.h | 63 +- libxml++/schema.cc | 40 +- libxml++/schema.h | 22 +- libxml++/validators/dtdvalidator.cc | 44 +- libxml++/validators/dtdvalidator.h | 68 +- libxml++/validators/schemavalidator.cc | 34 +- libxml++/validators/schemavalidator.h | 83 +- libxml++/validators/validator.cc | 40 +- libxml++/validators/validator.h | 3 +- macros/config.guess | 16 +- macros/config.sub | 19 +- macros/depcomp | 124 +- macros/doc-reference.am | 5 +- macros/libtool.m4 | 2251 ++++--- macros/ltmain.sh | 4017 ++++++++----- macros/ltoptions.m4 | 32 +- macros/ltversion.m4 | 12 +- macros/lt~obsolete.m4 | 12 +- 321 files changed, 25879 insertions(+), 12876 deletions(-) create mode 100644 docs/reference/html/bdwn.png rename docs/reference/html/{classxmlpp_1_1Document_1_1Init-members.html => classGValue.html} (52%) delete mode 100644 docs/reference/html/classxmlpp_1_1Document_1_1Init.html create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeEnd-members.html create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeEnd.html create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeEnd__coll__graph.png create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeEnd__inherit__graph.png create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeStart-members.html create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeStart.html create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeStart__coll__graph.png create mode 100644 docs/reference/html/classxmlpp_1_1XIncludeStart__inherit__graph.png create mode 100644 docs/reference/html/dir_8637afc38b758fdb535647a385c49b5e.html create mode 100644 docs/reference/html/dir_a5a40681709ed751decc24cd7289c9c5.html create mode 100644 docs/reference/html/dir_bc161955dc3a3d2485839eba21420d01.html create mode 100644 docs/reference/html/dir_e3818dbe052c35541aa8102ff72444f2.html create mode 100644 docs/reference/html/dir_fceced95d8215eeebebd9df6aa39e1a5.html create mode 100644 docs/reference/html/dynsections.js create mode 100644 docs/reference/html/ftv2blank.png create mode 100644 docs/reference/html/ftv2cl.png create mode 100644 docs/reference/html/ftv2doc.png create mode 100644 docs/reference/html/ftv2folderclosed.png create mode 100644 docs/reference/html/ftv2folderopen.png create mode 100644 docs/reference/html/ftv2lastnode.png create mode 100644 docs/reference/html/ftv2link.png create mode 100644 docs/reference/html/ftv2mlastnode.png create mode 100644 docs/reference/html/ftv2mnode.png create mode 100644 docs/reference/html/ftv2mo.png create mode 100644 docs/reference/html/ftv2node.png create mode 100644 docs/reference/html/ftv2ns.png create mode 100644 docs/reference/html/ftv2plastnode.png create mode 100644 docs/reference/html/ftv2pnode.png create mode 100644 docs/reference/html/ftv2splitbar.png create mode 100644 docs/reference/html/ftv2vertline.png create mode 100644 docs/reference/html/functions_func_0x78.html create mode 100644 docs/reference/html/jquery.js create mode 100644 docs/reference/html/namespacestd_1_1locale.html create mode 100644 docs/reference/html/namespacestd_1_1tr2.html create mode 100644 docs/reference/html/nav_g.png create mode 100644 docs/reference/html/sync_off.png create mode 100644 docs/reference/html/sync_on.png create mode 100644 examples/dom_xinclude/example.xml create mode 100644 examples/dom_xinclude/include1.txt create mode 100644 examples/dom_xinclude/include2.xml create mode 100644 examples/dom_xinclude/main.cc create mode 100644 libxml++/nodes/xincludeend.cc create mode 100644 libxml++/nodes/xincludeend.h create mode 100644 libxml++/nodes/xincludestart.cc create mode 100644 libxml++/nodes/xincludestart.h mode change 100755 => 100644 macros/ltmain.sh diff --git a/ChangeLog b/ChangeLog index f3a0d09..5a8754b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,107 @@ +2.35.4: + +2012-08-28 Kjell Ahlstedt + + Add XInclude processing. + + * Makefile.am: Add XIncludeStart and XIncludeEnd nodes. + * examples/Makefile.am: Add dom_xinclude example. + * examples/README: Add dom_xinclude example and other missing examples. + * examples/dom_xinclude/example.xml: + * examples/dom_xinclude/include1.txt: + * examples/dom_xinclude/include2.xml: + * examples/dom_xinclude/main.cc: New files. + * libxml++/document.[h|cc]: Add process_xinclude(). + * libxml++/libxml++.h: Add new header files. + * libxml++/nodes/node.cc: create_wrapper(): Create XIncludeStart and + XIncludeEnd nodes. + * libxml++/nodes/xincludeend.[h|cc]: + * libxml++/nodes/xincludestart.[h|cc]: New files. + * .gitignore: Ignore /examples/dom_xinclude/dom_xinclude. Bug #338521. + +2012-08-28 Kjell Ahlstedt + + Parser: Make it thread-safe. + + * configure.ac: Require glibmm-2.4 >= 2.32.0. + * libxml++/parsers/parser.cc: Protect all accesses to extra_parser_data with + a Glib::Threads::Mutex. Bug #681467. + +2012-08-10 Kjell Ahlstedt + + Document: Make the Document(xmlDoc*) constructor public. + + * libxml++/document.h: Make the Document(xmlDoc*) constructor public. + Remove friend declarations that become unnecessary. Bug #668980. + +2012-08-09 Kjell Ahlstedt + + Improve the DtdValidation and SchemaValidation example programs. + + * examples/dtdvalidation/main.cc: + * examples/schemavalidation/main.cc: Print all information from all thrown + xmlpp exceptions. + +2012-08-09 Kjell Ahlstedt + + Validators: Improve the error handling. + + * libxml++/validators/validator.[h|cc]: + * libxml++/validators/dtdvalidator.[h|cc]: + * libxml++/validators/schemavalidator.[h|cc]: Check more return codes from + libxml2 functions. Improve the description of member functions in the + reference documentation. Bug #635846. + +2012-08-07 Kjell Ahlstedt + + Add incremental parsing to the SaxParser example program. + + * examples/sax_parser/main.cc: Uncomment and correct the code that shows + incremental parsing with SaxParser::parse_chunk(). + +2012-08-07 Kjell Ahlstedt + + Parsers: Improve the error handling. + + * libxml++/parsers/domparser.[h|cc]: + * libxml++/parsers/saxparser.[h|cc]: + * libxml++/parsers/textreader.[h|cc]: Check more return codes from libxml2 + functions. Improve the description of errors in the reference documentation. + Bug #635846. + +2012-08-07 Kjell Ahlstedt + + Document, Element, Node: Remove unnecessary tests for null pointers. + + * libxml++/document.cc: + * libxml++/nodes/element.cc: + * libxml++/nodes/node.cc: Remove tests for null pointer before calling + xmlFreeNode(), which does nothing if given a null pointer. These unnecessary + tests were newly added when error handling was improved. Bug #635846. + +2012-08-05 Kjell Ahlstedt + + Schema::set_document(): Create empty document. + + * libxml++/schema.[h|cc]: set_document(): If the argument 'document' is 0, + create an empty document, as the documentation says. + +2012-08-05 Kjell Ahlstedt + + Document, Schema: Improve the error handling. + + * libxml++/document.[h|cc]: + * libxml++/schema.[h|cc]: Check more return codes from libxml2 functions. + Improve the description of errors in the reference documentation. Bug #635846. + +2012-08-02 Kjell Ahlstedt + + Element, Node: Improve the error handling. + + * libxml++/nodes/element.[h|cc]: + * libxml++/nodes/node.[h|cc]: Check more return codes from libxml2 functions. + Improve the description of errors in the reference documentation. Bug #635846. + 2.35.3: 2012-06-19 Kjell Ahlstedt diff --git a/MSVC_Net2005/libxml++/libxml++.rc b/MSVC_Net2005/libxml++/libxml++.rc index 05f536e..7114ca8 100644 --- a/MSVC_Net2005/libxml++/libxml++.rc +++ b/MSVC_Net2005/libxml++/libxml++.rc @@ -33,8 +33,8 @@ END #endif // APSTUDIO_INVOKED VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,35,3,1 - PRODUCTVERSION 2,35,3,1 + FILEVERSION 2,35,4,1 + PRODUCTVERSION 2,35,4,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -51,11 +51,11 @@ BEGIN BEGIN VALUE "CompanyName", "The libxml++ development team (see AUTHORS)" VALUE "FileDescription", "The official C++ wrapper for libxml2" - VALUE "FileVersion", "2.35.3" + VALUE "FileVersion", "2.35.4" VALUE "LegalCopyright", "Distribution is under the LGPL (see COPYING)" VALUE "OriginalFilename", "libxml++-2.6" VALUE "ProductName", "libxml++" - VALUE "ProductVersion", "2.35.3" + VALUE "ProductVersion", "2.35.4" END END BLOCK "VarFileInfo" diff --git a/MSVC_Net2008/libxml++/libxml++.rc b/MSVC_Net2008/libxml++/libxml++.rc index 05f536e..7114ca8 100644 --- a/MSVC_Net2008/libxml++/libxml++.rc +++ b/MSVC_Net2008/libxml++/libxml++.rc @@ -33,8 +33,8 @@ END #endif // APSTUDIO_INVOKED VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,35,3,1 - PRODUCTVERSION 2,35,3,1 + FILEVERSION 2,35,4,1 + PRODUCTVERSION 2,35,4,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -51,11 +51,11 @@ BEGIN BEGIN VALUE "CompanyName", "The libxml++ development team (see AUTHORS)" VALUE "FileDescription", "The official C++ wrapper for libxml2" - VALUE "FileVersion", "2.35.3" + VALUE "FileVersion", "2.35.4" VALUE "LegalCopyright", "Distribution is under the LGPL (see COPYING)" VALUE "OriginalFilename", "libxml++-2.6" VALUE "ProductName", "libxml++" - VALUE "ProductVersion", "2.35.3" + VALUE "ProductVersion", "2.35.4" END END BLOCK "VarFileInfo" diff --git a/MSVC_Net2010/libxml++/libxml++.rc b/MSVC_Net2010/libxml++/libxml++.rc index 274e79d..c0f53fd 100644 --- a/MSVC_Net2010/libxml++/libxml++.rc +++ b/MSVC_Net2010/libxml++/libxml++.rc @@ -33,8 +33,8 @@ END #endif // APSTUDIO_INVOKED VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,35,3,1 - PRODUCTVERSION 2,35,3,1 + FILEVERSION 2,35,4,1 + PRODUCTVERSION 2,35,4,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -51,11 +51,11 @@ BEGIN BEGIN VALUE "CompanyName", "The libxml++ development team (see AUTHORS)" VALUE "FileDescription", "The official C++ wrapper for libxml2" - VALUE "FileVersion", "2.35.3" + VALUE "FileVersion", "2.35.4" VALUE "LegalCopyright", "Distribution is under the LGPL (see COPYING)" VALUE "OriginalFilename", "libxml++-2.6" VALUE "ProductName", "libxml++" - VALUE "ProductVersion", "2.35.3" + VALUE "ProductVersion", "2.35.4" END END BLOCK "VarFileInfo" diff --git a/Makefile.am b/Makefile.am index 17e63e5..be64b57 100644 --- a/Makefile.am +++ b/Makefile.am @@ -44,7 +44,9 @@ h_nodes_sources_public = libxml++/nodes/cdatanode.h \ libxml++/nodes/entityreference.h \ libxml++/nodes/node.h \ libxml++/nodes/processinginstructionnode.h \ - libxml++/nodes/textnode.h + libxml++/nodes/textnode.h \ + libxml++/nodes/xincludeend.h \ + libxml++/nodes/xincludestart.h h_parsers_sources_public = libxml++/parsers/parser.h \ libxml++/parsers/saxparser.h \ libxml++/parsers/domparser.h \ @@ -84,6 +86,8 @@ cc_sources = libxml++/attribute.cc \ libxml++/nodes/node.cc \ libxml++/nodes/processinginstructionnode.cc \ libxml++/nodes/textnode.cc \ + libxml++/nodes/xincludeend.cc \ + libxml++/nodes/xincludestart.cc \ libxml++/parsers/parser.cc \ libxml++/parsers/saxparser.cc \ libxml++/parsers/domparser.cc \ diff --git a/Makefile.in b/Makefile.in index b7674b0..4bb661f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -19,6 +19,23 @@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -129,7 +146,8 @@ am__objects_1 = libxml++/attribute.lo libxml++/attributedeclaration.lo \ libxml++/nodes/entityreference.lo libxml++/nodes/element.lo \ libxml++/nodes/node.lo \ libxml++/nodes/processinginstructionnode.lo \ - libxml++/nodes/textnode.lo libxml++/parsers/parser.lo \ + libxml++/nodes/textnode.lo libxml++/nodes/xincludeend.lo \ + libxml++/nodes/xincludestart.lo libxml++/parsers/parser.lo \ libxml++/parsers/saxparser.lo libxml++/parsers/domparser.lo \ libxml++/parsers/textreader.lo \ libxml++/validators/dtdvalidator.lo \ @@ -202,6 +220,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__dist_noinst_DATA_DIST = libxml++config.h.in \ libxml++-$(LIBXMLXX_API_VERSION).pc.in MAINTAINERS \ docs/manual/docbook-customisation.xsl $(wildcard \ @@ -403,6 +426,7 @@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MMDOCTOOLDIR = @MMDOCTOOLDIR@ NM = @NM@ @@ -435,6 +459,7 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ @@ -468,7 +493,6 @@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ @@ -527,7 +551,9 @@ h_nodes_sources_public = libxml++/nodes/cdatanode.h \ libxml++/nodes/entityreference.h \ libxml++/nodes/node.h \ libxml++/nodes/processinginstructionnode.h \ - libxml++/nodes/textnode.h + libxml++/nodes/textnode.h \ + libxml++/nodes/xincludeend.h \ + libxml++/nodes/xincludestart.h h_parsers_sources_public = libxml++/parsers/parser.h \ libxml++/parsers/saxparser.h \ @@ -570,6 +596,8 @@ cc_sources = libxml++/attribute.cc \ libxml++/nodes/node.cc \ libxml++/nodes/processinginstructionnode.cc \ libxml++/nodes/textnode.cc \ + libxml++/nodes/xincludeend.cc \ + libxml++/nodes/xincludestart.cc \ libxml++/parsers/parser.cc \ libxml++/parsers/saxparser.cc \ libxml++/parsers/domparser.cc \ @@ -933,7 +961,6 @@ libxml++-2.6.pc: $(top_builddir)/config.status $(srcdir)/libxml++-2.6.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -941,6 +968,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) else :; fi; \ done; \ test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } @@ -1040,6 +1069,10 @@ libxml++/nodes/processinginstructionnode.lo: \ libxml++/nodes/$(DEPDIR)/$(am__dirstamp) libxml++/nodes/textnode.lo: libxml++/nodes/$(am__dirstamp) \ libxml++/nodes/$(DEPDIR)/$(am__dirstamp) +libxml++/nodes/xincludeend.lo: libxml++/nodes/$(am__dirstamp) \ + libxml++/nodes/$(DEPDIR)/$(am__dirstamp) +libxml++/nodes/xincludestart.lo: libxml++/nodes/$(am__dirstamp) \ + libxml++/nodes/$(DEPDIR)/$(am__dirstamp) libxml++/parsers/$(am__dirstamp): @$(MKDIR_P) libxml++/parsers @: > libxml++/parsers/$(am__dirstamp) @@ -1119,6 +1152,10 @@ mostlyclean-compile: -rm -f libxml++/nodes/processinginstructionnode.lo -rm -f libxml++/nodes/textnode.$(OBJEXT) -rm -f libxml++/nodes/textnode.lo + -rm -f libxml++/nodes/xincludeend.$(OBJEXT) + -rm -f libxml++/nodes/xincludeend.lo + -rm -f libxml++/nodes/xincludestart.$(OBJEXT) + -rm -f libxml++/nodes/xincludestart.lo -rm -f libxml++/noncopyable.$(OBJEXT) -rm -f libxml++/noncopyable.lo -rm -f libxml++/parsers/domparser.$(OBJEXT) @@ -1166,6 +1203,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libxml++/nodes/$(DEPDIR)/node.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libxml++/nodes/$(DEPDIR)/processinginstructionnode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libxml++/nodes/$(DEPDIR)/textnode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libxml++/nodes/$(DEPDIR)/xincludeend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libxml++/nodes/$(DEPDIR)/xincludestart.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libxml++/parsers/$(DEPDIR)/domparser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libxml++/parsers/$(DEPDIR)/parser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libxml++/parsers/$(DEPDIR)/saxparser.Plo@am__quote@ @@ -1214,8 +1253,11 @@ distclean-libtool: -rm -f libtool config.lt install-dist_referenceDATA: $(dist_reference_DATA) @$(NORMAL_INSTALL) - test -z "$(referencedir)" || $(MKDIR_P) "$(DESTDIR)$(referencedir)" @list='$(dist_reference_DATA)'; test -n "$(referencedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(referencedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(referencedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1232,8 +1274,11 @@ uninstall-dist_referenceDATA: dir='$(DESTDIR)$(referencedir)'; $(am__uninstall_files_from_dir) install-library_configDATA: $(library_config_DATA) @$(NORMAL_INSTALL) - test -z "$(library_configdir)" || $(MKDIR_P) "$(DESTDIR)$(library_configdir)" @list='$(library_config_DATA)'; test -n "$(library_configdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_configdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_configdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1250,8 +1295,11 @@ uninstall-library_configDATA: dir='$(DESTDIR)$(library_configdir)'; $(am__uninstall_files_from_dir) install-nodist_pkgconfigDATA: $(nodist_pkgconfig_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(nodist_pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1268,8 +1316,11 @@ uninstall-nodist_pkgconfigDATA: dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-library_exceptions_includeHEADERS: $(library_exceptions_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_exceptions_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_exceptions_includedir)" @list='$(library_exceptions_include_HEADERS)'; test -n "$(library_exceptions_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_exceptions_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_exceptions_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1286,8 +1337,11 @@ uninstall-library_exceptions_includeHEADERS: dir='$(DESTDIR)$(library_exceptions_includedir)'; $(am__uninstall_files_from_dir) install-library_includeHEADERS: $(library_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_includedir)" @list='$(library_include_HEADERS)'; test -n "$(library_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1304,8 +1358,11 @@ uninstall-library_includeHEADERS: dir='$(DESTDIR)$(library_includedir)'; $(am__uninstall_files_from_dir) install-library_io_includeHEADERS: $(library_io_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_io_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_io_includedir)" @list='$(library_io_include_HEADERS)'; test -n "$(library_io_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_io_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_io_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1322,8 +1379,11 @@ uninstall-library_io_includeHEADERS: dir='$(DESTDIR)$(library_io_includedir)'; $(am__uninstall_files_from_dir) install-library_nodes_includeHEADERS: $(library_nodes_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_nodes_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_nodes_includedir)" @list='$(library_nodes_include_HEADERS)'; test -n "$(library_nodes_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_nodes_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_nodes_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1340,8 +1400,11 @@ uninstall-library_nodes_includeHEADERS: dir='$(DESTDIR)$(library_nodes_includedir)'; $(am__uninstall_files_from_dir) install-library_parsers_includeHEADERS: $(library_parsers_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_parsers_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_parsers_includedir)" @list='$(library_parsers_include_HEADERS)'; test -n "$(library_parsers_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_parsers_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_parsers_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1358,8 +1421,11 @@ uninstall-library_parsers_includeHEADERS: dir='$(DESTDIR)$(library_parsers_includedir)'; $(am__uninstall_files_from_dir) install-library_validators_includeHEADERS: $(library_validators_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_validators_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_validators_includedir)" @list='$(library_validators_include_HEADERS)'; test -n "$(library_validators_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_validators_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_validators_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1544,13 +1610,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -1636,7 +1699,7 @@ distcheck: dist *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) + chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) @@ -1908,7 +1971,7 @@ docs/manual/libxml++.xml: docs/manual/libxml++_without_code.xml docs/manual/inse # A list of wildcard patterns matching the files from the HTML directory # generated by Doxygen which should be distributed and installed. -@ENABLE_DOCUMENTATION_TRUE@htmlref_patterns ?= $(addprefix $(doc_outdir)/html/*.,css gif html png) +@ENABLE_DOCUMENTATION_TRUE@htmlref_patterns ?= $(addprefix $(doc_outdir)/html/*.,css gif html png js) # Locations of utilities shipped with glibmm. Made overridable # in case the installed utilities cannot be used for some reason. @@ -1976,10 +2039,11 @@ docs/manual/libxml++.xml: docs/manual/libxml++_without_code.xml docs/manual/inse # also functions as time stamp target for the documentation as a whole. # Quote $(DOXYGEN) so that this still works if this is a path containing # spaces such as "/c/Program Files (x86)/Doxygen/bin/doxygen" +# The doc_config file may contain "$(MMDOCTOOLDIR)". Export MMDOCTOOLDIR to Doxygen. @ENABLE_DOCUMENTATION_TRUE@$(doxytagfile): $(doc_dependencies) | $(doc_config) @ENABLE_DOCUMENTATION_TRUE@ -$(AM_V_at)rm -f $@ @ENABLE_DOCUMENTATION_TRUE@ -$(AM_V_at)rm -fr $(doc_outdir)/html -@ENABLE_DOCUMENTATION_TRUE@ $(AM_V_GEN)(echo '@INCLUDE =' $(doc_config) && echo 'INPUT =' $(doc_input)) | "$(DOXYGEN)" - +@ENABLE_DOCUMENTATION_TRUE@ $(AM_V_GEN)(echo '@INCLUDE =' $(doc_config) && echo 'INPUT =' $(doc_input)) | MMDOCTOOLDIR="$(MMDOCTOOLDIR)" "$(DOXYGEN)" - @ENABLE_DOCUMENTATION_TRUE@ $(AM_V_at)$(doc_postprocess) '$(doc_outdir)/html/*.html' # Run XSL transformation to generate a Devhelp book from a Doxygen tag file. diff --git a/NEWS b/NEWS index a9ee85c..819e86c 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,25 @@ +2.35.4 (unstable): + +* Document: + - Add process_xinclude(), using new XIncludeStart + and XIncludeEnd classes, derived from Node. + (Kjell Ahlsted) Bug #338521. + - Make the Document(xmlDoc*) constructor public. + (Kjell Ahlsted) Bug #668980. +* Parser: Make it thread-safe. + (Kjell Ahlstedt) Bug #681467. +* Schema::set_document(): If the argument 'document' is 0 then + create an empty document, as the documentation says. + (Kjell Ahlstedt) +* Improve the error handling. + (Kjell Ahlstedt) Bug #635846. +* Documentation: + - Add incremental parsing to the SaxParser example program. + - DtdValidation and SchemaValidation: Print all exception information. + - Improve error descriptions. + (Kjell Ahlstedt) + + 2.35.3 (unstable): * Node: diff --git a/aclocal.m4 b/aclocal.m4 index e038852..ab29422 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11.3 -*- Autoconf -*- +# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, @@ -38,7 +38,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.3], [], +m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -54,7 +54,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.3])dnl +[AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -1066,104 +1066,163 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. # -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED -# serial 5 lt~obsolete.m4 -# These exist entirely to fool aclocal when bootstrapping libtool. +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. # -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT]) + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[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. + +_PKG_TEXT + +To get pkg-config, see .]) + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES #serial 20090814 @@ -1180,7 +1239,7 @@ AC_DEFUN([MM_PREREQ], [dnl m4_assert([$# >= 1])[]dnl AC_REQUIRE([_MM_PRE_INIT])[]dnl -_MM_PREREQ([mm-common], [0.9.5], [$1], m4_defn([AC_PACKAGE_NAME]))[]dnl +_MM_PREREQ([mm-common], [0.9.6], [$1], m4_defn([AC_PACKAGE_NAME]))[]dnl ]) @@ -1529,164 +1588,6 @@ test "x$mm_all_flags" != x || mm_all_flags=none AC_MSG_RESULT([$mm_all_flags])[]dnl ]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])# _PKG_CONFIG - -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED - - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[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. - -_PKG_TEXT - -To get pkg-config, see .])dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - m4_include([macros/libtool.m4]) m4_include([macros/ltoptions.m4]) m4_include([macros/ltsugar.m4]) diff --git a/configure b/configure index 9efbed0..fb70828 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for libxml++ 2.35.3. +# Generated by GNU Autoconf 2.68 for libxml++ 2.35.4. # # Report bugs to . # @@ -174,6 +174,14 @@ test x\$exitcode = x0 || exit 1" 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 -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 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes @@ -537,155 +545,8 @@ 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'" - - -# Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -$* -_LT_EOF - exit 0 -fi - -# 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 - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - test -n "$DJDIR" || exec 7<&0 &1 @@ -710,8 +571,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libxml++' PACKAGE_TARNAME='libxml++' -PACKAGE_VERSION='2.35.3' -PACKAGE_STRING='libxml++ 2.35.3' +PACKAGE_VERSION='2.35.4' +PACKAGE_STRING='libxml++ 2.35.4' PACKAGE_BUGREPORT='https://bugzilla.gnome.org/enter_bug.cgi?product=libxml%2B%2B' PACKAGE_URL='http://libxmlplusplus.sourceforge.net/' @@ -780,8 +641,9 @@ OTOOL LIPO NMEDIT DSYMUTIL -lt_ECHO +MANIFEST_TOOL RANLIB +ac_ct_AR AR LN_S NM @@ -917,6 +779,7 @@ enable_shared with_pic enable_fast_install with_gnu_ld +with_sysroot enable_libtool_lock enable_documentation with_glibmm_doc @@ -1489,7 +1352,7 @@ 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 libxml++ 2.35.3 to adapt to many kinds of systems. +\`configure' configures libxml++ 2.35.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1559,7 +1422,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libxml++ 2.35.3:";; + short | recursive ) echo "Configuration of libxml++ 2.35.4:";; esac cat <<\_ACEOF @@ -1585,9 +1448,11 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --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). --with-glibmm-doc=[TAGFILE@]HTMLREFDIR Link to external glibmm documentation [auto] @@ -1688,7 +1553,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libxml++ configure 2.35.3 +libxml++ configure 2.35.4 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2178,7 +2043,7 @@ 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 libxml++ $as_me 2.35.3, which was +It was created by libxml++ $as_me 2.35.4, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3000,7 +2865,7 @@ fi # Define the identity of the package. PACKAGE='libxml++' - VERSION='2.35.3' + VERSION='2.35.4' # Some tools Automake needs. @@ -3122,7 +2987,7 @@ fi LIBXMLXX_MODULE_NAME='libxml++-2.6' -LIBXMLXX_VERSION='2.35.3' +LIBXMLXX_VERSION='2.35.4' LIBXMLXX_API_VERSION='2.6' @@ -3136,10 +3001,10 @@ LIBXMLXX_MINOR_VERSION=35 $as_echo "#define LIBXMLXX_MINOR_VERSION 35" >>confdefs.h -LIBXMLXX_MICRO_VERSION=3 +LIBXMLXX_MICRO_VERSION=4 -$as_echo "#define LIBXMLXX_MICRO_VERSION 3" >>confdefs.h +$as_echo "#define LIBXMLXX_MICRO_VERSION 4" >>confdefs.h @@ -3867,8 +3732,8 @@ esac -macro_version='2.2.6' -macro_revision='1.3012' +macro_version='2.4.2' +macro_revision='1.3337' @@ -3955,6 +3820,75 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac +# 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 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "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*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5088,8 +5022,11 @@ if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$ac_tool_prefix"; then - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + 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 @@ -5133,7 +5070,7 @@ fi fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + 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 @@ -5188,6 +5125,15 @@ esac fi fi + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -5207,13 +5153,13 @@ if ${lt_cv_nm_interface+:} false; then : else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:5210: $ac_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:5213: $NM \\\"conftest.$ac_objext\\\"\"" >&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:5216: output\"" >&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" @@ -5270,6 +5216,11 @@ else 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. @@ -5295,6 +5246,11 @@ else 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 @@ -5334,8 +5290,8 @@ else # 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"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -5377,8 +5333,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes @@ -5427,6 +5383,80 @@ esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : @@ -5443,6 +5473,11 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' @@ -5603,16 +5638,18 @@ 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 + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && 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 - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + # 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) +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' @@ -5642,6 +5679,10 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -5650,11 +5691,11 @@ hpux10.20* | hpux11*) lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_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_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 @@ -5675,8 +5716,8 @@ irix5* | irix6* | nonstopux*) lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -5757,6 +5798,21 @@ esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$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 @@ -5772,16 +5828,26 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 + # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : +if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. + 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 @@ -5790,7 +5856,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5800,10 +5866,10 @@ IFS=$as_save_IFS fi fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -5811,17 +5877,17 @@ fi fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 +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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. + 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 @@ -5830,7 +5896,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" + ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5840,17 +5906,17 @@ IFS=$as_save_IFS fi fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - if test "x$ac_ct_AR" = x; then - AR="false" + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) @@ -5858,35 +5924,71 @@ yes:) $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - AR=$ac_ct_AR + DLLTOOL=$ac_ct_DLLTOOL fi else - AR="$ac_cv_prog_AR" + DLLTOOL="$ac_cv_prog_DLLTOOL" fi -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$DLLTOOL" && DLLTOOL=dlltool + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$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 - # 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 + 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : +if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. + 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 @@ -5895,7 +5997,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5905,18 +6007,187 @@ IFS=$as_save_IFS fi fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi + test -n "$AR" && break + done fi -if test -z "$ac_cv_prog_STRIP"; then +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$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} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + 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=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; 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=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 @@ -6083,15 +6354,27 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + 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 + + + + + + @@ -6199,8 +6482,8 @@ esac lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -6224,6 +6507,7 @@ for ac_symprfx in "" "_"; do # 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};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -6236,6 +6520,7 @@ for ac_symprfx in "" "_"; do 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 @@ -6261,8 +6546,8 @@ _LT_EOF test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then @@ -6277,6 +6562,18 @@ _LT_EOF 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 con'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 @@ -6288,7 +6585,7 @@ _LT_EOF cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ -const struct { +LT_DLSYM_CONST struct { const char *name; void *address; } @@ -6314,8 +6611,8 @@ static const void *lt_preloaded_setup() { _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" + 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 @@ -6325,8 +6622,8 @@ _LT_EOF test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi @@ -6363,6 +6660,17 @@ else $as_echo "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 + + + + + @@ -6385,6 +6693,43 @@ fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; @@ -6416,7 +6761,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6419 "configure"' > conftest.$ac_ext + 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=$? @@ -6551,7 +6896,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 @@ -6562,7 +6907,20 @@ sparc*-*solaris*) case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-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" @@ -6578,6 +6936,123 @@ 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + case $host_os in rhapsody* | darwin*) @@ -7085,7 +7560,13 @@ else $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # 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 $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -7096,6 +7577,7 @@ else fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : @@ -7128,6 +7610,41 @@ rm -f core conftest.err conftest.$ac_objext \ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 cru libconftest.a conftest.o" >&5 + $AR cru 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 $_lt_result -eq 0 && $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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -7155,7 +7672,7 @@ $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test "$DSYMUTIL" != ":"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -7423,551 +7940,36 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - 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 : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - -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 - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$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. -$as_echo "$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\"" -$as_echo "$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 - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - 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.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -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="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - 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 8's {/usr,}/bin/sh. - touch 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$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 - - -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # 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 - # 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue +_ACEOF + 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 +done + + +for ac_header in dlfcn.h +do : + 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 : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 _ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # 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_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -_lt_caught_CXX_error=yes; } -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 + +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 @@ -7978,7 +7980,7 @@ enable_dlopen=yes enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 @@ -8344,7 +8346,22 @@ fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" + 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 pic_mode=default fi @@ -8421,6 +8438,11 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + test -z "$LN_S" && LN_S="ln -s" @@ -8470,19 +8492,6 @@ _ACEOF - - - - - - - - - - - - - case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some @@ -8495,23 +8504,6 @@ aix3*) ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# 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' - # Global variables: ofile=libtool can_build_shared=yes @@ -8540,7 +8532,7 @@ for cc_temp in $compiler""; do *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it @@ -8749,7 +8741,12 @@ if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } @@ -8769,15 +8766,15 @@ else -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:8772: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8776: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $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 @@ -8806,8 +8803,6 @@ fi lt_prog_compiler_pic= lt_prog_compiler_static= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' @@ -8855,6 +8850,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } 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 @@ -8897,6 +8898,15 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } 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 @@ -8938,7 +8948,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -8959,7 +8969,13 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + 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,' @@ -8971,25 +8987,40 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + 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,' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' + *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' - lt_prog_compiler_wl='' ;; esac ;; @@ -9021,7 +9052,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in - f77* | f90* | f95*) + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; @@ -9078,13 +9109,17 @@ case $host_os in lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. @@ -9108,15 +9143,15 @@ else -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:9111: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9115: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $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 @@ -9145,6 +9180,11 @@ fi + + + + + # # Check to make sure the static flag actually works. # @@ -9164,7 +9204,7 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $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 @@ -9213,16 +9253,16 @@ else -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:9216: $lt_compile\"" >&5) + (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:9220: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $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 @@ -9268,16 +9308,16 @@ else -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:9271: $lt_compile\"" >&5) + (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:9275: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $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 @@ -9343,7 +9383,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported @@ -9390,7 +9429,33 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie 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 "$with_gnu_ld" = yes; 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 "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -9408,6 +9473,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie fi supports_anon_versioning=no case `$LD -v 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 ... @@ -9423,11 +9489,12 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** 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 modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** 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 @@ -9463,10 +9530,12 @@ _LT_EOF # _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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + 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' @@ -9484,6 +9553,11 @@ _LT_EOF fi ;; + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no @@ -9499,7 +9573,7 @@ _LT_EOF 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) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9509,15 +9583,16 @@ _LT_EOF if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then - tmp_addflag= + 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + 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*) # 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + 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' ;; @@ -9528,13 +9603,17 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; - xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + 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 @@ -9550,17 +9629,16 @@ _LT_EOF fi case $cc_basename in - xlf*) + 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= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; 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 $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -9574,8 +9652,8 @@ _LT_EOF archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + 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 ;; @@ -9593,8 +9671,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + 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 @@ -9640,8 +9718,8 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + 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 @@ -9681,8 +9759,10 @@ _LT_EOF else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -9769,7 +9849,13 @@ _LT_EOF allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -9782,25 +9868,32 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -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 "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi + 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$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + 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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' @@ -9809,7 +9902,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi else # Determine the default libpath from the value encoded in an # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -9822,30 +9921,42 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -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 "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi + 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$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + 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' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' + if test "$with_gnu_ld" = yes; 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 # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -9877,20 +9988,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes + case $cc_basename in + cl*) + # Native MSVC + 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~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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 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*) @@ -9900,7 +10055,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' + if test "$lt_cv_ld_force_load" = "yes"; 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 @@ -9908,7 +10068,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo + 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}" @@ -9926,10 +10086,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no ;; - freebsd1*) - ld_shlibs=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -9942,7 +10098,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes @@ -9951,7 +10107,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + 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 @@ -9959,7 +10115,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hpux9*) if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi @@ -9974,14 +10130,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; 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 "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes @@ -9993,16 +10148,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; 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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else @@ -10014,7 +10169,46 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -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) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; 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 @@ -10042,26 +10236,39 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + 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. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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) {} +int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; 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 else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + 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' @@ -10123,17 +10330,17 @@ rm -f core conftest.err conftest.$ac_objext \ hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + 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" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + 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' @@ -10143,13 +10350,13 @@ rm -f core conftest.err conftest.$ac_objext \ osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + 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" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + 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 "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $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' @@ -10162,9 +10369,9 @@ rm -f core conftest.err conftest.$ac_objext \ no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + 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 ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $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"*) @@ -10352,44 +10559,50 @@ x|xyes) # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$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 + 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=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 -$as_echo "$archive_cmds_need_lc" >&6; } + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi @@ -10547,11 +10760,6 @@ esac - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -10560,16 +10768,23 @@ if test "$GCC" = yes; then darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + 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 -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + 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= @@ -10582,7 +10797,7 @@ if test "$GCC" = yes; then 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 ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -10602,7 +10817,13 @@ BEGIN {RS=" "; FS="/|\n";} { if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # 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 @@ -10628,7 +10849,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + 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 @@ -10637,7 +10858,7 @@ aix3*) ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -10690,7 +10911,7 @@ amigaos*) 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -10702,7 +10923,7 @@ beos*) ;; bsdi[45]*) - version_type=linux + 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' @@ -10721,8 +10942,9 @@ cygwin* | mingw* | pw32* | cegcc*) need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + 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}`~ @@ -10743,36 +10965,83 @@ cygwin* | mingw* | pw32* | cegcc*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + + 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}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + 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 wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -10793,7 +11062,7 @@ darwin* | rhapsody*) ;; dgux*) - version_type=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' @@ -10801,10 +11070,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -10812,7 +11077,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -10830,7 +11095,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -10850,12 +11115,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=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}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +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=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -10901,12 +11180,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # 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 + 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}' @@ -10922,7 +11203,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -10959,9 +11240,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-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}' @@ -10969,12 +11250,17 @@ linux* | k*bsd*-gnu) 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 - 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 + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 @@ -10987,23 +11273,31 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - shlibpath_overrides_runpath=yes + lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + 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 + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + # Append ld.so.conf contents 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;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + 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="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -11034,7 +11328,7 @@ netbsd*) ;; newsos6) - version_type=linux + 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 @@ -11103,7 +11397,7 @@ rdos*) ;; solaris*) - version_type=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}' @@ -11128,7 +11422,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + 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 @@ -11152,7 +11446,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + 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 @@ -11183,7 +11477,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=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}' @@ -11193,7 +11487,7 @@ tpf*) ;; uts4*) - version_type=linux + 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 @@ -11305,6 +11599,11 @@ fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= @@ -11635,7 +11934,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11638 "configure" +#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11676,7 +11975,13 @@ else # endif #endif -void fnord() { int i=42;} +/* When -fvisbility=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); @@ -11685,7 +11990,11 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else @@ -11731,7 +12040,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11734 "configure" +#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11772,7 +12081,13 @@ else # endif #endif -void fnord() { int i=42;} +/* When -fvisbility=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); @@ -11781,7 +12096,11 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else @@ -11938,6 +12257,145 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # 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 + # 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # 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 + # 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_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$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' @@ -11954,7 +12412,6 @@ export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported @@ -11964,6 +12421,8 @@ 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 @@ -12019,6 +12478,7 @@ $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 @@ -12036,6 +12496,7 @@ $RM -r conftest* fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do @@ -12046,7 +12507,7 @@ $RM -r conftest* *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then @@ -12175,8 +12636,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + 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' @@ -12208,7 +12669,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -12318,7 +12779,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -12331,26 +12798,33 @@ main () _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -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 "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi + 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$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + 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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' @@ -12359,7 +12833,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi else # Determine the default libpath from the value encoded in an # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -12372,30 +12852,42 @@ main () _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -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 "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi + 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$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + 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' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' + if test "$with_gnu_ld" = yes; 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 # This is similar to how AIX traditionally builds its shared # libraries. @@ -12425,28 +12917,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; cygwin* | mingw* | pw32* | cegcc*) - # _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' - 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 (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # 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~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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 (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; darwin* | rhapsody*) @@ -12454,7 +12993,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='' + if test "$lt_cv_ld_force_load" = "yes"; 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 @@ -12462,7 +13006,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo + 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}" @@ -12496,7 +13040,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac ;; - freebsd[12]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no @@ -12515,6 +13059,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi gnu*) ;; + 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=: @@ -12539,11 +13088,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # 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; $ECHO "X$list" | $Xsed' + 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 "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -12604,7 +13153,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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 "$GXX" = yes; then @@ -12614,10 +13163,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi 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 -fPIC ${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}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + 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 @@ -12647,7 +13196,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi case $cc_basename in CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + 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 @@ -12658,9 +13207,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + 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 -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + 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 @@ -12671,7 +13220,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -12689,7 +13238,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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' @@ -12726,26 +13275,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in - *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + *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 | $NL2SP`"' + 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 | $NL2SP`~ + $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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + $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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + $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 will use weak symbols + *) # 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' ;; @@ -12753,7 +13302,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + 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++ @@ -12772,9 +13321,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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*) + 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' @@ -12794,13 +13343,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + 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='echo' + 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 @@ -12869,7 +13418,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi 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=echo + output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi @@ -12904,15 +13453,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi 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" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + 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" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + 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 "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $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' ;; @@ -12928,17 +13477,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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 "$GXX" = yes && test "$with_gnu_ld" = no; 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + 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 -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${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 @@ -12948,7 +13497,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + 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 @@ -12984,7 +13533,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' @@ -13005,7 +13554,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac link_all_deplibs_CXX=yes - output_verbose_link_cmd='echo' + 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 @@ -13025,14 +13574,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + 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. @@ -13043,7 +13592,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/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 -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + 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' @@ -13097,6 +13646,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi 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' @@ -13158,6 +13711,14 @@ private: }; _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=$? @@ -13171,7 +13732,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. @@ -13180,13 +13741,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 test $p = "-R"; then prev=$p continue - else - prev= 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 "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) + 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. @@ -13206,8 +13776,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 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. @@ -13243,6 +13815,7 @@ else fi $RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in @@ -13278,7 +13851,7 @@ linux*) solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as @@ -13343,8 +13916,6 @@ fi lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -13394,6 +13965,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # 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. @@ -13443,6 +14019,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } ;; 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++*) @@ -13499,7 +14080,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -13532,8 +14113,8 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + 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' @@ -13595,7 +14176,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } ;; solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' @@ -13660,10 +14241,17 @@ case $host_os in lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_prog_compiler_pic_CXX" >&6; } - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$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. @@ -13687,15 +14275,15 @@ else -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:13690: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13694: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $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 @@ -13721,6 +14309,8 @@ fi + + # # Check to make sure the static flag actually works. # @@ -13740,7 +14330,7 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $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 @@ -13786,16 +14376,16 @@ else -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:13789: $lt_compile\"" >&5) + (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:13793: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $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 @@ -13838,16 +14428,16 @@ else -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:13841: $lt_compile\"" >&5) + (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:13845: \$? = $ac_status" >&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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $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 @@ -13898,27 +14488,37 @@ fi $as_echo_n "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 AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" - ;; + ;; cygwin* | mingw* | cegcc*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; + case $cc_basename in + cl*) + 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 + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } @@ -13950,44 +14550,50 @@ x|xyes) # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$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 + 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=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - then - archive_cmds_need_lc_CXX=no - else - archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 -$as_echo "$archive_cmds_need_lc_CXX" >&6; } + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi @@ -14055,8 +14661,6 @@ esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -14082,7 +14686,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + 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 @@ -14091,7 +14695,7 @@ aix3*) ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -14144,7 +14748,7 @@ amigaos*) 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -14156,7 +14760,7 @@ beos*) ;; bsdi[45]*) - version_type=linux + 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' @@ -14175,8 +14779,9 @@ cygwin* | mingw* | pw32* | cegcc*) need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + 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}`~ @@ -14197,36 +14802,82 @@ cygwin* | mingw* | pw32* | cegcc*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + 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 wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -14246,7 +14897,7 @@ darwin* | rhapsody*) ;; dgux*) - version_type=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' @@ -14254,10 +14905,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -14265,7 +14912,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -14283,7 +14930,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -14303,12 +14950,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=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}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +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=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -14354,12 +15015,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # 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 + 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}' @@ -14375,7 +15038,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -14412,9 +15075,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-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}' @@ -14422,12 +15085,17 @@ linux* | k*bsd*-gnu) 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 - 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 + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 @@ -14440,23 +15108,31 @@ main () _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - shlibpath_overrides_runpath=yes + lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + 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 + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + # Append ld.so.conf contents 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;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + 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="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -14487,7 +15163,7 @@ netbsd*) ;; newsos6) - version_type=linux + 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 @@ -14556,7 +15232,7 @@ rdos*) ;; solaris*) - version_type=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}' @@ -14581,7 +15257,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + 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 @@ -14605,7 +15281,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + 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 @@ -14636,7 +15312,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=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}' @@ -14646,7 +15322,7 @@ tpf*) ;; uts4*) - version_type=linux + 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 @@ -14707,6 +15383,8 @@ fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= @@ -14754,6 +15432,7 @@ fi fi # test -n "$compiler" CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC @@ -14782,6 +15461,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_config_commands="$ac_config_commands libtool" @@ -14791,7 +15472,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -LIBXMLXX_MODULES='libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0' +LIBXMLXX_MODULES='libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.32.0' @@ -14979,6 +15660,7 @@ installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBXMLXX_CFLAGS and LIBXMLXX_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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -14994,6 +15676,7 @@ See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } + else LIBXMLXX_CFLAGS=$pkg_cv_LIBXMLXX_CFLAGS LIBXMLXX_LIBS=$pkg_cv_LIBXMLXX_LIBS @@ -15648,10 +16331,6 @@ 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 -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 "${ENABLE_DOCUMENTATION_TRUE}" && test -z "${ENABLE_DOCUMENTATION_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DOCUMENTATION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -16065,7 +16744,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libxml++ $as_me 2.35.3, which was +This file was extended by libxml++ $as_me 2.35.4, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16132,7 +16811,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libxml++ config.status 2.35.3 +libxml++ config.status 2.35.4 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -16261,186 +16940,212 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' -AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' -predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' -postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $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"`' +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"`' +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"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $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_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"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $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"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $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 SED \ +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ GREP \ EGREP \ FGREP \ @@ -16452,8 +17157,12 @@ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ +archiver_list_spec \ STRIP \ RANLIB \ CC \ @@ -16463,14 +17172,14 @@ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -SHELL \ -ECHO \ +nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ 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 \ @@ -16484,9 +17193,7 @@ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ -fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ @@ -16494,6 +17201,7 @@ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ +install_override_mode \ finish_eval \ old_striplib \ striplib \ @@ -16504,10 +17212,11 @@ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ +reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_wl_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 \ @@ -16517,9 +17226,7 @@ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ -fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ @@ -16529,9 +17236,9 @@ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -16553,11 +17260,13 @@ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ +postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ @@ -16566,10 +17275,11 @@ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ -prelink_cmds_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -16577,12 +17287,6 @@ prelink_cmds_CXX; do esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` - ;; -esac - ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' @@ -17338,7 +18042,8 @@ $as_echo X"$file" | # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -17375,13 +18080,13 @@ macro_version=$macro_version macro_revision=$macro_revision # Assembler program. -AS=$AS +AS=$lt_AS # DLL creation program. -DLLTOOL=$DLLTOOL +DLLTOOL=$lt_DLLTOOL # Object dumper program. -OBJDUMP=$OBJDUMP +OBJDUMP=$lt_OBJDUMP # Whether or not to build static libraries. build_old_libs=$enable_static @@ -17395,6 +18100,15 @@ pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# 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 @@ -17444,20 +18158,36 @@ SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds +# 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 # 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". +# 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 + +# 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. AR_FLAGS=$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 @@ -17466,6 +18196,9 @@ 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 @@ -17484,14 +18217,14 @@ 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 of the directory that contains temporary libtool files. -objdir=$objdir +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot -# An echo program that does not interpret backslashes. -ECHO=$lt_ECHO +# 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 @@ -17499,6 +18232,9 @@ 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 @@ -17555,6 +18291,9 @@ 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 @@ -17594,6 +18333,10 @@ 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 @@ -17606,12 +18349,12 @@ with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - # 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 @@ -17661,10 +18404,6 @@ no_undefined_flag=$lt_no_undefined_flag # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator @@ -17698,9 +18437,6 @@ inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols @@ -17716,6 +18452,9 @@ 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 @@ -17762,212 +18501,169 @@ ltmain="$ac_aux_dir/ltmain.sh" # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -17979,6 +18675,10 @@ _LT_EOF # 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 @@ -17991,12 +18691,12 @@ with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_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 @@ -18046,10 +18746,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX @@ -18083,9 +18779,6 @@ inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_CXX - # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX @@ -18101,6 +18794,9 @@ 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 diff --git a/configure.ac b/configure.ac index 5260e85..3aab085 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([libxml++], [2.35.3], +AC_INIT([libxml++], [2.35.4], [https://bugzilla.gnome.org/enter_bug.cgi?product=libxml%2B%2B], [libxml++], [http://libxmlplusplus.sourceforge.net/]) AC_PREREQ([2.59]) @@ -28,7 +28,7 @@ AC_PROG_CXX LT_PREREQ([2.2.6]) LT_INIT([dlopen win32-dll disable-static]) -AC_SUBST([LIBXMLXX_MODULES], ['libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0']) +AC_SUBST([LIBXMLXX_MODULES], ['libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.32.0']) PKG_CHECK_MODULES([LIBXMLXX], [$LIBXMLXX_MODULES]) AC_LANG([C++]) diff --git a/docs/manual/html/ch01s02.html b/docs/manual/html/ch01s02.html index f286cdc..32178aa 100644 --- a/docs/manual/html/ch01s02.html +++ b/docs/manual/html/ch01s02.html @@ -24,7 +24,7 @@

-UTF-8 and Glib::ustring

+UTF-8 and Glib::ustring

The libxml++ API takes, and gives, strings in the UTF-8 Unicode encoding, which can support all known languages and locales. This choice was made because, of the encodings that have this capability, UTF-8 is the most commonly accepted choice. UTF-8 is a multi-byte encoding, meaning that some characters use more than 1 byte. But for compatibility, old-fashioned 7-bit ASCII strings are unchanged when encoded as UTF-8, and UTF-8 strings do not contain null bytes which would cause old code to misjudge the number of bytes. For these reasons, you can store a UTF-8 string in a std::string object. However, the std::string API will operate on that string in terms of bytes, instead of characters.

Because Standard C++ has no string class that can fully handle UTF-8, libxml++ uses the Glib::ustring class from the glibmm library. Glib::ustring has almost exactly the same API as std::string, but methods such as length() and operator[] deal with whole UTF-8 characters rather than raw bytes.

There are implicit conversions between std::string and Glib::ustring, so you can use std::string wherever you see a Glib::ustring in the API, if you really don't care about any locale other than English. However, that is unlikely in today's connected world.

diff --git a/docs/manual/html/ch01s03.html b/docs/manual/html/ch01s03.html index e9f49c9..0e65524 100644 --- a/docs/manual/html/ch01s03.html +++ b/docs/manual/html/ch01s03.html @@ -24,7 +24,7 @@

-Compilation and Linking

+Compilation and Linking

To use libxml++ in your application, you must tell the compiler where to find the include headers and where to find the libxml++ library. libxml++ provides a pkg-config .pc file to make this easy. For instance, the following command will provide the necessary compiler options: pkg-config libxml++-2.6 --cflags --libs

diff --git a/docs/manual/html/ch02s02.html b/docs/manual/html/ch02s02.html index 55dc6ba..b9498ca 100644 --- a/docs/manual/html/ch02s02.html +++ b/docs/manual/html/ch02s02.html @@ -24,13 +24,13 @@

-SAX Parser

+SAX Parser

The SAX parser presents each node of the XML document in sequence. So when you process one node, you must have already stored information about any relevant previous nodes, and you have no information at that time about subsequent nodes. The SAX parser uses less memory than the DOM parser and it is a suitable abstraction for documents that can be processed sequentially rather than as a whole.

By using the parse_chunk() method instead of parse(), you can even parse parts of the XML document before you have received the whole document.

As shown in the example, you should derive your own class from SaxParser and override some of the virtual methods. These "handler" methods will be called while the document is parsed.

-Example

+Example

This example shows how the handler methods are called during parsing.

Source Code

File: myparser.h @@ -199,6 +199,7 @@ void MySaxParser::on_fatal_error(const Glib::ustring& text) #include <fstream> #include <iostream> #include <stdlib.h> +#include <cstring> // std::memset() #include "myparser.h" @@ -220,7 +221,7 @@ main(int argc, char* argv[]) try { MySaxParser parser; - parser.set_substitute_entities(true); // + parser.set_substitute_entities(true); parser.parse_file(filepath); } catch(const xmlpp::exception& ex) @@ -229,35 +230,42 @@ main(int argc, char* argv[]) return_code = EXIT_FAILURE; } - - // Demonstrate incremental parsing, sometimes useful for network connections: + // Incremental parsing, sometimes useful for network connections: + try { - //std::cout << "Incremental SAX Parser:" << std:endl; + std::cout << std::endl << "Incremental SAX Parser:" << std::endl; std::ifstream is(filepath.c_str()); - /* char buffer[64]; - const size_t buffer_size = sizeof(buffer) / sizeof(char); */ + if (!is) + throw xmlpp::exception("Could not open file " + filepath); + + char buffer[64]; + const size_t buffer_size = sizeof(buffer) / sizeof(char); //Parse the file: MySaxParser parser; - parser.parse_file(filepath); - - //Or parse chunks (though this seems to have problems): -/* + parser.set_substitute_entities(true); do { - memset(buffer, 0, buffer_size); + std::memset(buffer, 0, buffer_size); is.read(buffer, buffer_size-1); - if(is && is.gcount()) + if(is.gcount()) { - Glib::ustring input(buffer, is.gcount()); + // We use Glib::ustring::ustring(InputIterator begin, InputIterator end) + // instead of Glib::ustring::ustring( const char*, size_type ) because it + // expects the length of the string in characters, not in bytes. + Glib::ustring input(buffer, buffer+is.gcount()); parser.parse_chunk(input); } } while(is); parser.finish_chunk_parsing(); -*/ + } + catch(const xmlpp::exception& ex) + { + std::cerr << "Incremental parsing, libxml++ exception: " << ex.what() << std::endl; + return_code = EXIT_FAILURE; } return return_code; diff --git a/docs/manual/html/ch02s03.html b/docs/manual/html/ch02s03.html index 97759eb..3ff5fa5 100644 --- a/docs/manual/html/ch02s03.html +++ b/docs/manual/html/ch02s03.html @@ -22,12 +22,12 @@

-TextReader Parser

+TextReader Parser

Like the SAX parser, the TextReader parser is suitable for sequential parsing, but instead of implementing handlers for specific parts of the document, it allows you to detect the current node type, process the node accordingly, and skip forward in the document as much as necessary. Unlike the DOM parser, you may not move backwards in the XML document. And unlike the SAX parser, you must not waste time processing nodes that do not interest you.

All methods are on the single parser instance, but their result depends on the current context. For instance, use read() to move to the next node, and move_to_element() to navigate to child nodes. These methods will return false when no more nodes are available. Then use methods such as get_name() and get_value() to examine the elements and their attributes.

-Example

+Example

This example examines each node in turn, then moves to the next node.

Source Code

File: main.cc diff --git a/docs/manual/html/chapter-introduction.html b/docs/manual/html/chapter-introduction.html index 8a48d77..d1c9702 100644 --- a/docs/manual/html/chapter-introduction.html +++ b/docs/manual/html/chapter-introduction.html @@ -28,7 +28,7 @@

Table of Contents

@@ -42,7 +42,7 @@

But libxml++ was created mainly to fill the need for an API-stable and ABI-stable C++ XML parser which could be used as a shared library dependency by C++ applications that are distributed widely in binary form. That means that installed applications will not break when new versions of libxml++ are installed on a user's computer. Gradual improvement of the libxml++ API is still possible via non-breaking API additions, and new independent versions of the ABI that can be installed in parallel with older versions. These are the general techniques and principles followed by the GNOME project, of which libxml++ is a part.

-Installation

+Installation

libxml++ is packaged by major Linux and *BSD distributions and can be installed from source on Linux and Windows, using any modern compiler, such as g++, SUN Forte, or MSVC++.

For instance, to install libxml++ and its documentation on debian, use apt-get or synaptic like so:

diff --git a/docs/manual/html/chapter-parsers.html b/docs/manual/html/chapter-parsers.html index 493a16a..e44ee1f 100644 --- a/docs/manual/html/chapter-parsers.html +++ b/docs/manual/html/chapter-parsers.html @@ -28,7 +28,7 @@

Table of Contents

@@ -38,7 +38,7 @@

Remember that white space is usually significant in XML documents, so the parsers might provide unexpected text nodes that contain only spaces and new lines. The parser does not know whether you care about these text nodes, but your application may choose to ignore them.

-DOM Parser

+DOM Parser

The DOM parser parses the whole document at once and stores the structure in memory, available via Parser::get_document(). With methods such as Document::get_root_node() and Node::get_children(), you may then navigate into the heirarchy of XML nodes without restriction, jumping forwards or backwards in the document based on the information that you encounter. Therefore the DOM parser uses a relatively large amount of memory.

You should use C++ RTTI (via dynamic_cast<>) to identify the specific node type and to perform actions which are not possible with all node types. For instance, only Elements have attributes. Here is the inheritance hierarchy of node types:

@@ -82,7 +82,7 @@

There are also several methods which can create new child Nodes. By using these, and one of the Document::write_*() methods, you can use libxml++ to build a new XML document.

-Example

+Example

This example looks in the document for expected elements and then examines them. All these examples are included in the libxml++ source distribution.

Source Code

File: main.cc diff --git a/docs/manual/html/index.html b/docs/manual/html/index.html index b610db4..6bb9e0a 100644 --- a/docs/manual/html/index.html +++ b/docs/manual/html/index.html @@ -43,14 +43,14 @@

- - - + + - diff --git a/docs/reference/html/functions_0x63.html b/docs/reference/html/functions_0x63.html index f3c8c17..1aab72b 100644 --- a/docs/reference/html/functions_0x63.html +++ b/docs/reference/html/functions_0x63.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -181,14 +172,12 @@ : xmlpp::SchemaValidator -
- - + + - diff --git a/docs/reference/html/functions_0x64.html b/docs/reference/html/functions_0x64.html index 3d5d466..fed88be 100644 --- a/docs/reference/html/functions_0x64.html +++ b/docs/reference/html/functions_0x64.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -123,14 +114,12 @@ : xmlpp::DtdValidator -
- - + + - diff --git a/docs/reference/html/functions_0x65.html b/docs/reference/html/functions_0x65.html index fad58bd..80fe555 100644 --- a/docs/reference/html/functions_0x65.html +++ b/docs/reference/html/functions_0x65.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -140,14 +131,12 @@ : xmlpp::TextReader -
- - + + - diff --git a/docs/reference/html/functions_0x66.html b/docs/reference/html/functions_0x66.html index f18fc2c..4b42c8c 100644 --- a/docs/reference/html/functions_0x66.html +++ b/docs/reference/html/functions_0x66.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -101,14 +92,12 @@ : xmlpp::Node -
- - + + - diff --git a/docs/reference/html/functions_0x67.html b/docs/reference/html/functions_0x67.html index 9dfc78e..f6416cb 100644 --- a/docs/reference/html/functions_0x67.html +++ b/docs/reference/html/functions_0x67.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -238,14 +229,12 @@ : xmlpp::TextReader -
- - + + - diff --git a/docs/reference/html/functions_0x68.html b/docs/reference/html/functions_0x68.html index 1e9c125..94cb84d 100644 --- a/docs/reference/html/functions_0x68.html +++ b/docs/reference/html/functions_0x68.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -105,14 +96,12 @@ : xmlpp::TextReader -
- - + + - diff --git a/docs/reference/html/functions_0x69.html b/docs/reference/html/functions_0x69.html index 169a5d4..bdeb43a 100644 --- a/docs/reference/html/functions_0x69.html +++ b/docs/reference/html/functions_0x69.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
- - +
- - - - -
libxml++ -  2.35.3 +  2.35.4
-
- - + + -
+
Here is a list of all class members with links to the classes they belong to:
@@ -94,9 +85,6 @@
  • import_node() : xmlpp::Node
  • -
  • Init() -: xmlpp::Document::Init -
  • Initial : xmlpp::TextReader
  • @@ -129,14 +117,12 @@ : xmlpp::IStreamParserInputBuffer -
    - - + + - diff --git a/docs/reference/html/functions_0x6b.html b/docs/reference/html/functions_0x6b.html index 0c523cf..6d0763e 100644 --- a/docs/reference/html/functions_0x6b.html +++ b/docs/reference/html/functions_0x6b.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -95,14 +86,12 @@ : xmlpp::KeepBlanks -
    - - + + - diff --git a/docs/reference/html/functions_0x6c.html b/docs/reference/html/functions_0x6c.html index 7c7ef35..08b2079 100644 --- a/docs/reference/html/functions_0x6c.html +++ b/docs/reference/html/functions_0x6c.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -98,14 +89,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_0x6d.html b/docs/reference/html/functions_0x6d.html index 2026d41..ba2709b 100644 --- a/docs/reference/html/functions_0x6d.html +++ b/docs/reference/html/functions_0x6d.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -119,14 +110,12 @@ : xmlpp::Parser -
    - - + + - diff --git a/docs/reference/html/functions_0x6e.html b/docs/reference/html/functions_0x6e.html index be928c3..e385862 100644 --- a/docs/reference/html/functions_0x6e.html +++ b/docs/reference/html/functions_0x6e.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -114,14 +105,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_0x6f.html b/docs/reference/html/functions_0x6f.html index 45c5b3e..a8cce74 100644 --- a/docs/reference/html/functions_0x6f.html +++ b/docs/reference/html/functions_0x6f.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -153,14 +144,12 @@ : xmlpp::OutputBuffer -
    - - + + - diff --git a/docs/reference/html/functions_0x70.html b/docs/reference/html/functions_0x70.html index 3e89fd5..9f2e173 100644 --- a/docs/reference/html/functions_0x70.html +++ b/docs/reference/html/functions_0x70.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -127,9 +118,9 @@
  • parse_stream() : xmlpp::Parser -, xmlpp::DtdValidator , xmlpp::SaxParser , xmlpp::DomParser +, xmlpp::DtdValidator
  • parse_subset() : xmlpp::DtdValidator @@ -146,6 +137,9 @@
  • PrefixNsMap : xmlpp::Node
  • +
  • process_xinclude() +: xmlpp::Document +
  • ProcessingInstruction : xmlpp::TextReader
  • @@ -153,14 +147,12 @@ : xmlpp::ProcessingInstructionNode -
    - - + + - diff --git a/docs/reference/html/functions_0x72.html b/docs/reference/html/functions_0x72.html index a16295b..0625a44 100644 --- a/docs/reference/html/functions_0x72.html +++ b/docs/reference/html/functions_0x72.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -131,14 +122,12 @@ : xmlpp::Node -
    - - + + - diff --git a/docs/reference/html/functions_0x73.html b/docs/reference/html/functions_0x73.html index 08694f2..048640d 100644 --- a/docs/reference/html/functions_0x73.html +++ b/docs/reference/html/functions_0x73.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -165,14 +156,12 @@ : xmlpp::Parser -
    - - + + - diff --git a/docs/reference/html/functions_0x74.html b/docs/reference/html/functions_0x74.html index 6784b9e..498712a 100644 --- a/docs/reference/html/functions_0x74.html +++ b/docs/reference/html/functions_0x74.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -101,14 +92,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_0x76.html b/docs/reference/html/functions_0x76.html index 99e22a5..9e83d8e 100644 --- a/docs/reference/html/functions_0x76.html +++ b/docs/reference/html/functions_0x76.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -122,14 +113,12 @@ : xmlpp::SaxParser::Attribute -
    - - + + - diff --git a/docs/reference/html/functions_0x77.html b/docs/reference/html/functions_0x77.html index 5720b13..12c94ce 100644 --- a/docs/reference/html/functions_0x77.html +++ b/docs/reference/html/functions_0x77.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -116,14 +107,12 @@ : xmlpp::Document -
    - - + + - diff --git a/docs/reference/html/functions_0x78.html b/docs/reference/html/functions_0x78.html index 4369982..4fc5b0d 100644 --- a/docs/reference/html/functions_0x78.html +++ b/docs/reference/html/functions_0x78.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:

    - x -

    -
    - - + + - diff --git a/docs/reference/html/functions_0x7e.html b/docs/reference/html/functions_0x7e.html index 4be7368..470c838 100644 --- a/docs/reference/html/functions_0x7e.html +++ b/docs/reference/html/functions_0x7e.html @@ -2,39 +2,30 @@ + libxml++: Class Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Here is a list of all class members with links to the classes they belong to:
    @@ -133,9 +124,6 @@
  • ~exception() : xmlpp::exception
  • -
  • ~Init() -: xmlpp::Document::Init -
  • ~internal_error() : xmlpp::internal_error
  • @@ -190,15 +178,19 @@
  • ~validity_error() : xmlpp::validity_error
  • +
  • ~XIncludeEnd() +: xmlpp::XIncludeEnd +
  • +
  • ~XIncludeStart() +: xmlpp::XIncludeStart +
  • -
    - - + + - diff --git a/docs/reference/html/functions_enum.html b/docs/reference/html/functions_enum.html index 5fac22f..4312e5f 100644 --- a/docs/reference/html/functions_enum.html +++ b/docs/reference/html/functions_enum.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Enumerations - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      -
    - - + + - diff --git a/docs/reference/html/functions_eval.html b/docs/reference/html/functions_eval.html index b1ec1d5..c353558 100644 --- a/docs/reference/html/functions_eval.html +++ b/docs/reference/html/functions_eval.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Enumerator - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -238,14 +229,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func.html b/docs/reference/html/functions_func.html index 480f900..5e4b28b 100644 --- a/docs/reference/html/functions_func.html +++ b/docs/reference/html/functions_func.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -134,14 +126,12 @@ : xmlpp::AttributeNode -
    - - + + - diff --git a/docs/reference/html/functions_func_0x63.html b/docs/reference/html/functions_func_0x63.html index 1654bec..ce0395d 100644 --- a/docs/reference/html/functions_func_0x63.html +++ b/docs/reference/html/functions_func_0x63.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -164,14 +156,12 @@ : xmlpp::Node -
    - - + + - diff --git a/docs/reference/html/functions_func_0x64.html b/docs/reference/html/functions_func_0x64.html index b580f08..9786097 100644 --- a/docs/reference/html/functions_func_0x64.html +++ b/docs/reference/html/functions_func_0x64.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -103,14 +95,12 @@ : xmlpp::DtdValidator -
    - - + + - diff --git a/docs/reference/html/functions_func_0x65.html b/docs/reference/html/functions_func_0x65.html index 0ec9a58..af98eaf 100644 --- a/docs/reference/html/functions_func_0x65.html +++ b/docs/reference/html/functions_func_0x65.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -115,14 +107,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func_0x66.html b/docs/reference/html/functions_func_0x66.html index cc573df..eb4ad6f 100644 --- a/docs/reference/html/functions_func_0x66.html +++ b/docs/reference/html/functions_func_0x66.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -100,14 +92,12 @@ : xmlpp::Node -
    - - + + - diff --git a/docs/reference/html/functions_func_0x67.html b/docs/reference/html/functions_func_0x67.html index 9ebcf23..dfff8d4 100644 --- a/docs/reference/html/functions_func_0x67.html +++ b/docs/reference/html/functions_func_0x67.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -237,14 +229,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func_0x68.html b/docs/reference/html/functions_func_0x68.html index 60355b0..a8cbd38 100644 --- a/docs/reference/html/functions_func_0x68.html +++ b/docs/reference/html/functions_func_0x68.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -104,14 +96,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func_0x69.html b/docs/reference/html/functions_func_0x69.html index e7ccad6..21bc1c5 100644 --- a/docs/reference/html/functions_func_0x69.html +++ b/docs/reference/html/functions_func_0x69.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -93,15 +85,12 @@
  • import_node() : xmlpp::Node
  • -
  • Init() -: xmlpp::Document::Init -
  • initialize_context() : xmlpp::Parser
  • initialize_valid() -: xmlpp::SchemaValidator -, xmlpp::Validator +: xmlpp::Validator +, xmlpp::SchemaValidator
  • internal_error() : xmlpp::internal_error @@ -122,14 +111,12 @@ : xmlpp::IStreamParserInputBuffer
  • -
    - - + + - diff --git a/docs/reference/html/functions_func_0x6b.html b/docs/reference/html/functions_func_0x6b.html index 47396bf..481d211 100644 --- a/docs/reference/html/functions_func_0x6b.html +++ b/docs/reference/html/functions_func_0x6b.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -94,14 +86,12 @@ : xmlpp::KeepBlanks -
    - - + + - diff --git a/docs/reference/html/functions_func_0x6c.html b/docs/reference/html/functions_func_0x6c.html index c61c6f7..48e418e 100644 --- a/docs/reference/html/functions_func_0x6c.html +++ b/docs/reference/html/functions_func_0x6c.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -94,14 +86,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func_0x6d.html b/docs/reference/html/functions_func_0x6d.html index 7bb6275..34fa809 100644 --- a/docs/reference/html/functions_func_0x6d.html +++ b/docs/reference/html/functions_func_0x6d.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -103,14 +95,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func_0x6e.html b/docs/reference/html/functions_func_0x6e.html index daaa270..2bb8252 100644 --- a/docs/reference/html/functions_func_0x6e.html +++ b/docs/reference/html/functions_func_0x6e.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -100,14 +92,12 @@ : xmlpp::NonCopyable -
    - - + + - diff --git a/docs/reference/html/functions_func_0x6f.html b/docs/reference/html/functions_func_0x6f.html index 9cfcdde..b0bae9d 100644 --- a/docs/reference/html/functions_func_0x6f.html +++ b/docs/reference/html/functions_func_0x6f.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -152,14 +144,12 @@ : xmlpp::OutputBuffer -
    - - + + - diff --git a/docs/reference/html/functions_func_0x70.html b/docs/reference/html/functions_func_0x70.html index 8abb027..29b6e7a 100644 --- a/docs/reference/html/functions_func_0x70.html +++ b/docs/reference/html/functions_func_0x70.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -115,8 +107,8 @@
  • parse_memory() : xmlpp::SchemaValidator -, xmlpp::DtdValidator , xmlpp::Parser +, xmlpp::DtdValidator , xmlpp::SaxParser , xmlpp::DomParser
  • @@ -125,10 +117,10 @@ , xmlpp::DomParser
  • parse_stream() -: xmlpp::SaxParser -, xmlpp::DomParser +: xmlpp::DomParser , xmlpp::Parser , xmlpp::DtdValidator +, xmlpp::SaxParser
  • parse_subset() : xmlpp::DtdValidator @@ -139,18 +131,19 @@
  • ParserInputBuffer() : xmlpp::ParserInputBuffer
  • +
  • process_xinclude() +: xmlpp::Document +
  • ProcessingInstructionNode() : xmlpp::ProcessingInstructionNode
  • -
    - - + + - diff --git a/docs/reference/html/functions_func_0x72.html b/docs/reference/html/functions_func_0x72.html index 4c504dd..b379eb8 100644 --- a/docs/reference/html/functions_func_0x72.html +++ b/docs/reference/html/functions_func_0x72.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -127,14 +119,12 @@ : xmlpp::Node -
    - - + + - diff --git a/docs/reference/html/functions_func_0x73.html b/docs/reference/html/functions_func_0x73.html index 28bf96a..5807fa5 100644 --- a/docs/reference/html/functions_func_0x73.html +++ b/docs/reference/html/functions_func_0x73.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -148,14 +140,12 @@ : xmlpp::Attribute -
    - - + + - diff --git a/docs/reference/html/functions_func_0x74.html b/docs/reference/html/functions_func_0x74.html index e28f98e..85f77da 100644 --- a/docs/reference/html/functions_func_0x74.html +++ b/docs/reference/html/functions_func_0x74.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -97,14 +89,12 @@ : xmlpp::TextReader -
    - - + + - diff --git a/docs/reference/html/functions_func_0x76.html b/docs/reference/html/functions_func_0x76.html index 50f5d80..9b50e49 100644 --- a/docs/reference/html/functions_func_0x76.html +++ b/docs/reference/html/functions_func_0x76.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -101,14 +93,12 @@ : xmlpp::validity_error -
    - - + + - diff --git a/docs/reference/html/functions_func_0x77.html b/docs/reference/html/functions_func_0x77.html index a2efec8..53a5361 100644 --- a/docs/reference/html/functions_func_0x77.html +++ b/docs/reference/html/functions_func_0x77.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -112,14 +104,12 @@ : xmlpp::Document -
    - - + + - diff --git a/docs/reference/html/functions_func_0x78.html b/docs/reference/html/functions_func_0x78.html new file mode 100644 index 0000000..3b8a821 --- /dev/null +++ b/docs/reference/html/functions_func_0x78.html @@ -0,0 +1,100 @@ + + + + + +libxml++: Class Members - Functions + + + + + + +
    +
    + + + + + + +
    +
    libxml++ +  2.35.4 +
    +
    +
    + + + + + + +
    +
    +  + +

    - x -

    +
    + + + + diff --git a/docs/reference/html/functions_func_0x7e.html b/docs/reference/html/functions_func_0x7e.html index 85c5cf7..d3fad4e 100644 --- a/docs/reference/html/functions_func_0x7e.html +++ b/docs/reference/html/functions_func_0x7e.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Functions - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      @@ -132,9 +124,6 @@
  • ~exception() : xmlpp::exception
  • -
  • ~Init() -: xmlpp::Document::Init -
  • ~internal_error() : xmlpp::internal_error
  • @@ -189,15 +178,19 @@
  • ~validity_error() : xmlpp::validity_error
  • +
  • ~XIncludeEnd() +: xmlpp::XIncludeEnd +
  • +
  • ~XIncludeStart() +: xmlpp::XIncludeStart +
  • -
    - - + + - diff --git a/docs/reference/html/functions_type.html b/docs/reference/html/functions_type.html index b04d481..8588889 100644 --- a/docs/reference/html/functions_type.html +++ b/docs/reference/html/functions_type.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Typedefs - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      -
    - - + + - diff --git a/docs/reference/html/functions_vars.html b/docs/reference/html/functions_vars.html index 4e11d2c..ec5c137 100644 --- a/docs/reference/html/functions_vars.html +++ b/docs/reference/html/functions_vars.html @@ -2,39 +2,30 @@ + libxml++: Class Members - Variables - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      -
    - - + + - diff --git a/docs/reference/html/graph_legend.html b/docs/reference/html/graph_legend.html index ac4c821..f3b175e 100644 --- a/docs/reference/html/graph_legend.html +++ b/docs/reference/html/graph_legend.html @@ -2,39 +2,30 @@ + libxml++: Graph Legend - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Graph Legend
    -
    +

    This page explains how to interpret the graphs that are generated by doxygen.

    Consider the following example:

    -
    /*! Invisible class because of truncation */
    -class Invisible { };
    -
    -/*! Truncated class, inheritance relation is hidden */
    -class Truncated : public Invisible { };
    -
    -/* Class not documented with doxygen comments */
    -class Undocumented { };
    -
    -/*! Class that is inherited using public inheritance */
    -class PublicBase : public Truncated { };
    -
    -/*! A template class */
    -template<class T> class Templ { };
    -
    -/*! Class that is inherited using protected inheritance */
    -class ProtectedBase { };
    -
    -/*! Class that is inherited using private inheritance */
    -class PrivateBase { };
    -
    -/*! Class that is used by the Inherited class */
    -class Used { };
    -
    -/*! Super class that inherits a number of other classes */
    -class Inherited : public PublicBase,
    -                  protected ProtectedBase,
    -                  private PrivateBase,
    -                  public Undocumented,
    -                  public Templ<int>
    -{
    -  private:
    -    Used *m_usedClass;
    -};
    -

    This will result in the following graph:

    +
    /*! Invisible class because of truncation */
    +
    class Invisible { };
    +
    +
    /*! Truncated class, inheritance relation is hidden */
    +
    class Truncated : public Invisible { };
    +
    +
    /* Class not documented with doxygen comments */
    +
    class Undocumented { };
    +
    +
    /*! Class that is inherited using public inheritance */
    +
    class PublicBase : public Truncated { };
    +
    +
    /*! A template class */
    +
    template<class T> class Templ { };
    +
    +
    /*! Class that is inherited using protected inheritance */
    +
    class ProtectedBase { };
    +
    +
    /*! Class that is inherited using private inheritance */
    +
    class PrivateBase { };
    +
    +
    /*! Class that is used by the Inherited class */
    +
    class Used { };
    +
    +
    /*! Super class that inherits a number of other classes */
    +
    class Inherited : public PublicBase,
    +
    protected ProtectedBase,
    +
    private PrivateBase,
    +
    public Undocumented,
    +
    public Templ<int>
    +
    {
    +
    private:
    +
    Used *m_usedClass;
    +
    };
    +

    This will result in the following graph:

    -graph_legend.png +
    -

    The boxes in the above graph have the following meaning:

    +

    The boxes in the above graph have the following meaning:

    • A filled gray box represents the struct or class for which the graph is generated.
    • @@ -113,14 +104,12 @@ A purple dashed arrow is used if a class is contained or used by another class.
    • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
    -
    - - + + - diff --git a/docs/reference/html/graph_legend.png b/docs/reference/html/graph_legend.png index fc92d3cbd087fb429feae41c06ddcf22187cea86..434a73ea6f7ff7667b618116b0e0512828fcede9 100644 GIT binary patch literal 17874 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 literal 15159 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 diff --git a/docs/reference/html/hierarchy.html b/docs/reference/html/hierarchy.html index f9808c7..5de48ed 100644 --- a/docs/reference/html/hierarchy.html +++ b/docs/reference/html/hierarchy.html @@ -2,39 +2,30 @@ + libxml++: Class Hierarchy - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Class Hierarchy
    -
    + - - +This inheritance list is sorted roughly, but not completely, alphabetically:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    oCtrackable
    oCexception
    |\Cxmlpp::exceptionBase class for all xmlpp exceptions
    | oCxmlpp::internal_error
    | \Cxmlpp::parse_errorThis exception will be thrown when the parser encounters an error in the XML document
    |  \Cxmlpp::validity_errorThis exception will be thrown when the parser encounters a validity error in the XML document
    oCxmlpp::DtdRepresents XML DTDs
    oCxmlpp::KeepBlanksThis class set KeepBlanksDefault and IndentTreeOutput of libxmlpp and restore their initial value in its destructor
    oCxmlpp::NonCopyableHerited by classes which cannot be copied
    |oCxmlpp::DocumentRepresents an XML document in the DOM model
    |oCxmlpp::NodeRepresents XML Nodes
    ||oCxmlpp::AttributeRepresents an XML Node attribute
    |||oCxmlpp::AttributeDeclarationRepresents the default value of an attribute of an XML Element node
    |||\Cxmlpp::AttributeNodeRepresents an explicit attribute of an XML Element node
    ||oCxmlpp::ContentNodeContent Node
    |||oCxmlpp::CdataNodeCData node
    |||oCxmlpp::CommentNodeComment Node
    |||oCxmlpp::EntityDeclarationEntity declaration
    |||oCxmlpp::ProcessingInstructionNode
    |||\Cxmlpp::TextNodeText Node
    ||oCxmlpp::ElementElement nodes have attributes as well as child nodes
    ||oCxmlpp::EntityReferenceEntity references refer to previously declared entities
    ||oCxmlpp::XIncludeEndXIncludeEnd node
    ||\Cxmlpp::XIncludeStartXIncludeStart node
    |oCxmlpp::OutputBufferBase class for xmlOutputBuffer wrapper
    ||\Cxmlpp::OStreamOutputBufferAn OutputBuffer implementation that send datas to a std::ostream
    |oCxmlpp::ParserXML parser
    ||oCxmlpp::DomParserDOM XML parser
    ||\Cxmlpp::SaxParserSAX XML parser
    |oCxmlpp::ParserInputBufferBase class for xmlParserInputBuffer wrapper
    ||\Cxmlpp::IStreamParserInputBuffer
    |oCxmlpp::SchemaRepresents an XML Schema
    |oCxmlpp::TextReaderA TextReader-style XML parser
    |\Cxmlpp::ValidatorBase class for XML validators
    | oCxmlpp::DtdValidatorXML DTD validator
    | \Cxmlpp::SchemaValidatorXML Schema Validator
    oCxmlpp::SaxParser::AttributeSimple structure used in the start_element callback, in which the attributes are a list of name/value pairs
    oCxmlpp::SaxParser::AttributeHasNameThis functor is a helper to find an attribute by name in an AttributeList using the standard algorithm std::find_if
    \CGValue
    +
    + + - diff --git a/docs/reference/html/index.html b/docs/reference/html/index.html index e8c128a..a281afb 100644 --- a/docs/reference/html/index.html +++ b/docs/reference/html/index.html @@ -2,39 +2,30 @@ + libxml++: libxml++ Reference Manual - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    libxml++ Reference Manual
    -
    +
    -

    -description

    +

    +Description

    libxml++ is a C++ wrapper for the libxml2 XML parser and builder library. It presents a simple C++-like API that can achieve common tasks with less code.

    See also the libxml++ Tutorial and the libxml++ website.

    -

    -features

    +

    +Features

    -

    -basics

    +

    +Basic Usage

    Include the libxml++ header:

    -
     #include <libxml++.h>
    -

    (You may include individual headers, such as libxml++/document.h instead.)

    +
    #include <libxml++.h>
    +

    (You may include individual headers, such as libxml++/document.h instead.)

    If your source file is program.cc, you can compile it with:

    -
     g++ program.cc -o program `pkg-config --cflags --libs libxml++-2.6`
    -

    Alternatively, if using autoconf, use the following in configure.ac:

    -
     PKG_CHECK_MODULES([LIBXMLXX], [libxml++-2.6])
    -

    Then use the generated LIBXMLXX_CFLAGS and LIBXMLXX_LIBS variables in the project Makefile.am files. For example:

    -
     program_CPPFLAGS = $(LIBXMLXX_CFLAGS)
    - program_LDADD = $(LIBXMLXX_LIBS)
    -
    - - +
    g++ program.cc -o program `pkg-config --cflags --libs libxml++-2.6`
    +

    Alternatively, if using autoconf, use the following in configure.ac:

    +
    PKG_CHECK_MODULES([LIBXMLXX], [libxml++-2.6])
    +

    Then use the generated LIBXMLXX_CFLAGS and LIBXMLXX_LIBS variables in the project Makefile.am files. For example:

    +
    program_CPPFLAGS = $(LIBXMLXX_CFLAGS)
    +
    program_LDADD = $(LIBXMLXX_LIBS)
    +
    + - diff --git a/docs/reference/html/inherit_graph_0.png b/docs/reference/html/inherit_graph_0.png index 4b5dabde8fe9ce7d0af96bebe6495e022dcf0361..801d407881668bc6286aa47a04b140d128d33c42 100644 GIT binary patch literal 6573 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 diff --git a/docs/reference/html/inherit_graph_2.png b/docs/reference/html/inherit_graph_2.png index c98aa53acdb4f99981227228276b9811c0b8787c..a5f5e78ab2f84c2cc80bb8aa7eea2f68b59f1ade 100644 GIT binary patch delta 963 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 literal 1590 zcmV-62Fdw}P)QsI5PD-{u15>RRcx2JtF<{dx6_LYV_xsB z`>*}e3+MCd+%Nb1&hPxb_ug}N*o6oofDtXkMkj#zE3kj!2Ky&&B%I^P$;r97xeZAL zlL~she$_ErO*`Lg@SZr!)N}*6(x^yWckuy#@{=I(vIxjDeVHf~_ z&1NeqDhdXJ)6>&=d3oL4-71xeqNt}&pSHKRZ`-y_tycH<_a}B|&$L)98jVJ))f$b) zNF>55g4GxA+6#GMVWFz3YRi@_BO@c(+1UVq-@kviw6th68kI_AGMQFZR@gIn^<;y_ zfe_~A=3cvYZE9+YQ-s;s*_xUfg+d{h%XK>4@bGXvU|(M!MNt}!W?*1|)5~l&A3Ahs zetsSRFgQ3^TwE-Z$@cHxZ@1giFaiL+{m)eP&zhT?&!0c<@p!aa?c29+5kgLgtNmQ7VY-4GBuTbF2qC-OUQkdVpbKP@$kwe}-@kv4R{Q62 zx%_@VLMRXjSgqE?sr~%dJ8B(+*CXX4Rl)ZuWHmzQ^TcCv~}r5YLVhM#pMxzk`pw((2 zgbc&5rC(fJbT}LWdMbk|6pE`?uYUaaF;VpSe5X&JzIE%C!{Hbk8@qk`w(w*Lf_U}n zmDOq;7#J8I9|r&|EiEaPO1s@o({x2eMSXp}aD=3h)98Z`x_I&8_3PJdHk;jUXP55( zN?Ti-*Xwn;TzBu@H5d#6qA)Uk*tKgHMNv0z-dtW@<`vfs73bl@hwMV=^ZCx5JEv4C6$-`W%a_?Tn0*Yc)stnC zSfA|d>{F*s&CShm#z4jecT-xd)THzX5r zf$u+YgZ&dX*gtWD{S!CXKXHTo6F1mDal`Y!j2ACnKnVYRDws5YX!ZBg`1`R<4(IzZ ou74PDf!9BAgZ&dX*gtXe2RJXqP^%As$^ZZW07*qoM6N<$g5r)9F8}}l diff --git a/docs/reference/html/inherit_graph_5.png b/docs/reference/html/inherit_graph_5.png index 791d076f9b1a3d8ee429bf84f842cb96bfeb7a1f..0253f46081d5ebb7f1fc0b67b1bb74c6ca722b16 100644 GIT binary patch literal 74916 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%0Ax}3f2nfQkDN=HP==U~zdSoCmb7Zsd4k@V& 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 literal 68910 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 diff --git a/docs/reference/html/inherit_graph_6.png b/docs/reference/html/inherit_graph_6.png index 344d213c0d7bf49bf2e8a06eff425cccdfeb04fb..33c5d25f9e8d9c2f2ad83e9d83dc4583e534d3f7 100644 GIT binary patch literal 1713 zcmV;i22S~jP)Ox~geZ$ktT~qwY))bC%Rjf6$!8YJ=%E(ewT;-rw)#cy`YF z8?ugR@8{}$p7XrVp6A(j=g*un002cGNJZRE7eM&CAc7-E3K1MZQi$LPk`m7~R#sLT z8yiER&`woD*kjN%eed4Al#~?Y*&;Zn(`mQc&!0apd0~XT$=KMK)9I|Pu122t$e_{D zQ3*>T>}6y!8P7xR;RupK1V@k*A~=GiNG-U?i#kCX{*cL&Gu$5M578N7*9*??_jh!3 z96x^i;K73`m8znmVq#)q8+l~^q0wmS>+8KG2EDz#@$vD!y}eu~PeXV~ZTrU= zze%aPUT`%vHD0gR;c)nTzJ-N_3l}bQcXw|u6#xJLFg-mT39u<9Q-!YHAu88A0a#`}dogn&8K1U|>L})9v5C|HO$CuU@^f zTCG`GSu{--6coIB_YTIR{1ipqym>P@Ia#GrH8(eh!(qIiyO+CGC=@=QPq5U5g@vlB zDwRr=n3z~uS^49~4}AT|xw5j7l$0cv0S5Q?_iMFUnM?)%c=__B!C;_iIwK?F?%lgE zW^;41ySw}7(W6SGvZ0|N5C{nF73&KCV7J>(o;(Qv$j{GrI2ID3kzYE$B!Qu78b6rufx=(rKKM~ehdTxJv}`M2?^!p zt!uQoO|;_F8nk>CU~z~FP|&Mhr1K{GWq^~sYbp-||{moJwtU4qWOzP__( z&oT`2^XJdHy1JH@7Qww@eE|SUN=o2o!)mpbl#~d@2%6md(F|NL8_zG+4xShY4glcs zcyu~ldwaW1r}KC`DD}5*-{5+6b(Ny1<>h5$Din&yeq1gWT+hwTWoBmL{bKn2{_EGT z=jG+mG=1#YvDVgB!4sa}@7HRz`1;{uX=%x9Hk-|6Oa_XgK7am<4yC1~SuB>XU%ztW zv$M0`zkiQjF(V^GaIY9{w_B}N2ZKQXKrk3otJMs{@Jbakx%s0RxL`J(U#uNGu@M{q zptG}+qNrQ9ZbcS~H@OQqO#nbJ7^G<$@Bd#|mYtiMtFNywEiHwfsi~C>l2jvV>$;RC*Iu{O9LIG4*M zc!uNpqvY4GUkM2baGjZ%`S9UGuh+Y=u>qetqpu&IK`@wQS-ah?(P*Hl*Xuuh`V<)! z&4l48jk}#;7<9rzH-8YGiJ83MU}>6OU0sFi<>h4*&r2)T4xShYE)WRhv0}E?>TEGMV5ZjYjkA z*|Sh6t*NOI z+$-3Z)oLv(E8~TkOr{499smH;YW4j5Jo58Q%;W_Jd;0Y0uCA^?Aiyw8d3iaC=cN^E z2Tu$Hck$xI;o)Iq_V@QUG&ErPuH)c7z~q>lhC=jxoNRj zva_=f95|4Zlk@!fbHTlWeVsaW3SF8JA4iq~QL2a)ykKjzZ;9zaR9_9;KhK8~f~5Qdv8LW(QvdsZ00000NkvXX Hu0mjf)UHys literal 1974 zcmV;n2TAyeP)C>lAzeEaT9dY2mf$Z$;pF-egWHQ+=(gs;ijE;_yoI{?I5CoCQWICPhzZVBtFQ6zI z9fbQN2s1z@L6`wL3BnA}Nf2g$PJ%E4bP|LappziX@ZUMfYPBXLP~5(X51Y+aQ&W?f znaSaBwr}6AR;!nnm*bFxM!@Iuj~_p7x7(Q#86O=T9Vm)kym*m_5T&E6A^lNGnEfnp z*5#Z804Oaj6$*tfUcB&ny*i!FU@)9Ldp3?#7={sdY0YLchGC73jf@LkJK=D6czC#^ zq~zAETWcJ$W5(`0GVi?xn-!Bvj`F#GFGiR2Um!r=WnQ&%i zhEgy+2-VY)c$@?PsH>~1udjDHog$Iw`Sa(5%GTCapU>CT)rF#{N~Ky@Sm^5N5(os~ zXD4A8cJ$~`r_*V%Sj1xSrAwD6gR#yY3t?!{Ml^sycl5aI7R2i)F)x4Rv*O4u|9W_wNY_36CE?4g>-N0|Q&OY$48a z^5jXk+dVTgvwQb$wOUOYNMG2hs;cwn&jSEzYik=C8t@>gbfkolK?FhY8d|MZiA2)g z-cIS-$RMR)dYE+5{QP`QPR`DqJ3Bi&36&^{`u%sOjlxeD3l4{ey#pM9C;MM}EvImoHzcRH~|~ zs)r9BA_y`!H`mhA;&eLkwUu5ohGCSOj95unES5+lLJ)+{=Z}qzUA}x-E|>4!ySKZ$ zd*8l&4u>NY3h{V6qW{K?8%YCc&}y}TKw$s={Rn~p02UV)bvj*reLZF8SP6+5ipAou zU%y5k0#R>T(+K{%#JS_P+wB7b14oV=Q7V=3W%&5Ag z6h(LK+NIHGj7B4ZARdpWyu7@nrNwME8w`fFwzfDl(H^LRYHUhj6hi;IgZ zD=QHM5s5@7iq6l^<6l#s&u2E9NdsvZ8XD4QG*eSkQ&UrBvso^e-@JJnA2A;z*)YDqSwu^z?K`M@LOf4NWkb z%F0Tk(b&_|W4GG_fxz3hZ@as@j~zRPAV@eI4uwLAiHWPLt8d=C!B>5Jom#u*SVSuB=@h6d4} zoH})Ca&q#+hYu)<0svN4R)|KdBrFyyvWE5b^=WBop-^aIV&dDkZ@s;}csC-?KM_oZ zwA!s@pVZ&qFO^F1P5#)}SY~FX*Xxb-{|Mz8k73xgYuEDf@&p1wb93{`$_iyLRw@9% z#Kc5VQBiVoGKa&FNF?XZox^u30D!^4!Q9;3#KgoyhYlGGhQh+ag9i`(rDhV8Nl5)~ z+_;gGlf!1S_w3nYGMVt8$K$E3t>y7}>FMcBO-=Y_ku;FXej}?Cfl)ItjuI zzrab9clUpnTmF!EfpZds8K9FO%mAGPVFu_V2s1z@L6`wL3BnA}Nf2hBc&p^zy?bkU za1DV(LVoTBfAt2k7NURkhU_E=BtGCi3BnA}Nf2g$PJ%GQAM!9X(vtWnb^rhX07*qo IM6N<$f(-S>9smFU diff --git a/docs/reference/html/inherit_graph_7.png b/docs/reference/html/inherit_graph_7.png index 4448b64606b9f54515579dda143f657d5fdea56d..a0f517d7a00df54bdbc9e37a95332409803ee5b0 100644 GIT binary patch literal 2135 zcmV-d2&ngoP)IQch=Gbm zf>#LYgMmaIBpUR=AZQu|gBS2ctucxOe6kn=Z%AT<7Eq~TKq# zulFJj@qZ#BB8rQPEf$NcswaBExmK+4rSiHeY>=@6#a}E8XA;J<>JMQ*RNmS)z#J9+#DMlOOj+tO3J{% z02)ul2LN2UbSXSMTrQWFmzO)8PJTaqF8x?4l}=1du%Iy$HU^zY8|t7OC%vf%VZ;|j}F4nF_@olf_M zhi(WFoYUz{O-)5n9z1xEnwsizxlrir?CkgN-`i}qix)2j2M6cmObaZrdbTmCZ{oJ{8{C>#s#bjn?78De8cXv-sO)*m4xN&1=XXn(^)WpQZi4!M| z967?DKQ)mO9BTwLc=ztzV`F2;T(M%sqeqV%4#&vI$l=3>k+ZI@Zu|D_CX?yMj~@pP z95{XYH0xZhx*&vESy||}(cIjem6gRhhSj9U7qZ~2(HMTNa`^Fq;2?x%vstNBo;hGNn?fXFUdk0Uh`E_s7J<@cX&2TCHc#p53%*6G@WM z(a{wZ6|5Vc)oN8J6#V(4gR!wOjYgxFNS#`}dbL)o{q*S*eSCa;{NUgq z^@)*@k*ssM7#CrOgu|5w~@cYl9>adB~Wb~f_#^z>}owoN9Jp-Y2ABH_;; z5gs1CfB*ikU%&E1006k%Zfb6CZ*OjHZfIy|Y;5eaXU~vRDwWbNOaTD_taG`jsHgyc zQdwEaSVJz89$(0Uvqoe1xys?kH-dZp`n5u#c>MVBs#UAry?e)>H&+?-ADqEpVBO*9 zeu4b_`7<~;7#+vN#N54m*J80uPfw$#PT~3UM_?W7cDvi#+an?(kf~CsK79D#IZVh3 zqb-d--DEOR8y@r{P;j{Hk&OWA>rlAmk`3X zwl=j|jc%U25L`w^2D+ul$jGR!uIBeMVp7LxX=ys0&TKZjTrQKzbo}`7%*;%5Dk37{ z$&)7zhhunnI6prhO%a$sPXy1w8jZ$aFgTsg_V)IbD_0`t)vH(2)6cg0 z;~8PO%HhWcf;)KdU{g~QW!Bf%mz0$7)X6aE2k4PNwr$t+1ZJl zGcz++4HNNkNa;4Gj%kVY$lT$5U|sJvk#DK75Fj3;sRSL%Tpf#vdUFLZ{Oe6ckV%zkl(I z@h`C8FrqSRg5$bw;_K=B2JdhfQNe=4h|0Vb9BX%tcP%#rLG0YQlX0z|Ykg+^!n_rn zZ;{L8*RNln?JVX43si7#-@e_ucW-ED=(1(Y_Uzg7{rh+1*X#9(iHTCFG%70U)~#FA z_=bjtYuBy~4h{+rMG!<|V`Fr5bWl*xh7B9KySrOjTH@m3q*CdYEnBEiZnyiwg$qih zQZAPtI&=v2Jt!IP2D}D=jTOdGh36LkXm; ztnBE~qXPp2E|;sXuTP`VcvX=9Kv&sbFg75$U N002ovPDHLkV1iwu7aITo literal 2193 zcmZuzc{tST7yo7*l6}ig_N-%z>mtTJ24l*;C&S3d)?hLWvSjNg*+SXpO0H$DkS*CV zB?(!^mbGX?V{GM4|NZ{B?|I&H&Ohfl&pDs>eBP7p0JFTnF2W7~zy)h72%K(z(yt2mt1h%XO(?mTt|BHP-PVIMY4bmpDVAtZhT%Sc~w#-=toksopLh?K1#5w zDG5Zyb>qayv<`CVD7Ze(3r9Ah8J5Q_&e0^$3wHcKf{Bz^Qrjm6sa$hlUE-Cw&o^lg zh)KMrw)RIdxyuDEm78K#4Zk(hymmI70I{_lU13Wy5#(;TZkyfF8^LsXo@-U|l9Ez7 zJaL-Ft;P_+wJf9YpUz%MI9j)anV~q2dEej1M@ml4oPfxHROq0l_yq*sl1L;oUK>;8 zdr+PEJlS!>c1Qy^ecoJa)Ld;E}#%EN9_j4%eN-H~E*1X9A@UPp0Ak z6D$_%;PC$QP)@^j6#WDS2Et(P4Bd8*uq!NHXta9y*w~vl$7}emp`GaI$;p9%fywFV zIQ@X1$5ij0cu$9G#*7&i0RaK%#ct0KX+-=L+O1o+`uh6v^724<_sf5N;;g`w(4}cJa!J-=2Q#fiDj<`X2nLPU;jlR`8y$ zNLEdE_d6ZXm_vF4YHMn~d)~c!_j7Q&79_yOPH7Oh9H<78?`3qr)Jze>u8SlYpobKwuz^N)`VjI#Y2EW7y=9iT;i;d|;J~ zo``lK1`Bla2nt$YA6BWxu0(gr@mhO%E$qy-sS4VfnVH$!=fGl7gwjp z^WI*Q)16`G?s8>E>uH8oi|#jf05VQL@t1KZ}hXrBqMPV9$woqblu2HG3$yhDN4#Hkn7X%v~EKMUs5tRKR-V{eii%dNE%jV7}Vr)e0*$UV*`i7T{6mK<>bgcxSom%KO_>= z|9649w^uhd=Iqx`5dH-@v|x1Y^XL7w(E=fLuO;XBLv<&Lj+Tye&TWIzrluxOPfx`R z_7u~n4rx+pE-El6lr%ajDlSfRQ5hK-iS1gjH7hf^8w@T2YiS8AUcnxQIXh3&5p&>Y z21xJT@rpv}U`ovNXJ&HXaJYie0Bw<>p&>dE?)pN?V?Z~-^a%owK2n|dO5J!@y1#J4 zEq-v7BGtq8(v{Na*(oR>uoh`>4q!>TNe@MtPhzw6UL?mnd$JWFlvmEfGrbb>?_Vv&ZeF$n=S|Z3DQSNP_rA}JRv+@sj ziA17uzKtS(=xi&S_ZI-* + libxml++: Class Hierarchy - + + - - - -
    Class Hierarchy
    -
    +
    - -
    - +
    - - +
    + +
    - - +
    + +
    - +
    - +
    - +
    - +
    - +
    -
    - - + + - diff --git a/docs/reference/html/jquery.js b/docs/reference/html/jquery.js new file mode 100644 index 0000000..63939e7 --- /dev/null +++ b/docs/reference/html/jquery.js @@ -0,0 +1,8 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
    a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
    "+""+"
    ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
    t
    ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
    ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")), +f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c) +{if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); diff --git a/docs/reference/html/namespacemembers.html b/docs/reference/html/namespacemembers.html index a5685b5..b8b4349 100644 --- a/docs/reference/html/namespacemembers.html +++ b/docs/reference/html/namespacemembers.html @@ -2,39 +2,30 @@ + libxml++: Namespace Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + - +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    • format_xml_error() @@ -110,14 +101,12 @@ : xmlpp
    -
    - - + + - diff --git a/docs/reference/html/namespacemembers_enum.html b/docs/reference/html/namespacemembers_enum.html index d7c866a..dabbbac 100644 --- a/docs/reference/html/namespacemembers_enum.html +++ b/docs/reference/html/namespacemembers_enum.html @@ -2,39 +2,30 @@ + libxml++: Namespace Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
     
    • XmlEntityType @@ -68,14 +59,12 @@ : xmlpp
    -
    - - + + - diff --git a/docs/reference/html/namespacemembers_eval.html b/docs/reference/html/namespacemembers_eval.html index 346068b..12f187d 100644 --- a/docs/reference/html/namespacemembers_eval.html +++ b/docs/reference/html/namespacemembers_eval.html @@ -2,39 +2,30 @@ + libxml++: Namespace Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
     
    • XML_EXTERNAL_GENERAL_PARSED_ENTITY @@ -95,14 +86,12 @@ : xmlpp
    -
    - - + + - diff --git a/docs/reference/html/namespacemembers_func.html b/docs/reference/html/namespacemembers_func.html index b5f55fb..b51e74a 100644 --- a/docs/reference/html/namespacemembers_func.html +++ b/docs/reference/html/namespacemembers_func.html @@ -2,39 +2,30 @@ + libxml++: Namespace Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
     
    • format_xml_error() @@ -68,14 +59,12 @@ : xmlpp
    -
    - - + + - diff --git a/docs/reference/html/namespacemembers_type.html b/docs/reference/html/namespacemembers_type.html index e6b1adf..d53ece8 100644 --- a/docs/reference/html/namespacemembers_type.html +++ b/docs/reference/html/namespacemembers_type.html @@ -2,39 +2,30 @@ + libxml++: Namespace Members - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
      -
    - - + + - diff --git a/docs/reference/html/namespaces.html b/docs/reference/html/namespaces.html index d0f833f..c9e5232 100644 --- a/docs/reference/html/namespaces.html +++ b/docs/reference/html/namespaces.html @@ -2,39 +2,30 @@ + libxml++: Namespace List - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Namespace List
    -
    +
    -
    Here is a list of all namespaces with brief descriptions:
    - +
    Here is a list of all namespaces with brief descriptions:
    +
    [detail level 123]
    xmlpp
    + + + + + + + + + + + + + + + + + + + +
    oNGio
    |\NDBus
    | oNAddress
    | \NErrorUtils
    oNGlib
    |oNAscii
    |oNContainer_Helpers
    |oNMarkup
    |oNThreads
    |\NUnicode
    oNstd
    |oNlocale
    |oNnegative_binomial_distribution
    |oNstudent_t_distribution
    |oNthread
    |oNtr2
    ||\Ndynamic_bitset
    |oNuniform_real_distribution
    |\Nweibull_distribution
    \Nxmlpp
    -
    - - + + + - diff --git a/docs/reference/html/namespacestd_1_1locale.html b/docs/reference/html/namespacestd_1_1locale.html new file mode 100644 index 0000000..3fc1622 --- /dev/null +++ b/docs/reference/html/namespacestd_1_1locale.html @@ -0,0 +1,61 @@ + + + + + +libxml++: std::locale Namespace Reference + + + + + + +
    +
    + + + + + + +
    +
    libxml++ +  2.35.4 +
    +
    +
    + + + + + +
    +
    +
    +
    std::locale Namespace Reference
    +
    +
    +
    + + + + diff --git a/docs/reference/html/namespacestd_1_1tr2.html b/docs/reference/html/namespacestd_1_1tr2.html new file mode 100644 index 0000000..96e6882 --- /dev/null +++ b/docs/reference/html/namespacestd_1_1tr2.html @@ -0,0 +1,69 @@ + + + + + +libxml++: std::tr2 Namespace Reference + + + + + + +
    +
    + + + + + + +
    +
    libxml++ +  2.35.4 +
    +
    +
    + + + + + +
    +
    + +
    +
    std::tr2 Namespace Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  dynamic_bitset
     
    +
    + + + + diff --git a/docs/reference/html/namespacexmlpp.html b/docs/reference/html/namespacexmlpp.html index 5ed6940..3e9506d 100644 --- a/docs/reference/html/namespacexmlpp.html +++ b/docs/reference/html/namespacexmlpp.html @@ -2,39 +2,30 @@ + libxml++: xmlpp Namespace Reference - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Classes | @@ -58,78 +49,119 @@ Functions
    xmlpp Namespace Reference
    -
    +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +

    Classes

    class  Attribute
     Represents an XML Node attribute. More...
    class  AttributeDeclaration
     Represents the default value of an attribute of an XML Element node. More...
    class  AttributeNode
     Represents an explicit attribute of an XML Element node. More...
    class  Document
     Represents an XML document in the DOM model. More...
    class  Dtd
     Represents XML DTDs. More...
    class  KeepBlanks
     This class set KeepBlanksDefault and IndentTreeOutput of libxmlpp and restore their initial value in its destructor. More...
    class  NonCopyable
     Herited by classes which cannot be copied. More...
    class  Schema
     Represents an XML Schema. More...
    class  exception
     Base class for all xmlpp exceptions. More...
    class  parse_error
     This exception will be thrown when the parser encounters an error in the XML document. More...
    class  validity_error
     This exception will be thrown when the parser encounters a validity error in the XML document. More...
    class  internal_error
    class  IStreamParserInputBuffer
    class  OutputBuffer
     Base class for xmlOutputBuffer wrapper. More...
    class  OStreamOutputBuffer
     An OutputBuffer implementation that send datas to a std::ostream. More...
    class  ParserInputBuffer
     Base class for xmlParserInputBuffer wrapper. More...
    class  CdataNode
     CData node. More...
    class  CommentNode
     Comment Node. More...
    class  ContentNode
     Content Node. More...
    class  Element
     Element nodes have attributes as well as child nodes. More...
    class  EntityDeclaration
     Entity declaration. More...
    class  EntityReference
     Entity references refer to previously declared entities. More...
    class  Node
     Represents XML Nodes. More...
    class  ProcessingInstructionNode
    class  TextNode
     Text Node. More...
    class  Parser
     XML parser. More...
    class  SaxParser
     SAX XML parser. More...
    class  DomParser
     DOM XML parser. More...
    class  TextReader
     A TextReader-style XML parser A reader that provides fast, non-cached, forward-only access to XML data, in the style of .Net's XmlTextReader class. More...
    class  DtdValidator
     XML DOM parser. More...
    class  SchemaValidator
     Schema Validator. More...
    class  Validator
     XML parser. More...

    +

    class  Attribute
     Represents an XML Node attribute. More...
     
    class  AttributeDeclaration
     Represents the default value of an attribute of an XML Element node. More...
     
    class  AttributeNode
     Represents an explicit attribute of an XML Element node. More...
     
    class  Document
     Represents an XML document in the DOM model. More...
     
    class  Dtd
     Represents XML DTDs. More...
     
    class  KeepBlanks
     This class set KeepBlanksDefault and IndentTreeOutput of libxmlpp and restore their initial value in its destructor. More...
     
    class  NonCopyable
     Herited by classes which cannot be copied. More...
     
    class  Schema
     Represents an XML Schema. More...
     
    class  exception
     Base class for all xmlpp exceptions. More...
     
    class  parse_error
     This exception will be thrown when the parser encounters an error in the XML document. More...
     
    class  validity_error
     This exception will be thrown when the parser encounters a validity error in the XML document. More...
     
    class  internal_error
     
    class  IStreamParserInputBuffer
     
    class  OutputBuffer
     Base class for xmlOutputBuffer wrapper. More...
     
    class  OStreamOutputBuffer
     An OutputBuffer implementation that send datas to a std::ostream. More...
     
    class  ParserInputBuffer
     Base class for xmlParserInputBuffer wrapper. More...
     
    class  CdataNode
     CData node. More...
     
    class  CommentNode
     Comment Node. More...
     
    class  ContentNode
     Content Node. More...
     
    class  Element
     Element nodes have attributes as well as child nodes. More...
     
    class  EntityDeclaration
     Entity declaration. More...
     
    class  EntityReference
     Entity references refer to previously declared entities. More...
     
    class  Node
     Represents XML Nodes. More...
     
    class  ProcessingInstructionNode
     
    class  TextNode
     Text Node. More...
     
    class  XIncludeEnd
     XIncludeEnd node. More...
     
    class  XIncludeStart
     XIncludeStart node. More...
     
    class  Parser
     XML parser. More...
     
    class  SaxParser
     SAX XML parser. More...
     
    class  DomParser
     DOM XML parser. More...
     
    class  TextReader
     A TextReader-style XML parser. More...
     
    class  DtdValidator
     XML DTD validator. More...
     
    class  SchemaValidator
     XML Schema Validator. More...
     
    class  Validator
     Base class for XML validators. More...
     
    + - - + +

    Typedefs

    typedef std::vector< Node* > NodeSet

    +

    typedef std::vector< Node* > NodeSet
     
    + -   XML_INTERNAL_PREDEFINED_ENTITY = 6
    } - +   XPATH_RESULT_STRING = 4
    } - - + +

    Enumerations

    enum  XmlEntityType {
    +
    enum  XmlEntityType {
      XML_INTERNAL_GENERAL_ENTITY = 1,
      XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
      XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
    @@ -138,7 +170,8 @@ Enumerations
    enum  XPathResultType {
    +
     
    enum  XPathResultType {
      XPATH_RESULT_UNDEFINED = 0,
      XPATH_RESULT_NODESET = 1,
      XPATH_RESULT_BOOLEAN = 2,
    @@ -146,16 +179,20 @@ Enumerations
     An XPath expression is evaluated to yield a result, which has one of the following four basic types: More...

    +

     An XPath expression is evaluated to yield a result, which has one of the following four basic types: More...
     
    + - - - - + + + + + +

    Functions

    Glib::ustring format_xml_error (const _xmlError* error=0)
     Format an _xmlError struct into a text string, suitable for printing.
    Glib::ustring format_xml_parser_error (const _xmlParserCtxt* parser_context)
     Format a parser error into a text string, suitable for printing.
    Glib::ustring format_xml_error (const _xmlError* error=0)
     Format an _xmlError struct into a text string, suitable for printing.
     
    Glib::ustring format_xml_parser_error (const _xmlParserCtxt* parser_context)
     Format a parser error into a text string, suitable for printing.
     
    -

    Typedef Documentation

    - +

    Typedef Documentation

    +
    @@ -163,13 +200,12 @@ Functions
    typedef std::vector<Node*> xmlpp::NodeSet
    -
    -
    +
    -

    Enumeration Type Documentation

    - +

    Enumeration Type Documentation

    +
    @@ -177,20 +213,19 @@ Functions
    enum xmlpp::XmlEntityType
    -
    -
    +
    Enumerator:
    - - - - - -
    XML_INTERNAL_GENERAL_ENTITY  +
    XML_INTERNAL_GENERAL_ENTITY 
    XML_EXTERNAL_GENERAL_PARSED_ENTITY  +
    XML_EXTERNAL_GENERAL_PARSED_ENTITY 
    XML_EXTERNAL_GENERAL_UNPARSED_ENTITY  +
    XML_EXTERNAL_GENERAL_UNPARSED_ENTITY 
    XML_INTERNAL_PARAMETER_ENTITY  +
    XML_INTERNAL_PARAMETER_ENTITY 
    XML_EXTERNAL_PARAMETER_ENTITY  +
    XML_EXTERNAL_PARAMETER_ENTITY 
    XML_INTERNAL_PREDEFINED_ENTITY  +
    XML_INTERNAL_PREDEFINED_ENTITY 
    @@ -198,7 +233,7 @@ Functions
    - +
    @@ -206,8 +241,7 @@ Functions
    enum xmlpp::XPathResultType
    -
    -
    +

    An XPath expression is evaluated to yield a result, which has one of the following four basic types:

      @@ -217,15 +251,15 @@ Functions
    • string
    Enumerator:
    - - - - -
    XPATH_RESULT_UNDEFINED  +
    XPATH_RESULT_UNDEFINED 
    XPATH_RESULT_NODESET  +
    XPATH_RESULT_NODESET 
    XPATH_RESULT_BOOLEAN  +
    XPATH_RESULT_BOOLEAN 
    XPATH_RESULT_NUMBER  +
    XPATH_RESULT_NUMBER 
    XPATH_RESULT_STRING  +
    XPATH_RESULT_STRING 
    @@ -233,8 +267,8 @@ Functions
    -

    Function Documentation

    - +

    Function Documentation

    +
    @@ -246,22 +280,21 @@ Functions
    -
    -
    +

    Format an _xmlError struct into a text string, suitable for printing.

    -
    Since libxml++ 2.36:
    -
    Parameters:
    +
    Since libxml++ 2.36:
    +
    Parameters
    errorPointer to an _xmlError struct or 0. If 0, the error returned by xmlGetLastError() is used.
    -
    Returns:
    A formatted text string. If the error struct does not contain an error (error->code == XML_ERR_OK), an empty string is returned.
    +
    Returns
    A formatted text string. If the error struct does not contain an error (error->code == XML_ERR_OK), an empty string is returned.
    - +
    @@ -273,29 +306,26 @@ Functions
    -
    -
    +

    Format a parser error into a text string, suitable for printing.

    -
    Since libxml++ 2.36:
    -
    Parameters:
    +
    Since libxml++ 2.36:
    +
    Parameters
    parser_contextPointer to an _xmlParserCtxt struct.
    -
    Returns:
    A formatted text string. If the parser context does not contain an error (parser_context->lastError.code == XML_ERR_OK), an empty string is returned.
    +
    Returns
    A formatted text string. If the parser context does not contain an error (parser_context->lastError.code == XML_ERR_OK), an empty string is returned.
    -
    - - + + - diff --git a/docs/reference/html/nav_f.png b/docs/reference/html/nav_f.png index 1b07a16207e67c95fe2ee17e7016e6d08ac7ac99..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 100644 GIT binary patch delta 124 zcmV-?0E7RZ0hs}iBz0g(L_t(|0qxyO4uBvGMbVbGTL*^tfkM%3YvRPhNE{fKaB|bU zE`pBpg6fW>8&Wn}AXZ5Qu@Xg)f;DQhglrV^nwx1!n5^FF=Snb)(Gk%vj{BRL9T9c- e@$=rlHgf|=7$DsN0QGqQ0000u1W`M6+rL23&uBa0+90uE%OD|+(2G{R zL&)v^AmWO}#(ZP3n7)~|7`7NQ=yTCV&_+h($07*qoM6N<$f|0vDeEFMGaQo;E4t|J$N1BX-KT4wgmvu@A6u&D20{R2$}&DVbwUM3!Wac4i{ Xv3!>HpqvZ$8Gyjk)z4*}Q$iB}sjeJQ delta 66 zcmYdFoS;pyTSQo;E4?nX`q10H6_y+#`jhHjhAEv}d?b4SFhXw`bg=6O+n|1%uR WXKDW<@M10l5O})!xvX_sd$oj(R;{eZG48+5s|MCC;002ovPDHLkV1lT^BSioJ diff --git a/docs/reference/html/pages.html b/docs/reference/html/pages.html index aa2bc62..191817e 100644 --- a/docs/reference/html/pages.html +++ b/docs/reference/html/pages.html @@ -2,39 +2,30 @@ + libxml++: Related Pages - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    Related Pages
    -
    +
    -
    Here is a list of all related documentation pages:
    -
    - - +
    Here is a list of all related documentation pages:
    + + - diff --git a/docs/reference/html/since_2_20.html b/docs/reference/html/since_2_20.html index 69e9af7..036a13a 100644 --- a/docs/reference/html/since_2_20.html +++ b/docs/reference/html/since_2_20.html @@ -2,39 +2,30 @@ + libxml++: New API in libxml++ 2.20 - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    New API in libxml++ 2.20
    -
    +
    Member xmlpp::Element::get_attribute_value (const Glib::ustring& name, const Glib::ustring& ns_prefix=Glib::ustring()) const
    -
    - - + + - diff --git a/docs/reference/html/since_2_24.html b/docs/reference/html/since_2_24.html index 2ab159c..c72a570 100644 --- a/docs/reference/html/since_2_24.html +++ b/docs/reference/html/since_2_24.html @@ -2,39 +2,30 @@ + libxml++: New API in libxml++ 2.24 - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    New API in libxml++ 2.24
    -
    +
    Member xmlpp::Element::add_child_text (xmlpp::Node* previous_sibling, const Glib::ustring& content=Glib::ustring())
    @@ -65,14 +56,12 @@
    Class xmlpp::SchemaValidator
    -
    - - + + - diff --git a/docs/reference/html/since_2_36.html b/docs/reference/html/since_2_36.html index 106c66a..f31637b 100644 --- a/docs/reference/html/since_2_36.html +++ b/docs/reference/html/since_2_36.html @@ -2,39 +2,30 @@ + libxml++: New API in libxml++ 2.36 - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + -
    +
    New API in libxml++ 2.36
    -
    +
    Class xmlpp::AttributeDeclaration
    @@ -56,45 +47,49 @@
    Member xmlpp::Document::add_processing_instruction (const Glib::ustring& name, const Glib::ustring& content)
    -
    Member xmlpp::Element::add_child_entity_reference (const Glib::ustring& name)
    +
    Member xmlpp::Document::process_xinclude (bool generate_xinclude_nodes=true)
    +
    +
    Member xmlpp::Element::add_child_entity_reference (const Glib::ustring& name)
    +
    +
    Member xmlpp::Element::add_child_processing_instruction (const Glib::ustring& name, const Glib::ustring& content)
    +
    +
    Class xmlpp::EntityDeclaration
    -
    Member xmlpp::Element::add_child_processing_instruction (const Glib::ustring& name, const Glib::ustring& content)
    +
    Member xmlpp::format_xml_error (const _xmlError* error=0)
    -
    Class xmlpp::EntityDeclaration
    +
    Member xmlpp::format_xml_parser_error (const _xmlParserCtxt* parser_context)
    -
    Member xmlpp::format_xml_error (const _xmlError* error=0)
    +
    Member xmlpp::Node::eval_to_boolean (const Glib::ustring& xpath, const PrefixNsMap& namespaces, XPathResultType* result_type=0) const
    -
    Member xmlpp::format_xml_parser_error (const _xmlParserCtxt* parser_context)
    +
    Member xmlpp::Node::eval_to_boolean (const Glib::ustring& xpath, XPathResultType* result_type=0) const
    -
    Member xmlpp::Node::eval_to_boolean (const Glib::ustring& xpath, XPathResultType* result_type=0) const
    +
    Member xmlpp::Node::eval_to_number (const Glib::ustring& xpath, const PrefixNsMap& namespaces, XPathResultType* result_type=0) const
    -
    Member xmlpp::Node::eval_to_boolean (const Glib::ustring& xpath, const PrefixNsMap& namespaces, XPathResultType* result_type=0) const
    +
    Member xmlpp::Node::eval_to_number (const Glib::ustring& xpath, XPathResultType* result_type=0) const
    -
    Member xmlpp::Node::eval_to_number (const Glib::ustring& xpath, XPathResultType* result_type=0) const
    +
    Member xmlpp::Node::eval_to_string (const Glib::ustring& xpath, const PrefixNsMap& namespaces, XPathResultType* result_type=0) const
    -
    Member xmlpp::Node::eval_to_number (const Glib::ustring& xpath, const PrefixNsMap& namespaces, XPathResultType* result_type=0) const
    +
    Member xmlpp::Node::eval_to_string (const Glib::ustring& xpath, XPathResultType* result_type=0) const
    -
    Member xmlpp::Node::eval_to_string (const Glib::ustring& xpath, const PrefixNsMap& namespaces, XPathResultType* result_type=0) const
    +
    Member xmlpp::Node::get_first_child (const Glib::ustring& name=Glib::ustring())
    -
    Member xmlpp::Node::eval_to_string (const Glib::ustring& xpath, XPathResultType* result_type=0) const
    +
    Member xmlpp::Node::get_first_child (const Glib::ustring& name=Glib::ustring()) const
    -
    Member xmlpp::Node::get_first_child (const Glib::ustring& name=Glib::ustring())
    +
    Member xmlpp::Parser::get_throw_messages () const
    -
    Member xmlpp::Node::get_first_child (const Glib::ustring& name=Glib::ustring()) const
    +
    Member xmlpp::Parser::set_throw_messages (bool val=true)
    -
    Member xmlpp::Parser::get_throw_messages () const
    +
    Class xmlpp::XIncludeEnd
    -
    Member xmlpp::Parser::set_throw_messages (bool val=true)
    +
    Class xmlpp::XIncludeStart
    -
    - - + + - diff --git a/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute-members.html b/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute-members.html index 64624bb..63dfedb 100644 --- a/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute-members.html +++ b/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute-members.html @@ -2,39 +2,30 @@ + libxml++: Member List - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + - + +
    xmlpp::SaxParser::Attribute Member List
    -
    +
    -This is the complete list of members for xmlpp::SaxParser::Attribute, including all inherited members. - - - -
    Attribute(Glib::ustring const& n, Glib::ustring const& v)xmlpp::SaxParser::Attribute [inline]
    namexmlpp::SaxParser::Attribute
    valuexmlpp::SaxParser::Attribute
    - +

    This is the complete list of members for xmlpp::SaxParser::Attribute, including all inherited members.

    + + + + +
    Attribute(Glib::ustring const& n, Glib::ustring const& v)xmlpp::SaxParser::Attributeinline
    namexmlpp::SaxParser::Attribute
    valuexmlpp::SaxParser::Attribute
    + - diff --git a/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute.html b/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute.html index 9d29d4b..b627d45 100644 --- a/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute.html +++ b/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute.html @@ -2,39 +2,30 @@ + libxml++: xmlpp::SaxParser::Attribute Struct Reference - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + - + +
    xmlpp::SaxParser::Attribute Struct Reference
    -
    +
    - +

    Simple structure used in the start_element callback, in which the attributes are a list of name/value pairs. More...

    #include <libxml++/parsers/saxparser.h>

    @@ -76,25 +65,30 @@ Collaboration diagram for xmlpp::SaxParser::Attribute:
    Collaboration graph
    - +
    [legend]
    - -

    List of all members.

    - - - + +

    +

    Public Member Functions

     Attribute (Glib::ustring const& n, Glib::ustring const& v)

    +

     Attribute (Glib::ustring const& n, Glib::ustring const& v)
     
    + - - + + + +

    Public Attributes

    Glib::ustring name
    Glib::ustring value
    Glib::ustring name
     
    Glib::ustring value
     
    -

    Detailed Description

    +

    Detailed Description

    Simple structure used in the start_element callback, in which the attributes are a list of name/value pairs.

    -

    Constructor & Destructor Documentation

    - +

    Constructor & Destructor Documentation

    +
    + + + + + +
    @@ -111,52 +105,52 @@ Public Attributes - +
    xmlpp::SaxParser::Attribute::Attribute
    ) [inline]
    - -
    +
    +inline
    +
    -

    Member Data Documentation

    - +

    Member Data Documentation

    +
    - +
    Glib::ustring xmlpp::SaxParser::Attribute::nameGlib::ustring xmlpp::SaxParser::Attribute::name
    -
    -
    +
    - +
    - +
    Glib::ustring xmlpp::SaxParser::Attribute::valueGlib::ustring xmlpp::SaxParser::Attribute::value
    -
    -
    +

    The documentation for this struct was generated from the following file:
    • parsers/saxparser.h
    - - - + + - diff --git a/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName-members.html b/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName-members.html index e057686..e01114d 100644 --- a/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName-members.html +++ b/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName-members.html @@ -2,39 +2,30 @@ + libxml++: Member List - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + - + +
    xmlpp::SaxParser::AttributeHasName Member List
    -
    +
    -This is the complete list of members for xmlpp::SaxParser::AttributeHasName, including all inherited members. - - - -
    AttributeHasName(Glib::ustring const& n)xmlpp::SaxParser::AttributeHasName [inline]
    namexmlpp::SaxParser::AttributeHasName
    operator()(Attribute const& attribute)xmlpp::SaxParser::AttributeHasName [inline]
    - +

    This is the complete list of members for xmlpp::SaxParser::AttributeHasName, including all inherited members.

    + + + + +
    AttributeHasName(Glib::ustring const& n)xmlpp::SaxParser::AttributeHasNameinline
    namexmlpp::SaxParser::AttributeHasName
    operator()(Attribute const& attribute)xmlpp::SaxParser::AttributeHasNameinline
    + - diff --git a/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName.html b/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName.html index 8427756..9f39bce 100644 --- a/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName.html +++ b/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName.html @@ -2,39 +2,30 @@ + libxml++: xmlpp::SaxParser::AttributeHasName Struct Reference - + + - - - -
    - - +
    - - - - -
    libxml++ -  2.35.3 +  2.35.4
    -
    - - + + - + +
    xmlpp::SaxParser::AttributeHasName Struct Reference
    -
    +
    - +

    This functor is a helper to find an attribute by name in an AttributeList using the standard algorithm std::find_if. More...

    #include <libxml++/parsers/saxparser.h>

    @@ -76,85 +65,98 @@ Collaboration diagram for xmlpp::SaxParser::AttributeHasName:
    Collaboration graph
    - +
    [legend]
    - -

    List of all members.

    - - - - + + + +

    +

    Public Member Functions

     AttributeHasName (Glib::ustring const& n)
    bool operator() (Attribute const& attribute)

    +

     AttributeHasName (Glib::ustring const& n)
     
    bool operator() (Attribute const& attribute)
     
    + - + +

    Public Attributes

    Glib::ustring const& name
    Glib::ustring const& name
     
    -

    Detailed Description

    +

    Detailed Description

    This functor is a helper to find an attribute by name in an AttributeList using the standard algorithm std::find_if.

    Example:
    Glib::ustring name = "foo";
    AttributeList::const_iterator attribute = std::find_if(attributes.begin(), attributes.end(), AttributeHasName(name));

    -

    Constructor & Destructor Documentation

    - +

    Constructor & Destructor Documentation

    +
    + + + + + +
    - +
    xmlpp::SaxParser::AttributeHasName::AttributeHasName ( Glib::ustring const &  n) [inline]
    - -
    +
    +inline
    +
    -

    Member Function Documentation

    - +

    Member Function Documentation

    +
    + + + + + +
    - +
    bool xmlpp::SaxParser::AttributeHasName::operator() ( Attribute const&  attribute) [inline]
    - -
    +
    +inline
    +
    -

    Member Data Documentation

    - +

    Member Data Documentation

    +
    - +
    Glib::ustring const& xmlpp::SaxParser::AttributeHasName::nameGlib::ustring const& xmlpp::SaxParser::AttributeHasName::name
    -
    -
    +

    The documentation for this struct was generated from the following file:
    • parsers/saxparser.h
    - - - + + - diff --git a/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName__coll__graph.png b/docs/reference/html/structxmlpp_1_1SaxParser_1_1AttributeHasName__coll__graph.png index 8394bd628f270f58ea2a1a4faca1c0037abe7f33..d0f660450e26e0bf4ffe530dbc321aff7de6f9d4 100644 GIT binary patch literal 4327 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 literal 4555 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 H0semgP>2)U diff --git a/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute__coll__graph.png b/docs/reference/html/structxmlpp_1_1SaxParser_1_1Attribute__coll__graph.png index af5ed0f41b5ae13def771245ade9d2196cb49eb4..21f0f242e36c9da99327313773880d8672e646d3 100644 GIT binary patch literal 4230 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 d(8GB=}>2MB}C|vJ_zx`X6j2Ia2@t literal 4639 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 literal 0 HcmV?d00001 diff --git a/docs/reference/html/sync_on.png b/docs/reference/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/reference/html/tab_a.png b/docs/reference/html/tab_a.png index 2d99ef23fed78c7683f0b5aa803d937060d288c4..3b725c41c5a527a3a3e40097077d0e206a681247 100644 GIT binary patch delta 113 zcmV-%0FM8R0geHXBx+SjL_t(|0qvbj3V<*WLnm*fD2j+%#l7Gq+<5;Z*{QAP2nqR} z!S?f}A6KSjBMmcj2}v0s95XABy!b`qeq0Yk9=#tquiN10l6OtFzxMxqe_8ck>OlfD TS)Sv400000NkvXXu0mjf*h4XO delta 111 zcmV-#0FeKV0gM5VBxqAfL_t(|0qvc;34lNp1b64jp`3`AD&~SsnAm?w2Jg;BhW$(p zI~sYDvSRWp+$+LO5&al3JOi2`pmhuTb?;|lyBT%TdJ_>` w%g$7lQj_e!n4+jgvI}=i~1Nl00000Ne4wvM6N<$f(fWYnE(I) delta 150 zcmV;H0BQfK0kQ#*B!78HL_t(|0qxz}4ZUdP_Df=vx!f>I?0(t zKHnd0dsF*K?I*b&VNqV~72jSdG9$8vRNwkSVmXck;)J`Q|y00000NkvXXu0mjf D6ck2n delta 164 zcmV;V09*gD0l)!}B!7oVL_t(|0qxz}34&l4fZ>n-rMielilPI8Xqs6b(hUF1GLI8B zKx4E>cg^waA@9$ZOEHk@UWo{)9!PXglJ~@UN0_xl*Nz}-Ii`&g5f0}XKWXsd8aI03 zgcWvBVV|Cu{^QT^N{oHU#wpmkcUHTC^{!xHX_nTFrKOphS{;dqnv77h>G%f#Ln7el SP(6SE0000B!7QNL_t(|0qxy^34%ZXK+&T=Q4$n|q#~N4C8kM{mx^YVHd`CC zNWLn{S^f~#UuRg?v)<^0000< KMNUMnLSTXuTSx)` delta 161 zcmV;S0AByN0lfi`B!7fSL_t(|0qx!E34%}nK;cVgA|)siNkx32C8kNCHx(ag+H7sm zA`R1z8sytUyxt%3+ml=_WaUp<%%sIaa-E4UkH3j1pNP&QVK(BQ27>gCn+!N{j~(~e z#}4bzVMZ + + + + + @@ -14,9 +19,7 @@ - - - + @@ -45,12 +48,15 @@ + + + @@ -75,17 +81,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -102,13 +240,10 @@ + - - - - @@ -147,46 +282,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -207,7 +498,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -215,11 +545,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -260,12 +673,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -298,6 +885,7 @@ + @@ -307,6 +895,14 @@ + + + + + + + + @@ -321,6 +917,22 @@ + + + + + + + + + + + + + + + + @@ -337,8 +949,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430,7 +1067,17 @@ + + + + + + + + + + @@ -446,9 +1093,18 @@ + + + + + + + + + diff --git a/docs/reference/libxml++-2.6.tag b/docs/reference/libxml++-2.6.tag index 5aa8985..b14d674 100644 --- a/docs/reference/libxml++-2.6.tag +++ b/docs/reference/libxml++-2.6.tag @@ -1,13 +1,5 @@ - + - - index - libxml++ Reference Manual - index - features - basics - description - sigc::trackable classsigc_1_1trackable.html @@ -16,6 +8,18 @@ std::exception classstd_1_1exception.html + + GValue + classGValue.html + + + std::locale + namespacestd_1_1locale.html + + + std::tr2 + namespacestd_1_1tr2.html + xmlpp namespacexmlpp.html @@ -44,6 +48,8 @@ xmlpp::Node xmlpp::ProcessingInstructionNode xmlpp::TextNode + xmlpp::XIncludeEnd + xmlpp::XIncludeStart xmlpp::Parser xmlpp::SaxParser xmlpp::DomParser @@ -204,986 +210,5035 @@ a9e6ae08227e9a81dcd18ef5cbf820dc0 () const - - - xmlpp::AttributeDeclaration - classxmlpp_1_1AttributeDeclaration.html - xmlpp::Attribute - AttributeDeclaration - classxmlpp_1_1AttributeDeclaration.html - a6d7dd6ccbe4ad325ccb053a252b10c9c + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 (_xmlNode *node) virtual - ~AttributeDeclaration - classxmlpp_1_1AttributeDeclaration.html - a1e427ebd8c75f5e15b6b7939e55cc30c + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 () Glib::ustring - get_value - classxmlpp_1_1AttributeDeclaration.html - aaf0072ae8ed02761af114f4afe885192 + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a () const - _xmlAttribute * - cobj - classxmlpp_1_1AttributeDeclaration.html - ab1bc51b1d5122eb25f1fd2cb4ceb3065 - () + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) - const _xmlAttribute * - cobj - classxmlpp_1_1AttributeDeclaration.html - a4ba1602b6a48b849c2cf7a0b3414f5ef + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c () const - - - xmlpp::AttributeNode - classxmlpp_1_1AttributeNode.html - xmlpp::Attribute - - AttributeNode - classxmlpp_1_1AttributeNode.html - a0af899521d66b09398deb5fa7fd26035 - (_xmlNode *node) + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const - - virtual - ~AttributeNode - classxmlpp_1_1AttributeNode.html - a6321127fb72b11784fd6a16f17d678bd - () + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const - - - xmlpp::Document - classxmlpp_1_1Document.html - xmlpp::NonCopyable - xmlpp::Document::Init - - Document - classxmlpp_1_1Document.html - a8c5c6692e195dcf3aee88dc492f9efed - (const Glib::ustring &version="1.0") + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const - - virtual - ~Document - classxmlpp_1_1Document.html - a77c35c594fc9995970ae9c4f9d77496b + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 () - Glib::ustring - get_encoding - classxmlpp_1_1Document.html - a9527fadaffff6138b0b35050370a0e3d + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 () const - Dtd * - get_internal_subset - classxmlpp_1_1Document.html - ae27fb04b1760bcaa58f7e329c98fae47 + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac () const - void - set_internal_subset - classxmlpp_1_1Document.html - a714dc6c330ae6e00fb285606b8b849a4 - (const Glib::ustring &name, const Glib::ustring &external_id, const Glib::ustring &system_id) + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () - Element * - get_root_node - classxmlpp_1_1Document.html - a6f4ebd0db42eeca823517dd1bd56d009 - () const + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const - Element * - create_root_node - classxmlpp_1_1Document.html - a8552403b511567241856148a6040be23 - (const Glib::ustring &name, const Glib::ustring &ns_uri=Glib::ustring(), const Glib::ustring &ns_prefix=Glib::ustring()) + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const Element * - create_root_node_by_import - classxmlpp_1_1Document.html - a8085d5e40537e2a674063cbddb39f0b8 - (const Node *node, bool recursive=true) + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - CommentNode * - add_comment - classxmlpp_1_1Document.html - a2d5ebd0f41215d54b9c96dd4ddb49ede - (const Glib::ustring &content) + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - ProcessingInstructionNode * - add_processing_instruction - classxmlpp_1_1Document.html - aeaa438c9764e7d41f3d2f63ace6dab81 - (const Glib::ustring &name, const Glib::ustring &content) + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) void - write_to_file - classxmlpp_1_1Document.html - adbbcae29bde29501f3dfff71f2e81da2 - (const Glib::ustring &filename, const Glib::ustring &encoding=Glib::ustring()) + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) - void - write_to_file_formatted - classxmlpp_1_1Document.html - ae54075502d81e9d8448e6820bc16eb34 - (const Glib::ustring &filename, const Glib::ustring &encoding=Glib::ustring()) + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) Glib::ustring - write_to_string - classxmlpp_1_1Document.html - ab63344d932c309062769fd98585e9bc1 - (const Glib::ustring &encoding=Glib::ustring()) + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const - Glib::ustring - write_to_string_formatted - classxmlpp_1_1Document.html - ac1246acf8c7b51855e9eb12eecefa294 - (const Glib::ustring &encoding=Glib::ustring()) + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const - void - write_to_stream - classxmlpp_1_1Document.html - a55e593694bdcf67f667f1dbe52cd0794 - (std::ostream &output, const Glib::ustring &encoding=Glib::ustring()) + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const - void - write_to_stream_formatted - classxmlpp_1_1Document.html - add90b2d2d0a837df3f3daec6bccaad2c - (std::ostream &output, const Glib::ustring &encoding=Glib::ustring()) + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const - - virtual void - set_entity_declaration - classxmlpp_1_1Document.html - ad56a99bd883672ba5eac51a545fada40 - (const Glib::ustring &name, XmlEntityType type, const Glib::ustring &publicId, const Glib::ustring &systemId, const Glib::ustring &content) + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const - _xmlDoc * + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * cobj - classxmlpp_1_1Document.html - a1ebb73b9ac51ca929bfd38f359964a59 + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c () - const _xmlDoc * + const _xmlNode * cobj - classxmlpp_1_1Document.html - a4cbdce4b14db6b3a393346b5e3034886 + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 () const - - - Document - classxmlpp_1_1Document.html - ac18dbf6e4c404dac08a0784c553c5e88 - (_xmlDoc *doc) + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) - _xmlEntity * - get_entity - classxmlpp_1_1Document.html - a6772b76ee685c3755f8a19ce19f48f35 - (const Glib::ustring &name) + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) - xmlpp::Document::Init - classxmlpp_1_1Document_1_1Init.html + xmlpp::AttributeDeclaration + classxmlpp_1_1AttributeDeclaration.html + xmlpp::Attribute - Init - classxmlpp_1_1Document_1_1Init.html - a2022c663a9c3b75aa63f6cb1964e00e1 - () + AttributeDeclaration + classxmlpp_1_1AttributeDeclaration.html + a6d7dd6ccbe4ad325ccb053a252b10c9c + (_xmlNode *node) virtual - ~Init - classxmlpp_1_1Document_1_1Init.html - a7b1681b28ce867c2c2713ef3964ce00b + ~AttributeDeclaration + classxmlpp_1_1AttributeDeclaration.html + a1e427ebd8c75f5e15b6b7939e55cc30c () - - - xmlpp::Dtd - classxmlpp_1_1Dtd.html - - Dtd - classxmlpp_1_1Dtd.html - a654e86d880ec1e2f4eaa043b580083bc - (_xmlDtd *dtd) + Glib::ustring + get_value + classxmlpp_1_1AttributeDeclaration.html + aaf0072ae8ed02761af114f4afe885192 + () const + + + _xmlAttribute * + cobj + classxmlpp_1_1AttributeDeclaration.html + ab1bc51b1d5122eb25f1fd2cb4ceb3065 + () + + + const _xmlAttribute * + cobj + classxmlpp_1_1AttributeDeclaration.html + a4ba1602b6a48b849c2cf7a0b3414f5ef + () const - ~Dtd - classxmlpp_1_1Dtd.html - a2d161935b1c13bab000b2279f60c696b + Attribute + classxmlpp_1_1Attribute.html + a1aa5294ec06fa7d5c1198e2c47d5838c + (_xmlNode *node) + + + virtual + ~Attribute + classxmlpp_1_1Attribute.html + af44eddff10b76c29d48cb98926b4c367 () Glib::ustring get_name - classxmlpp_1_1Dtd.html - a972abba9bcf1f84ceec40b282332db29 + classxmlpp_1_1Attribute.html + a553e7a694039b23150c27bfc05af2d60 () const Glib::ustring - get_external_id - classxmlpp_1_1Dtd.html - afedd938e1bf67907ad8ddbfac74ac6e5 + get_value + classxmlpp_1_1Attribute.html + ac871c3356cabd34e849968ad9d79e5fd () const - Glib::ustring - get_system_id - classxmlpp_1_1Dtd.html - ae8de041e1374791094d7c5f06a7b86aa - () const + void + set_value + classxmlpp_1_1Attribute.html + a24dfc8f17dad4ff629241af54d12ba78 + (const Glib::ustring &value) - _xmlDtd * + _xmlAttr * cobj - classxmlpp_1_1Dtd.html - ac11f222663c0732d789a7d28353fbf96 + classxmlpp_1_1Attribute.html + a1bdce49b8e5f118373732b4a3e14b842 () - const _xmlDtd * + const _xmlAttr * cobj - classxmlpp_1_1Dtd.html - af01e0449f41509e1e5a32ee13d3b27a3 + classxmlpp_1_1Attribute.html + a9e6ae08227e9a81dcd18ef5cbf820dc0 () const - - - xmlpp::KeepBlanks - classxmlpp_1_1KeepBlanks.html - - - KeepBlanks - classxmlpp_1_1KeepBlanks.html - a516fa3293bbf39fc3942dee06fec3385 - (bool value) - - ~KeepBlanks - classxmlpp_1_1KeepBlanks.html - abccd950634d0047be5d80486cd0824ad - () - - - static const bool - Default - classxmlpp_1_1KeepBlanks.html - a71753ddbdcfb79fdead46b0123bc22dd - - - - - xmlpp::NonCopyable - classxmlpp_1_1NonCopyable.html - - - NonCopyable - classxmlpp_1_1NonCopyable.html - a77c785ff1149642caa3058f49223f112 - () + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) - + virtual - ~NonCopyable - classxmlpp_1_1NonCopyable.html - a14e2e0391beb4b8f20f5d51e8a253d63 + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 () - - - xmlpp::Schema - classxmlpp_1_1Schema.html - xmlpp::NonCopyable - - - Schema - classxmlpp_1_1Schema.html - a772d929c2cce3943a1d605ff2069cc68 - (_xmlSchema *schema) - - - Schema - classxmlpp_1_1Schema.html - aedaae0872aacd4ba046c6e7804e4d52a - (Document *document=0, bool embed=false) + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const - - ~Schema - classxmlpp_1_1Schema.html - acd93d7286aabea897cf76420a33e0ef2 - () - - - virtual void - set_document - classxmlpp_1_1Schema.html - a2685225a63de28093f670f0a65020051 - (Document *document=0, bool embed=false) + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) - Glib::ustring - get_name - classxmlpp_1_1Schema.html - a1136d4a1c052f450e1d2153234e1ca31 - () const + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) Glib::ustring - get_target_namespace - classxmlpp_1_1Schema.html - a2fd2cffa8010166516c25d957b2fbe84 + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c () const Glib::ustring - get_version - classxmlpp_1_1Schema.html - a948b90685ae8f394be195effac10f502 + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c () const - Document * - get_document - classxmlpp_1_1Schema.html - a1dea312fc3284d60de36bd099399e8bb - () + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const - const Document * - get_document - classxmlpp_1_1Schema.html - ad8504ecb8acc821fcd3113d6ccc4bdb4 + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b () const - _xmlSchema * - cobj - classxmlpp_1_1Schema.html - ad200dae863d27fcdeccdba9653df8933 + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 () - const _xmlSchema * - cobj - classxmlpp_1_1Schema.html - ad2239be7d5ab5277076a07053687d903 + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 () const - - virtual void - release_underlying - classxmlpp_1_1Schema.html - a95292e2dad9af680c7741df4194411e6 + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 () - - - xmlpp::exception - classxmlpp_1_1exception.html - std::exception - - exception - classxmlpp_1_1exception.html - aec1bbf4a42dd2ed44d269a3c31c14124 - (const Glib::ustring &message) + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const - - virtual - ~exception - classxmlpp_1_1exception.html - a4d0c3298c1bc27b4e2fdc6152330e760 + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 () - - virtual const char * - what - classxmlpp_1_1exception.html - a0427039fbb35dc2156fcff024880b081 - () const - - - virtual void - Raise - classxmlpp_1_1exception.html - aaa94eb2f3816552fb7ec9014b6c79807 - () const + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const - - virtual exception - Clone - classxmlpp_1_1exception.html - afcbd398f555b5c18d130ae65db015a24 - () const + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) - - - xmlpp::parse_error - classxmlpp_1_1parse__error.html - xmlpp::exception - - parse_error - classxmlpp_1_1parse__error.html - a3b393340cea80548da8470006f1bcb9b - (const Glib::ustring &message) + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) - - virtual - ~parse_error - classxmlpp_1_1parse__error.html - ae516bd60f15f50103f152e386f70ff75 - () + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const - - virtual void - Raise - classxmlpp_1_1parse__error.html - a12f18b563758bd0bdc73ac6019f2e2f6 - () const + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - - virtual exception * - Clone - classxmlpp_1_1parse__error.html - adac842898e676e64e8c7ca3174f7db2f - () const + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - - - xmlpp::validity_error - classxmlpp_1_1validity__error.html - xmlpp::parse_error - - validity_error - classxmlpp_1_1validity__error.html - a096d4cb8a9ec64d5d0203439400fd7fd - (const Glib::ustring &message) + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - - virtual - ~validity_error - classxmlpp_1_1validity__error.html - ab5350778036c60aa71d0b36759e9cee9 - () + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) - - virtual void - Raise - classxmlpp_1_1validity__error.html - ac97e96c3d23357d5a640544aa7aa0c46 - () const + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) - - virtual exception * - Clone - classxmlpp_1_1validity__error.html - aa38252e9dff7e22bfdf94365c61b8c21 + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 () const - - - xmlpp::internal_error - classxmlpp_1_1internal__error.html - xmlpp::exception - - internal_error - classxmlpp_1_1internal__error.html - ac8c22422363ebe809517d4813903ef43 - (const Glib::ustring &message) + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const - - virtual - ~internal_error - classxmlpp_1_1internal__error.html - a83d7e81fd0394ae91fa3f37a3552461c + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c () - - virtual void - Raise - classxmlpp_1_1internal__error.html - a15044cea719fb2bbb482efc597a284f0 + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 () const - - virtual exception - Clone - classxmlpp_1_1internal__error.html - aaec2e497c76cf6418ecff03e8f76510b - () const + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) - xmlpp::IStreamParserInputBuffer - classxmlpp_1_1IStreamParserInputBuffer.html - xmlpp::ParserInputBuffer + xmlpp::AttributeNode + classxmlpp_1_1AttributeNode.html + xmlpp::Attribute - IStreamParserInputBuffer - classxmlpp_1_1IStreamParserInputBuffer.html - aba70d93277d719a332b1a75fc8cf221c - (std::istream &input) + AttributeNode + classxmlpp_1_1AttributeNode.html + a0af899521d66b09398deb5fa7fd26035 + (_xmlNode *node) virtual - ~IStreamParserInputBuffer - classxmlpp_1_1IStreamParserInputBuffer.html - a4ae4d9a34cb47a73590dff158206ab83 + ~AttributeNode + classxmlpp_1_1AttributeNode.html + a6321127fb72b11784fd6a16f17d678bd () - - - xmlpp::OutputBuffer - classxmlpp_1_1OutputBuffer.html - xmlpp::NonCopyable - OutputBuffer - classxmlpp_1_1OutputBuffer.html - a2e00dabdec3e40b837d2b9ecb1d9fbcd - (const Glib::ustring &encoding=Glib::ustring()) + Attribute + classxmlpp_1_1Attribute.html + a1aa5294ec06fa7d5c1198e2c47d5838c + (_xmlNode *node) virtual - ~OutputBuffer - classxmlpp_1_1OutputBuffer.html - a02ddd3e8891f92d6518252f6326ed2a9 + ~Attribute + classxmlpp_1_1Attribute.html + af44eddff10b76c29d48cb98926b4c367 () - _xmlOutputBuffer * + Glib::ustring + get_name + classxmlpp_1_1Attribute.html + a553e7a694039b23150c27bfc05af2d60 + () const + + + Glib::ustring + get_value + classxmlpp_1_1Attribute.html + ac871c3356cabd34e849968ad9d79e5fd + () const + + + void + set_value + classxmlpp_1_1Attribute.html + a24dfc8f17dad4ff629241af54d12ba78 + (const Glib::ustring &value) + + + _xmlAttr * cobj - classxmlpp_1_1OutputBuffer.html - a2de0e355037956329d70b990d7bc79f5 + classxmlpp_1_1Attribute.html + a1bdce49b8e5f118373732b4a3e14b842 () - const _xmlOutputBuffer * + const _xmlAttr * cobj - classxmlpp_1_1OutputBuffer.html - a6dbd7fc5ab8af66e751e0209aa3a0346 + classxmlpp_1_1Attribute.html + a9e6ae08227e9a81dcd18ef5cbf820dc0 () const - - - xmlpp::OStreamOutputBuffer - classxmlpp_1_1OStreamOutputBuffer.html - xmlpp::OutputBuffer - OStreamOutputBuffer - classxmlpp_1_1OStreamOutputBuffer.html - a94a071df974d7fb7065f11c63d707604 - (std::ostream &output, const Glib::ustring &encoding=Glib::ustring()) + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) virtual - ~OStreamOutputBuffer - classxmlpp_1_1OStreamOutputBuffer.html - af3bce7e0789eae3605ecd72103cf4a96 + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 () - - - xmlpp::ParserInputBuffer - classxmlpp_1_1ParserInputBuffer.html - xmlpp::NonCopyable - - ParserInputBuffer - classxmlpp_1_1ParserInputBuffer.html - a546358e9f85fd99b4ac4e1a2b1844ce5 - () + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::Document + classxmlpp_1_1Document.html + xmlpp::NonCopyable + + + Document + classxmlpp_1_1Document.html + a8c5c6692e195dcf3aee88dc492f9efed + (const Glib::ustring &version="1.0") + + + + Document + classxmlpp_1_1Document.html + ac18dbf6e4c404dac08a0784c553c5e88 + (_xmlDoc *doc) + + + virtual + ~Document + classxmlpp_1_1Document.html + a77c35c594fc9995970ae9c4f9d77496b + () + + + Glib::ustring + get_encoding + classxmlpp_1_1Document.html + a9527fadaffff6138b0b35050370a0e3d + () const + + + Dtd * + get_internal_subset + classxmlpp_1_1Document.html + ae27fb04b1760bcaa58f7e329c98fae47 + () const + + + void + set_internal_subset + classxmlpp_1_1Document.html + a714dc6c330ae6e00fb285606b8b849a4 + (const Glib::ustring &name, const Glib::ustring &external_id, const Glib::ustring &system_id) + + + Element * + get_root_node + classxmlpp_1_1Document.html + a6f4ebd0db42eeca823517dd1bd56d009 + () const + + + Element * + create_root_node + classxmlpp_1_1Document.html + a8552403b511567241856148a6040be23 + (const Glib::ustring &name, const Glib::ustring &ns_uri=Glib::ustring(), const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + create_root_node_by_import + classxmlpp_1_1Document.html + a8085d5e40537e2a674063cbddb39f0b8 + (const Node *node, bool recursive=true) + + + CommentNode * + add_comment + classxmlpp_1_1Document.html + a2d5ebd0f41215d54b9c96dd4ddb49ede + (const Glib::ustring &content) + + + ProcessingInstructionNode * + add_processing_instruction + classxmlpp_1_1Document.html + aeaa438c9764e7d41f3d2f63ace6dab81 + (const Glib::ustring &name, const Glib::ustring &content) + + + void + write_to_file + classxmlpp_1_1Document.html + adbbcae29bde29501f3dfff71f2e81da2 + (const Glib::ustring &filename, const Glib::ustring &encoding=Glib::ustring()) + + + void + write_to_file_formatted + classxmlpp_1_1Document.html + ae54075502d81e9d8448e6820bc16eb34 + (const Glib::ustring &filename, const Glib::ustring &encoding=Glib::ustring()) + + + Glib::ustring + write_to_string + classxmlpp_1_1Document.html + ab63344d932c309062769fd98585e9bc1 + (const Glib::ustring &encoding=Glib::ustring()) + + + Glib::ustring + write_to_string_formatted + classxmlpp_1_1Document.html + ac1246acf8c7b51855e9eb12eecefa294 + (const Glib::ustring &encoding=Glib::ustring()) + + + void + write_to_stream + classxmlpp_1_1Document.html + a55e593694bdcf67f667f1dbe52cd0794 + (std::ostream &output, const Glib::ustring &encoding=Glib::ustring()) + + + void + write_to_stream_formatted + classxmlpp_1_1Document.html + add90b2d2d0a837df3f3daec6bccaad2c + (std::ostream &output, const Glib::ustring &encoding=Glib::ustring()) + + + virtual void + set_entity_declaration + classxmlpp_1_1Document.html + ad56a99bd883672ba5eac51a545fada40 + (const Glib::ustring &name, XmlEntityType type, const Glib::ustring &publicId, const Glib::ustring &systemId, const Glib::ustring &content) + + + int + process_xinclude + classxmlpp_1_1Document.html + a5fb6c31ae2563c1c33ad3d4192daafe1 + (bool generate_xinclude_nodes=true) + + + _xmlDoc * + cobj + classxmlpp_1_1Document.html + a1ebb73b9ac51ca929bfd38f359964a59 + () + + + const _xmlDoc * + cobj + classxmlpp_1_1Document.html + a4cbdce4b14db6b3a393346b5e3034886 + () const + + + _xmlEntity * + get_entity + classxmlpp_1_1Document.html + a6772b76ee685c3755f8a19ce19f48f35 + (const Glib::ustring &name) + + + + xmlpp::Dtd + classxmlpp_1_1Dtd.html + + + Dtd + classxmlpp_1_1Dtd.html + a654e86d880ec1e2f4eaa043b580083bc + (_xmlDtd *dtd) + + + + ~Dtd + classxmlpp_1_1Dtd.html + a2d161935b1c13bab000b2279f60c696b + () + + + Glib::ustring + get_name + classxmlpp_1_1Dtd.html + a972abba9bcf1f84ceec40b282332db29 + () const + + + Glib::ustring + get_external_id + classxmlpp_1_1Dtd.html + afedd938e1bf67907ad8ddbfac74ac6e5 + () const + + + Glib::ustring + get_system_id + classxmlpp_1_1Dtd.html + ae8de041e1374791094d7c5f06a7b86aa + () const + + + _xmlDtd * + cobj + classxmlpp_1_1Dtd.html + ac11f222663c0732d789a7d28353fbf96 + () + + + const _xmlDtd * + cobj + classxmlpp_1_1Dtd.html + af01e0449f41509e1e5a32ee13d3b27a3 + () const + + + + xmlpp::KeepBlanks + classxmlpp_1_1KeepBlanks.html + + + KeepBlanks + classxmlpp_1_1KeepBlanks.html + a516fa3293bbf39fc3942dee06fec3385 + (bool value) + + + + ~KeepBlanks + classxmlpp_1_1KeepBlanks.html + abccd950634d0047be5d80486cd0824ad + () + + + static const bool + Default + classxmlpp_1_1KeepBlanks.html + a71753ddbdcfb79fdead46b0123bc22dd + + + + + xmlpp::NonCopyable + classxmlpp_1_1NonCopyable.html + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + + xmlpp::Schema + classxmlpp_1_1Schema.html + xmlpp::NonCopyable + + + Schema + classxmlpp_1_1Schema.html + a772d929c2cce3943a1d605ff2069cc68 + (_xmlSchema *schema) + + + + Schema + classxmlpp_1_1Schema.html + aedaae0872aacd4ba046c6e7804e4d52a + (Document *document=0, bool embed=false) + + + + ~Schema + classxmlpp_1_1Schema.html + acd93d7286aabea897cf76420a33e0ef2 + () + + + virtual void + set_document + classxmlpp_1_1Schema.html + a2685225a63de28093f670f0a65020051 + (Document *document=0, bool embed=false) + + + Glib::ustring + get_name + classxmlpp_1_1Schema.html + a1136d4a1c052f450e1d2153234e1ca31 + () const + + + Glib::ustring + get_target_namespace + classxmlpp_1_1Schema.html + a2fd2cffa8010166516c25d957b2fbe84 + () const + + + Glib::ustring + get_version + classxmlpp_1_1Schema.html + a948b90685ae8f394be195effac10f502 + () const + + + Document * + get_document + classxmlpp_1_1Schema.html + a1dea312fc3284d60de36bd099399e8bb + () + + + const Document * + get_document + classxmlpp_1_1Schema.html + ad8504ecb8acc821fcd3113d6ccc4bdb4 + () const + + + _xmlSchema * + cobj + classxmlpp_1_1Schema.html + ad200dae863d27fcdeccdba9653df8933 + () + + + const _xmlSchema * + cobj + classxmlpp_1_1Schema.html + ad2239be7d5ab5277076a07053687d903 + () const + + + virtual void + release_underlying + classxmlpp_1_1Schema.html + a95292e2dad9af680c7741df4194411e6 + () + + + + xmlpp::exception + classxmlpp_1_1exception.html + std::exception + + + exception + classxmlpp_1_1exception.html + aec1bbf4a42dd2ed44d269a3c31c14124 + (const Glib::ustring &message) + + + virtual + ~exception + classxmlpp_1_1exception.html + a4d0c3298c1bc27b4e2fdc6152330e760 + () + + + virtual const char * + what + classxmlpp_1_1exception.html + a0427039fbb35dc2156fcff024880b081 + () const + + + virtual void + Raise + classxmlpp_1_1exception.html + aaa94eb2f3816552fb7ec9014b6c79807 + () const + + + virtual exception + Clone + classxmlpp_1_1exception.html + afcbd398f555b5c18d130ae65db015a24 + () const + + + + xmlpp::parse_error + classxmlpp_1_1parse__error.html + xmlpp::exception + + + parse_error + classxmlpp_1_1parse__error.html + a3b393340cea80548da8470006f1bcb9b + (const Glib::ustring &message) + + + virtual + ~parse_error + classxmlpp_1_1parse__error.html + ae516bd60f15f50103f152e386f70ff75 + () + + + virtual void + Raise + classxmlpp_1_1parse__error.html + a12f18b563758bd0bdc73ac6019f2e2f6 + () const + + + virtual exception * + Clone + classxmlpp_1_1parse__error.html + adac842898e676e64e8c7ca3174f7db2f + () const + + + + exception + classxmlpp_1_1exception.html + aec1bbf4a42dd2ed44d269a3c31c14124 + (const Glib::ustring &message) + + + virtual + ~exception + classxmlpp_1_1exception.html + a4d0c3298c1bc27b4e2fdc6152330e760 + () + + + virtual const char * + what + classxmlpp_1_1exception.html + a0427039fbb35dc2156fcff024880b081 + () const + + + + xmlpp::validity_error + classxmlpp_1_1validity__error.html + xmlpp::parse_error + + + validity_error + classxmlpp_1_1validity__error.html + a096d4cb8a9ec64d5d0203439400fd7fd + (const Glib::ustring &message) + + + virtual + ~validity_error + classxmlpp_1_1validity__error.html + ab5350778036c60aa71d0b36759e9cee9 + () + + + virtual void + Raise + classxmlpp_1_1validity__error.html + ac97e96c3d23357d5a640544aa7aa0c46 + () const + + + virtual exception * + Clone + classxmlpp_1_1validity__error.html + aa38252e9dff7e22bfdf94365c61b8c21 + () const + + + + parse_error + classxmlpp_1_1parse__error.html + a3b393340cea80548da8470006f1bcb9b + (const Glib::ustring &message) + + + virtual + ~parse_error + classxmlpp_1_1parse__error.html + ae516bd60f15f50103f152e386f70ff75 + () + + + + exception + classxmlpp_1_1exception.html + aec1bbf4a42dd2ed44d269a3c31c14124 + (const Glib::ustring &message) + + + virtual + ~exception + classxmlpp_1_1exception.html + a4d0c3298c1bc27b4e2fdc6152330e760 + () + + + virtual const char * + what + classxmlpp_1_1exception.html + a0427039fbb35dc2156fcff024880b081 + () const + + + + xmlpp::internal_error + classxmlpp_1_1internal__error.html + xmlpp::exception + + + internal_error + classxmlpp_1_1internal__error.html + ac8c22422363ebe809517d4813903ef43 + (const Glib::ustring &message) + + + virtual + ~internal_error + classxmlpp_1_1internal__error.html + a83d7e81fd0394ae91fa3f37a3552461c + () + + + virtual void + Raise + classxmlpp_1_1internal__error.html + a15044cea719fb2bbb482efc597a284f0 + () const + + + virtual exception + Clone + classxmlpp_1_1internal__error.html + aaec2e497c76cf6418ecff03e8f76510b + () const + + + + exception + classxmlpp_1_1exception.html + aec1bbf4a42dd2ed44d269a3c31c14124 + (const Glib::ustring &message) + + + virtual + ~exception + classxmlpp_1_1exception.html + a4d0c3298c1bc27b4e2fdc6152330e760 + () + + + virtual const char * + what + classxmlpp_1_1exception.html + a0427039fbb35dc2156fcff024880b081 + () const + + + + xmlpp::IStreamParserInputBuffer + classxmlpp_1_1IStreamParserInputBuffer.html + xmlpp::ParserInputBuffer + + + IStreamParserInputBuffer + classxmlpp_1_1IStreamParserInputBuffer.html + aba70d93277d719a332b1a75fc8cf221c + (std::istream &input) + + + virtual + ~IStreamParserInputBuffer + classxmlpp_1_1IStreamParserInputBuffer.html + a4ae4d9a34cb47a73590dff158206ab83 + () + + + + ParserInputBuffer + classxmlpp_1_1ParserInputBuffer.html + a546358e9f85fd99b4ac4e1a2b1844ce5 + () + + + virtual + ~ParserInputBuffer + classxmlpp_1_1ParserInputBuffer.html + ad48655eb2fb4d085a7f2531aa8979b75 + () + + + _xmlParserInputBuffer * + cobj + classxmlpp_1_1ParserInputBuffer.html + acb105eb192e5532e21431a82ff46bb82 + () + + + const _xmlParserInputBuffer * + cobj + classxmlpp_1_1ParserInputBuffer.html + acf1c0eacf5b5d327a864f5339818d6bf + () const + + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + + xmlpp::OutputBuffer + classxmlpp_1_1OutputBuffer.html + xmlpp::NonCopyable + + + OutputBuffer + classxmlpp_1_1OutputBuffer.html + a2e00dabdec3e40b837d2b9ecb1d9fbcd + (const Glib::ustring &encoding=Glib::ustring()) + + + virtual + ~OutputBuffer + classxmlpp_1_1OutputBuffer.html + a02ddd3e8891f92d6518252f6326ed2a9 + () + + + _xmlOutputBuffer * + cobj + classxmlpp_1_1OutputBuffer.html + a2de0e355037956329d70b990d7bc79f5 + () + + + const _xmlOutputBuffer * + cobj + classxmlpp_1_1OutputBuffer.html + a6dbd7fc5ab8af66e751e0209aa3a0346 + () const + + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + + xmlpp::OStreamOutputBuffer + classxmlpp_1_1OStreamOutputBuffer.html + xmlpp::OutputBuffer + + + OStreamOutputBuffer + classxmlpp_1_1OStreamOutputBuffer.html + a94a071df974d7fb7065f11c63d707604 + (std::ostream &output, const Glib::ustring &encoding=Glib::ustring()) + + + virtual + ~OStreamOutputBuffer + classxmlpp_1_1OStreamOutputBuffer.html + af3bce7e0789eae3605ecd72103cf4a96 + () + + + + OutputBuffer + classxmlpp_1_1OutputBuffer.html + a2e00dabdec3e40b837d2b9ecb1d9fbcd + (const Glib::ustring &encoding=Glib::ustring()) + + + virtual + ~OutputBuffer + classxmlpp_1_1OutputBuffer.html + a02ddd3e8891f92d6518252f6326ed2a9 + () + + + _xmlOutputBuffer * + cobj + classxmlpp_1_1OutputBuffer.html + a2de0e355037956329d70b990d7bc79f5 + () + + + const _xmlOutputBuffer * + cobj + classxmlpp_1_1OutputBuffer.html + a6dbd7fc5ab8af66e751e0209aa3a0346 + () const + + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + + xmlpp::ParserInputBuffer + classxmlpp_1_1ParserInputBuffer.html + xmlpp::NonCopyable + + + ParserInputBuffer + classxmlpp_1_1ParserInputBuffer.html + a546358e9f85fd99b4ac4e1a2b1844ce5 + () + + + virtual + ~ParserInputBuffer + classxmlpp_1_1ParserInputBuffer.html + ad48655eb2fb4d085a7f2531aa8979b75 + () + + + _xmlParserInputBuffer * + cobj + classxmlpp_1_1ParserInputBuffer.html + acb105eb192e5532e21431a82ff46bb82 + () + + + const _xmlParserInputBuffer * + cobj + classxmlpp_1_1ParserInputBuffer.html + acf1c0eacf5b5d327a864f5339818d6bf + () const + + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + + xmlpp::CdataNode + classxmlpp_1_1CdataNode.html + xmlpp::ContentNode + + + CdataNode + classxmlpp_1_1CdataNode.html + a150933b23cfa1a5c0fc5fffd433e7194 + (_xmlNode *node) + + + virtual + ~CdataNode + classxmlpp_1_1CdataNode.html + aa37972e79cbc301db17f5b0b95964908 + () + + + + ContentNode + classxmlpp_1_1ContentNode.html + af9fcf3459cdc338ffe51c09006487c3e + (_xmlNode *node) + + + virtual + ~ContentNode + classxmlpp_1_1ContentNode.html + a695769ae0499d8e4831e0465f8e67838 + () + + + Glib::ustring + get_content + classxmlpp_1_1ContentNode.html + add25e879109b4481281ccb876e684819 + () const + + + void + set_content + classxmlpp_1_1ContentNode.html + a2e9978caa82eb11cadccd4d5fc4e690a + (const Glib::ustring &content) + + + bool + is_white_space + classxmlpp_1_1ContentNode.html + ab032b4eff400d958ffbe57516bdb7f93 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::CommentNode + classxmlpp_1_1CommentNode.html + xmlpp::ContentNode + + + CommentNode + classxmlpp_1_1CommentNode.html + a3be1e492187b87279acc1aff82c77dc2 + (_xmlNode *node) + + + virtual + ~CommentNode + classxmlpp_1_1CommentNode.html + a69f6e389f1c683c86e3f5f6ff50cbf0d + () + + + + ContentNode + classxmlpp_1_1ContentNode.html + af9fcf3459cdc338ffe51c09006487c3e + (_xmlNode *node) + + + virtual + ~ContentNode + classxmlpp_1_1ContentNode.html + a695769ae0499d8e4831e0465f8e67838 + () + + + Glib::ustring + get_content + classxmlpp_1_1ContentNode.html + add25e879109b4481281ccb876e684819 + () const + + + void + set_content + classxmlpp_1_1ContentNode.html + a2e9978caa82eb11cadccd4d5fc4e690a + (const Glib::ustring &content) + + + bool + is_white_space + classxmlpp_1_1ContentNode.html + ab032b4eff400d958ffbe57516bdb7f93 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::ContentNode + classxmlpp_1_1ContentNode.html + xmlpp::Node + + + ContentNode + classxmlpp_1_1ContentNode.html + af9fcf3459cdc338ffe51c09006487c3e + (_xmlNode *node) + + + virtual + ~ContentNode + classxmlpp_1_1ContentNode.html + a695769ae0499d8e4831e0465f8e67838 + () + + + Glib::ustring + get_content + classxmlpp_1_1ContentNode.html + add25e879109b4481281ccb876e684819 + () const + + + void + set_content + classxmlpp_1_1ContentNode.html + a2e9978caa82eb11cadccd4d5fc4e690a + (const Glib::ustring &content) + + + bool + is_white_space + classxmlpp_1_1ContentNode.html + ab032b4eff400d958ffbe57516bdb7f93 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::Element + classxmlpp_1_1Element.html + xmlpp::Node + + std::list< Attribute * > + AttributeList + classxmlpp_1_1Element.html + a7c54c83af3dfeddf2a70dba5ca6cc1d1 + + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + + Element + classxmlpp_1_1Element.html + addce07f26b8ca52beb583d942375a756 + (_xmlNode *node) + + + virtual + ~Element + classxmlpp_1_1Element.html + a6633bfbb6b3b6520ab9ac8fa4991b066 + () + + + void + set_namespace_declaration + classxmlpp_1_1Element.html + a801e28a85e4c45d145d056c5ff7186f3 + (const Glib::ustring &ns_uri, const Glib::ustring &ns_prefix=Glib::ustring()) + + + AttributeList + get_attributes + classxmlpp_1_1Element.html + a8fbb85e7ecabc5a8b9b39638f94e4fb7 + () + + + const AttributeList + get_attributes + classxmlpp_1_1Element.html + afc9883eee2a4fb0584a60b21b5d2673b + () const + + + Attribute * + get_attribute + classxmlpp_1_1Element.html + a21fcf0bb1ee913fb698d2ab8911dda77 + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) const + + + Glib::ustring + get_attribute_value + classxmlpp_1_1Element.html + a8ae47935bca05ac2a6f0d8b02221a6b1 + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) const + + + Attribute * + set_attribute + classxmlpp_1_1Element.html + a359b10f76db129fff5776c8405ac8e9a + (const Glib::ustring &name, const Glib::ustring &value, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_attribute + classxmlpp_1_1Element.html + a3d5765f07699dc8d4d55c0b0157defad + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + TextNode * + get_child_text + classxmlpp_1_1Element.html + a71885eacc99a1e7812b47d3d0607423a + () + + + const TextNode * + get_child_text + classxmlpp_1_1Element.html + a0a2326904a79f2e2abb5c91a4107fa6f + () const + + + TextNode * + add_child_text + classxmlpp_1_1Element.html + a15cd56e871aaf9625b7f4fbedb97c764 + (const Glib::ustring &content=Glib::ustring()) + + + TextNode * + add_child_text + classxmlpp_1_1Element.html + af774512e6c39e8e6741a0ff7bf9250f5 + (xmlpp::Node *previous_sibling, const Glib::ustring &content=Glib::ustring()) + + + TextNode * + add_child_text_before + classxmlpp_1_1Element.html + aa05dee4b080f6e3c709397a48ad2a34e + (xmlpp::Node *next_sibling, const Glib::ustring &content=Glib::ustring()) + + + void + set_child_text + classxmlpp_1_1Element.html + a9be4234049fe13f2941d9c7a5dbc37e2 + (const Glib::ustring &content) + + + bool + has_child_text + classxmlpp_1_1Element.html + a40d1299122bd9921fcb544ca1236aa95 + () const + + + CommentNode * + add_child_comment + classxmlpp_1_1Element.html + af69479710a4ab4cd8e89703a20dd360e + (const Glib::ustring &content) + + + CdataNode * + add_child_cdata + classxmlpp_1_1Element.html + a422cf7abd2dcc7da5a465f9b6afffd05 + (const Glib::ustring &content) + + + EntityReference * + add_child_entity_reference + classxmlpp_1_1Element.html + a3a9aa8bc8745eb2521f705c1d468cc85 + (const Glib::ustring &name) + + + ProcessingInstructionNode * + add_child_processing_instruction + classxmlpp_1_1Element.html + a1fec4ad7b2f01d71606432ab9dfc27dd + (const Glib::ustring &name, const Glib::ustring &content) + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + Glib::ustring + get_namespace_uri_for_prefix + classxmlpp_1_1Element.html + af4c996b3eed332ed7e4e3096427e624d + (const Glib::ustring &ns_prefix) const + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + + xmlpp::EntityDeclaration + classxmlpp_1_1EntityDeclaration.html + xmlpp::ContentNode + + + EntityDeclaration + classxmlpp_1_1EntityDeclaration.html + aa3d1fe2fc91b490ac48448e20d7689a8 + (_xmlNode *node) + + + virtual + ~EntityDeclaration + classxmlpp_1_1EntityDeclaration.html + a7026727072e089d298f3645e63b88968 + () + + + Glib::ustring + get_resolved_text + classxmlpp_1_1EntityDeclaration.html + a38859eff18b256eed9d6d5a7caa745e0 + () const + + + Glib::ustring + get_original_text + classxmlpp_1_1EntityDeclaration.html + a1390ad5ca69d9317a758c6fa3e0bfb52 + () const + + + _xmlEntity * + cobj + classxmlpp_1_1EntityDeclaration.html + af47060083f936f71ddf6e9e930b21555 + () + + + const _xmlEntity * + cobj + classxmlpp_1_1EntityDeclaration.html + ab6fbeb18deb5658d08028e644b81487a + () const + + + + ContentNode + classxmlpp_1_1ContentNode.html + af9fcf3459cdc338ffe51c09006487c3e + (_xmlNode *node) + + + virtual + ~ContentNode + classxmlpp_1_1ContentNode.html + a695769ae0499d8e4831e0465f8e67838 + () + + + Glib::ustring + get_content + classxmlpp_1_1ContentNode.html + add25e879109b4481281ccb876e684819 + () const + + + void + set_content + classxmlpp_1_1ContentNode.html + a2e9978caa82eb11cadccd4d5fc4e690a + (const Glib::ustring &content) + + + bool + is_white_space + classxmlpp_1_1ContentNode.html + ab032b4eff400d958ffbe57516bdb7f93 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::EntityReference + classxmlpp_1_1EntityReference.html + xmlpp::Node + + + EntityReference + classxmlpp_1_1EntityReference.html + a8f575183a2c1caa8e3a223f0292f83cf + (_xmlNode *node) + + + virtual + ~EntityReference + classxmlpp_1_1EntityReference.html + ac8dff5d5fe300000199be732311d6aff + () + + + Glib::ustring + get_resolved_text + classxmlpp_1_1EntityReference.html + aafe4e2f15ce6d04a2ec19e2f69cba19d + () const + + + Glib::ustring + get_original_text + classxmlpp_1_1EntityReference.html + a49bda2ab52ea3db83f3c6e5eb8f2c467 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::Node + classxmlpp_1_1Node.html + xmlpp::NonCopyable + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + NonCopyable + classxmlpp_1_1NonCopyable.html + a77c785ff1149642caa3058f49223f112 + () + + + virtual + ~NonCopyable + classxmlpp_1_1NonCopyable.html + a14e2e0391beb4b8f20f5d51e8a253d63 + () + + + + xmlpp::ProcessingInstructionNode + classxmlpp_1_1ProcessingInstructionNode.html + xmlpp::ContentNode + + + ProcessingInstructionNode + classxmlpp_1_1ProcessingInstructionNode.html + a609246dff62dbc2bc86eaf9a8c393fda + (_xmlNode *node) + + + virtual + ~ProcessingInstructionNode + classxmlpp_1_1ProcessingInstructionNode.html + a34195051d18ef6ec70f8b6f01ab9e74d + () + + + + ContentNode + classxmlpp_1_1ContentNode.html + af9fcf3459cdc338ffe51c09006487c3e + (_xmlNode *node) + + + virtual + ~ContentNode + classxmlpp_1_1ContentNode.html + a695769ae0499d8e4831e0465f8e67838 + () + + + Glib::ustring + get_content + classxmlpp_1_1ContentNode.html + add25e879109b4481281ccb876e684819 + () const + + + void + set_content + classxmlpp_1_1ContentNode.html + a2e9978caa82eb11cadccd4d5fc4e690a + (const Glib::ustring &content) + + + bool + is_white_space + classxmlpp_1_1ContentNode.html + ab032b4eff400d958ffbe57516bdb7f93 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * + cobj + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c + () + + + const _xmlNode * + cobj + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::TextNode + classxmlpp_1_1TextNode.html + xmlpp::ContentNode + + + TextNode + classxmlpp_1_1TextNode.html + a4838cc566ae92f31c3773ce8b03b061d + (_xmlNode *node) + + + virtual + ~TextNode + classxmlpp_1_1TextNode.html + ab36c29b54db0cd5e910a8cbc89d35bd2 + () + + + + ContentNode + classxmlpp_1_1ContentNode.html + af9fcf3459cdc338ffe51c09006487c3e + (_xmlNode *node) + + + virtual + ~ContentNode + classxmlpp_1_1ContentNode.html + a695769ae0499d8e4831e0465f8e67838 + () + + + Glib::ustring + get_content + classxmlpp_1_1ContentNode.html + add25e879109b4481281ccb876e684819 + () const + + + void + set_content + classxmlpp_1_1ContentNode.html + a2e9978caa82eb11cadccd4d5fc4e690a + (const Glib::ustring &content) + + + bool + is_white_space + classxmlpp_1_1ContentNode.html + ab032b4eff400d958ffbe57516bdb7f93 + () const + + + + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 + (_xmlNode *node) + + + virtual + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 + () + + + Glib::ustring + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a + () const + + + void + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) + + + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) + + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const + + + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const + + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const + + + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const + + + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 + () + + + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 + () const + + + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () + + + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const + + + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () + + + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) + + + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) + + + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const + + + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + + + void + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) + + + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) + + + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const + + + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const + + + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const + + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const - - virtual - ~ParserInputBuffer - classxmlpp_1_1ParserInputBuffer.html - ad48655eb2fb4d085a7f2531aa8979b75 - () + + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const - _xmlParserInputBuffer * + Glib::ustring + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const + + + _xmlNode * cobj - classxmlpp_1_1ParserInputBuffer.html - acb105eb192e5532e21431a82ff46bb82 + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c () - const _xmlParserInputBuffer * + const _xmlNode * cobj - classxmlpp_1_1ParserInputBuffer.html - acf1c0eacf5b5d327a864f5339818d6bf + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 () const - - - xmlpp::CdataNode - classxmlpp_1_1CdataNode.html - xmlpp::ContentNode - - - CdataNode - classxmlpp_1_1CdataNode.html - a150933b23cfa1a5c0fc5fffd433e7194 + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + + + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 (_xmlNode *node) - - virtual - ~CdataNode - classxmlpp_1_1CdataNode.html - aa37972e79cbc301db17f5b0b95964908 - () + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) - xmlpp::CommentNode - classxmlpp_1_1CommentNode.html - xmlpp::ContentNode + xmlpp::XIncludeEnd + classxmlpp_1_1XIncludeEnd.html + xmlpp::Node - CommentNode - classxmlpp_1_1CommentNode.html - a3be1e492187b87279acc1aff82c77dc2 + XIncludeEnd + classxmlpp_1_1XIncludeEnd.html + aeb57498d5214181abcacab56cfed755e (_xmlNode *node) virtual - ~CommentNode - classxmlpp_1_1CommentNode.html - a69f6e389f1c683c86e3f5f6ff50cbf0d + ~XIncludeEnd + classxmlpp_1_1XIncludeEnd.html + a84952c37bbfab6c60dad62aea37ccefa () - - - xmlpp::ContentNode - classxmlpp_1_1ContentNode.html - xmlpp::Node - ContentNode - classxmlpp_1_1ContentNode.html - af9fcf3459cdc338ffe51c09006487c3e + Node + classxmlpp_1_1Node.html + a215d8c01b6b01596c4ea853f99dce8e7 (_xmlNode *node) virtual - ~ContentNode - classxmlpp_1_1ContentNode.html - a695769ae0499d8e4831e0465f8e67838 + ~Node + classxmlpp_1_1Node.html + a042c5de83dba6bf5d1923d76f1fb58c0 () Glib::ustring - get_content - classxmlpp_1_1ContentNode.html - add25e879109b4481281ccb876e684819 + get_name + classxmlpp_1_1Node.html + ad8cba86cb7f43dd512f5b6817ed47d9a () const void - set_content - classxmlpp_1_1ContentNode.html - a2e9978caa82eb11cadccd4d5fc4e690a - (const Glib::ustring &content) + set_name + classxmlpp_1_1Node.html + ab5e1b1059a2af0818b1a8937fad49835 + (const Glib::ustring &name) - bool - is_white_space - classxmlpp_1_1ContentNode.html - ab032b4eff400d958ffbe57516bdb7f93 - () const + void + set_namespace + classxmlpp_1_1Node.html + a4ddefaaaf3f0b550e776e9100bc23257 + (const Glib::ustring &ns_prefix) - - - xmlpp::Element - classxmlpp_1_1Element.html - xmlpp::Node - - std::list< Attribute * > - AttributeList - classxmlpp_1_1Element.html - a7c54c83af3dfeddf2a70dba5ca6cc1d1 - + + Glib::ustring + get_namespace_prefix + classxmlpp_1_1Node.html + a06790680c79808f1a56ddea438a6df5c + () const - - Element - classxmlpp_1_1Element.html - addce07f26b8ca52beb583d942375a756 - (_xmlNode *node) + Glib::ustring + get_namespace_uri + classxmlpp_1_1Node.html + a9356e5ee02dbc809f9bf139b12befc6c + () const - - virtual - ~Element - classxmlpp_1_1Element.html - a6633bfbb6b3b6520ab9ac8fa4991b066 - () + + int + get_line + classxmlpp_1_1Node.html + a5e21f3a9996e25bd2df5ec8ce9906575 + () const - void - set_namespace_declaration - classxmlpp_1_1Element.html - a801e28a85e4c45d145d056c5ff7186f3 - (const Glib::ustring &ns_uri, const Glib::ustring &ns_prefix=Glib::ustring()) + const Element * + get_parent + classxmlpp_1_1Node.html + aa8a68ac1887a33e44e3af365bd02db1b + () const - AttributeList - get_attributes - classxmlpp_1_1Element.html - a8fbb85e7ecabc5a8b9b39638f94e4fb7 + Element * + get_parent + classxmlpp_1_1Node.html + a998e8cb924bd04abf72e57b68d2817f4 () - const AttributeList - get_attributes - classxmlpp_1_1Element.html - afc9883eee2a4fb0584a60b21b5d2673b + const Node * + get_next_sibling + classxmlpp_1_1Node.html + a59a3e52fd752c243654a2cb58b1b0e18 () const - Attribute * - get_attribute - classxmlpp_1_1Element.html - a21fcf0bb1ee913fb698d2ab8911dda77 - (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) const + Node * + get_next_sibling + classxmlpp_1_1Node.html + a2576ce35a6a3dd13b49e857524360ac4 + () - Glib::ustring - get_attribute_value - classxmlpp_1_1Element.html - a8ae47935bca05ac2a6f0d8b02221a6b1 - (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) const + const Node * + get_previous_sibling + classxmlpp_1_1Node.html + aa3ca83ba6e10ff21060be5d0441fa6ac + () const - Attribute * - set_attribute - classxmlpp_1_1Element.html - a359b10f76db129fff5776c8405ac8e9a - (const Glib::ustring &name, const Glib::ustring &value, const Glib::ustring &ns_prefix=Glib::ustring()) + Node * + get_previous_sibling + classxmlpp_1_1Node.html + a567be4ebaffb2cd3dd2ae602c8df4a29 + () - void - remove_attribute - classxmlpp_1_1Element.html - a3d5765f07699dc8d4d55c0b0157defad - (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) + const Node * + get_first_child + classxmlpp_1_1Node.html + a0e244ac3573fc927bcb0f70d6b70f5d2 + (const Glib::ustring &name=Glib::ustring()) const + + + Node * + get_first_child + classxmlpp_1_1Node.html + a5eb1d1e3d4616604da7cf58da15b6fa7 + (const Glib::ustring &name=Glib::ustring()) - TextNode * - get_child_text - classxmlpp_1_1Element.html - a71885eacc99a1e7812b47d3d0607423a - () + NodeList + get_children + classxmlpp_1_1Node.html + abb9d4d7aad234b9b01ae7fe404915a95 + (const Glib::ustring &name=Glib::ustring()) - const TextNode * - get_child_text - classxmlpp_1_1Element.html - a0a2326904a79f2e2abb5c91a4107fa6f - () const + const NodeList + get_children + classxmlpp_1_1Node.html + a2cb9f082c7bebc349c1f606e69788a57 + (const Glib::ustring &name=Glib::ustring()) const - TextNode * - add_child_text - classxmlpp_1_1Element.html - a15cd56e871aaf9625b7f4fbedb97c764 - (const Glib::ustring &content=Glib::ustring()) + Element * + add_child + classxmlpp_1_1Node.html + ac56c54f8006cbfb545642cbf2e96bc4a + (const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - TextNode * - add_child_text - classxmlpp_1_1Element.html - af774512e6c39e8e6741a0ff7bf9250f5 - (xmlpp::Node *previous_sibling, const Glib::ustring &content=Glib::ustring()) + Element * + add_child + classxmlpp_1_1Node.html + a57bc6d6c941f1477a2445609d49ce645 + (xmlpp::Node *previous_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) - TextNode * - add_child_text_before - classxmlpp_1_1Element.html - aa05dee4b080f6e3c709397a48ad2a34e - (xmlpp::Node *next_sibling, const Glib::ustring &content=Glib::ustring()) + Element * + add_child_before + classxmlpp_1_1Node.html + a9dff93a466cfbeda0357dfc9a3bd316c + (xmlpp::Node *next_sibling, const Glib::ustring &name, const Glib::ustring &ns_prefix=Glib::ustring()) void - set_child_text - classxmlpp_1_1Element.html - a9be4234049fe13f2941d9c7a5dbc37e2 - (const Glib::ustring &content) + remove_child + classxmlpp_1_1Node.html + a00ccfb39d9b6d82b5acd5f458c8f8ca8 + (Node *node) - bool - has_child_text - classxmlpp_1_1Element.html - a40d1299122bd9921fcb544ca1236aa95 - () const + Node * + import_node + classxmlpp_1_1Node.html + aea42eae72fa7901aa1fb8f5c0fd194ec + (const Node *node, bool recursive=true) - CommentNode * - add_child_comment - classxmlpp_1_1Element.html - af69479710a4ab4cd8e89703a20dd360e - (const Glib::ustring &content) + Glib::ustring + get_path + classxmlpp_1_1Node.html + ad05b43e18a4600ada423b74a59efb541 + () const - CdataNode * - add_child_cdata - classxmlpp_1_1Element.html - a422cf7abd2dcc7da5a465f9b6afffd05 - (const Glib::ustring &content) + NodeSet + find + classxmlpp_1_1Node.html + a25e56c6ae44be0926d1efcc7e488d96f + (const Glib::ustring &xpath) const - EntityReference * - add_child_entity_reference - classxmlpp_1_1Element.html - a3a9aa8bc8745eb2521f705c1d468cc85 - (const Glib::ustring &name) + NodeSet + find + classxmlpp_1_1Node.html + a4bfbd6ed354524c960d6cd425c534c7c + (const Glib::ustring &xpath, const PrefixNsMap &namespaces) const - ProcessingInstructionNode * - add_child_processing_instruction - classxmlpp_1_1Element.html - a1fec4ad7b2f01d71606432ab9dfc27dd - (const Glib::ustring &name, const Glib::ustring &content) + bool + eval_to_boolean + classxmlpp_1_1Node.html + a676b7cc5db3c19fed65a72bee18ecddb + (const Glib::ustring &xpath, XPathResultType *result_type=0) const - - Glib::ustring - get_namespace_uri_for_prefix - classxmlpp_1_1Element.html - af4c996b3eed332ed7e4e3096427e624d - (const Glib::ustring &ns_prefix) const + + bool + eval_to_boolean + classxmlpp_1_1Node.html + aecccaf7c600e523313eb4d9fe322777b + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const - - - xmlpp::EntityDeclaration - classxmlpp_1_1EntityDeclaration.html - xmlpp::ContentNode - - EntityDeclaration - classxmlpp_1_1EntityDeclaration.html - aa3d1fe2fc91b490ac48448e20d7689a8 - (_xmlNode *node) + double + eval_to_number + classxmlpp_1_1Node.html + a7c8a3f5f33d7ee8d8dad1b9333ac3edc + (const Glib::ustring &xpath, XPathResultType *result_type=0) const - - virtual - ~EntityDeclaration - classxmlpp_1_1EntityDeclaration.html - a7026727072e089d298f3645e63b88968 - () + + double + eval_to_number + classxmlpp_1_1Node.html + a484af20daae39fe5db0a1ce2f16cc73e + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const Glib::ustring - get_resolved_text - classxmlpp_1_1EntityDeclaration.html - a38859eff18b256eed9d6d5a7caa745e0 - () const + eval_to_string + classxmlpp_1_1Node.html + a9ecbce3fafb8ab13d227c739c3e789f2 + (const Glib::ustring &xpath, XPathResultType *result_type=0) const Glib::ustring - get_original_text - classxmlpp_1_1EntityDeclaration.html - a1390ad5ca69d9317a758c6fa3e0bfb52 - () const + eval_to_string + classxmlpp_1_1Node.html + ab2a27479f8482aecd5fb67c18b9b1579 + (const Glib::ustring &xpath, const PrefixNsMap &namespaces, XPathResultType *result_type=0) const - _xmlEntity * + _xmlNode * cobj - classxmlpp_1_1EntityDeclaration.html - af47060083f936f71ddf6e9e930b21555 + classxmlpp_1_1Node.html + aeede250f5cf6de5f55cb7bb94084ec7c () - const _xmlEntity * + const _xmlNode * cobj - classxmlpp_1_1EntityDeclaration.html - ab6fbeb18deb5658d08028e644b81487a - () const - - - - xmlpp::EntityReference - classxmlpp_1_1EntityReference.html - xmlpp::Node - - - EntityReference - classxmlpp_1_1EntityReference.html - a8f575183a2c1caa8e3a223f0292f83cf - (_xmlNode *node) - - - virtual - ~EntityReference - classxmlpp_1_1EntityReference.html - ac8dff5d5fe300000199be732311d6aff - () - - - Glib::ustring - get_resolved_text - classxmlpp_1_1EntityReference.html - aafe4e2f15ce6d04a2ec19e2f69cba19d - () const - - - Glib::ustring - get_original_text - classxmlpp_1_1EntityReference.html - a49bda2ab52ea3db83f3c6e5eb8f2c467 + classxmlpp_1_1Node.html + a831eea0dbe1e51a350a9b20a2da47fc9 () const - - - xmlpp::Node - classxmlpp_1_1Node.html - xmlpp::NonCopyable std::list< Node * > NodeList @@ -1198,6 +5253,46 @@ a0175dca099d30f45ebbfd6a238420426 + + static void + create_wrapper + classxmlpp_1_1Node.html + a616a872d0fbd86206c0beee0be5abee3 + (_xmlNode *node) + + + static void + free_wrappers + classxmlpp_1_1Node.html + aa47901df78305a685fc9682cd44290d6 + (_xmlNode *node) + + + _xmlNode * + create_new_child_node + classxmlpp_1_1Node.html + af8d31aaa506d229651e8328f8294f5df + (const Glib::ustring &name, const Glib::ustring &ns_prefix) + + + + xmlpp::XIncludeStart + classxmlpp_1_1XIncludeStart.html + xmlpp::Node + + + XIncludeStart + classxmlpp_1_1XIncludeStart.html + abfcc32038a382e2ae51782adbdab0937 + (_xmlNode *node) + + + virtual + ~XIncludeStart + classxmlpp_1_1XIncludeStart.html + a0f52604df733f91cd7fd1a36f8c2bfb6 + () + Node @@ -1433,8 +5528,22 @@ const _xmlNode * cobj classxmlpp_1_1Node.html - a831eea0dbe1e51a350a9b20a2da47fc9 - () const + a831eea0dbe1e51a350a9b20a2da47fc9 + () const + + + std::list< Node * > + NodeList + classxmlpp_1_1Node.html + a7b0205c6df142d060dfca9119fadff49 + + + + std::map< Glib::ustring, Glib::ustring > + PrefixNsMap + classxmlpp_1_1Node.html + a0175dca099d30f45ebbfd6a238420426 + static void @@ -1459,44 +5568,6 @@ - xmlpp::ProcessingInstructionNode - classxmlpp_1_1ProcessingInstructionNode.html - xmlpp::ContentNode - - - ProcessingInstructionNode - classxmlpp_1_1ProcessingInstructionNode.html - a609246dff62dbc2bc86eaf9a8c393fda - (_xmlNode *node) - - - virtual - ~ProcessingInstructionNode - classxmlpp_1_1ProcessingInstructionNode.html - a34195051d18ef6ec70f8b6f01ab9e74d - () - - - - xmlpp::TextNode - classxmlpp_1_1TextNode.html - xmlpp::ContentNode - - - TextNode - classxmlpp_1_1TextNode.html - a4838cc566ae92f31c3773ce8b03b061d - (_xmlNode *node) - - - virtual - ~TextNode - classxmlpp_1_1TextNode.html - ab36c29b54db0cd5e910a8cbc89d35bd2 - () - - - xmlpp::Parser classxmlpp_1_1Parser.html xmlpp::NonCopyable @@ -1754,6 +5825,13 @@ a1cb4e32dd3adf2460f2836bddb59633c + + unsigned int + size_type + classxmlpp_1_1Parser.html + a8e7c797006bb5398629cf98f4141e3e6 + + SaxParser @@ -1817,6 +5895,62 @@ ac540859149b064cfce87931ba736f3c5 () + + + Parser + classxmlpp_1_1Parser.html + ab2990f22147cb2163eda6e773fb2eb68 + () + + + virtual + ~Parser + classxmlpp_1_1Parser.html + acf64cbff6b9cf4010226fc1c803d56f9 + () + + + virtual void + set_validate + classxmlpp_1_1Parser.html + a39332721610231ca8c5114e245121cc1 + (bool val=true) + + + virtual bool + get_validate + classxmlpp_1_1Parser.html + a7329d0daf70030bef41b92e6ed22bd63 + () const + + + virtual void + set_substitute_entities + classxmlpp_1_1Parser.html + a960e9ee12df9b631c694ca002932cf7f + (bool val=true) + + + virtual bool + get_substitute_entities + classxmlpp_1_1Parser.html + ae71762868b009ccae8f00c1d34df00e7 + () const + + + void + set_throw_messages + classxmlpp_1_1Parser.html + a3d491c0479b11e5766849956cd4b4538 + (bool val=true) + + + bool + get_throw_messages + classxmlpp_1_1Parser.html + ad9e5523ffa19aa3e76761a0d46040efb + () const + virtual void on_start_document @@ -1887,33 +6021,182 @@ af6671ab7dbda78730a65dcbb58aa0ec1 (const Glib::ustring &text) - - virtual void - on_internal_subset - classxmlpp_1_1SaxParser.html - a4b453817ac37ea307c2ba023cc938794 - (const Glib::ustring &name, const Glib::ustring &publicId, const Glib::ustring &systemId) + + virtual void + on_internal_subset + classxmlpp_1_1SaxParser.html + a4b453817ac37ea307c2ba023cc938794 + (const Glib::ustring &name, const Glib::ustring &publicId, const Glib::ustring &systemId) + + + virtual _xmlEntity * + on_get_entity + classxmlpp_1_1SaxParser.html + aeb20c4424f325655ebd787c2b2268137 + (const Glib::ustring &name) + + + virtual void + on_entity_declaration + classxmlpp_1_1SaxParser.html + ab0985199cbdbd9a7ab31b024acf3c2c8 + (const Glib::ustring &name, XmlEntityType type, const Glib::ustring &publicId, const Glib::ustring &systemId, const Glib::ustring &content) + + + virtual void + release_underlying + classxmlpp_1_1SaxParser.html + a839554028d8bad81774040eb67d23103 + () + + + virtual void + initialize_context + classxmlpp_1_1Parser.html + a25f92d0a820d96accfe316a066bade49 + () + + + virtual void + on_validity_error + classxmlpp_1_1Parser.html + a36860900bd7f118adfd7b7887278e4fb + (const Glib::ustring &message) + + + virtual void + on_validity_warning + classxmlpp_1_1Parser.html + ad0876425a0d687f24bc54b44d950ab2c + (const Glib::ustring &message) + + + virtual void + handleException + classxmlpp_1_1Parser.html + a860e1cff3da52a4bbb0b17a06475399f + (const exception &e) + + + virtual void + check_for_exception + classxmlpp_1_1Parser.html + a9daba11c6746d91153329a9dbd8decc5 + () + + + virtual void + check_for_validity_messages + classxmlpp_1_1Parser.html + aad45390ab3d30d1dea26001f2d6a9a2f + () + + + MsgType + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029b + + + + MsgParserError + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029bae3a15565bbac2bbce269c71578874290 + + + + MsgParserWarning + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029ba2699545b0c4313c08db938000a1ff385 + + + + MsgValidityError + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029bab5b788bc9b710543d1061be8e8d1ceff + + + + MsgValidityWarning + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029baf56ce30abc58b13a1bd9ee27c085ac70 + + + + static void + callback_parser_error + classxmlpp_1_1Parser.html + ae5272535b144daaafcdc161e36f1aa33 + (void *ctx, const char *msg,...) + + + static void + callback_parser_warning + classxmlpp_1_1Parser.html + a7dbe69dcd8aa5c7625fa96a9dcdcbad7 + (void *ctx, const char *msg,...) + + + static void + callback_validity_error + classxmlpp_1_1Parser.html + a7ec91483923a6023e7ac56eeaf16b1e3 + (void *ctx, const char *msg,...) + + + static void + callback_validity_warning + classxmlpp_1_1Parser.html + aa573fc538688db238714cef413944567 + (void *ctx, const char *msg,...) + + + static void + callback_error_or_warning + classxmlpp_1_1Parser.html + a49b79a6ada464e8d1be27a655ee63b48 + (MsgType msg_type, void *ctx, const char *msg, va_list var_args) + + + _xmlParserCtxt * + context_ + classxmlpp_1_1Parser.html + a2b49a51f1a8fce897dffcb1e81f87907 + + + + exception * + exception_ + classxmlpp_1_1Parser.html + a7b2a100f91d2ead57de5ef640ebf91a9 + + + + Glib::ustring + validate_error_ + classxmlpp_1_1Parser.html + a367b4132d663f1c1adf1515c4a6e959f + - - virtual _xmlEntity * - on_get_entity - classxmlpp_1_1SaxParser.html - aeb20c4424f325655ebd787c2b2268137 - (const Glib::ustring &name) + + Glib::ustring + validate_warning_ + classxmlpp_1_1Parser.html + aac64f7a377ae85c848dbb8008a43f555 + - - virtual void - on_entity_declaration - classxmlpp_1_1SaxParser.html - ab0985199cbdbd9a7ab31b024acf3c2c8 - (const Glib::ustring &name, XmlEntityType type, const Glib::ustring &publicId, const Glib::ustring &systemId, const Glib::ustring &content) + + bool + validate_ + classxmlpp_1_1Parser.html + a2d21ddd4fdd34f845937649eb4fb8814 + - - virtual void - release_underlying - classxmlpp_1_1SaxParser.html - a839554028d8bad81774040eb67d23103 - () + + bool + substitute_entities_ + classxmlpp_1_1Parser.html + a969bc262133a8310cfbfc097f925c00c + @@ -2033,33 +6316,245 @@ ad10907d495f9e1e2b63638a9c69f78a8 () - - const Document * - get_document - classxmlpp_1_1DomParser.html - a4a3452e46cf656998d8752ed949239de - () const + + const Document * + get_document + classxmlpp_1_1DomParser.html + a4a3452e46cf656998d8752ed949239de + () const + + + + Parser + classxmlpp_1_1Parser.html + ab2990f22147cb2163eda6e773fb2eb68 + () + + + virtual + ~Parser + classxmlpp_1_1Parser.html + acf64cbff6b9cf4010226fc1c803d56f9 + () + + + virtual void + set_validate + classxmlpp_1_1Parser.html + a39332721610231ca8c5114e245121cc1 + (bool val=true) + + + virtual bool + get_validate + classxmlpp_1_1Parser.html + a7329d0daf70030bef41b92e6ed22bd63 + () const + + + virtual void + set_substitute_entities + classxmlpp_1_1Parser.html + a960e9ee12df9b631c694ca002932cf7f + (bool val=true) + + + virtual bool + get_substitute_entities + classxmlpp_1_1Parser.html + ae71762868b009ccae8f00c1d34df00e7 + () const + + + void + set_throw_messages + classxmlpp_1_1Parser.html + a3d491c0479b11e5766849956cd4b4538 + (bool val=true) + + + bool + get_throw_messages + classxmlpp_1_1Parser.html + ad9e5523ffa19aa3e76761a0d46040efb + () const + + + virtual void + parse_context + classxmlpp_1_1DomParser.html + a0f77c8ab0a9ab2d7abd809846ae75d6f + () + + + virtual void + release_underlying + classxmlpp_1_1DomParser.html + a58a312db2834a41a77ca290dc6dc48fe + () + + + virtual void + initialize_context + classxmlpp_1_1Parser.html + a25f92d0a820d96accfe316a066bade49 + () + + + virtual void + on_validity_error + classxmlpp_1_1Parser.html + a36860900bd7f118adfd7b7887278e4fb + (const Glib::ustring &message) + + + virtual void + on_validity_warning + classxmlpp_1_1Parser.html + ad0876425a0d687f24bc54b44d950ab2c + (const Glib::ustring &message) + + + virtual void + handleException + classxmlpp_1_1Parser.html + a860e1cff3da52a4bbb0b17a06475399f + (const exception &e) + + + virtual void + check_for_exception + classxmlpp_1_1Parser.html + a9daba11c6746d91153329a9dbd8decc5 + () + + + virtual void + check_for_validity_messages + classxmlpp_1_1Parser.html + aad45390ab3d30d1dea26001f2d6a9a2f + () + + + Document * + doc_ + classxmlpp_1_1DomParser.html + ab95c1209f2311df8fe1f1f34651d2d28 + + + + _xmlParserCtxt * + context_ + classxmlpp_1_1Parser.html + a2b49a51f1a8fce897dffcb1e81f87907 + + + + exception * + exception_ + classxmlpp_1_1Parser.html + a7b2a100f91d2ead57de5ef640ebf91a9 + + + + Glib::ustring + validate_error_ + classxmlpp_1_1Parser.html + a367b4132d663f1c1adf1515c4a6e959f + + + + Glib::ustring + validate_warning_ + classxmlpp_1_1Parser.html + aac64f7a377ae85c848dbb8008a43f555 + + + + bool + validate_ + classxmlpp_1_1Parser.html + a2d21ddd4fdd34f845937649eb4fb8814 + + + + bool + substitute_entities_ + classxmlpp_1_1Parser.html + a969bc262133a8310cfbfc097f925c00c + + + + unsigned int + size_type + classxmlpp_1_1Parser.html + a8e7c797006bb5398629cf98f4141e3e6 + + + + MsgType + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029b + + + + MsgParserError + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029bae3a15565bbac2bbce269c71578874290 + + + + MsgParserWarning + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029ba2699545b0c4313c08db938000a1ff385 + + + + MsgValidityError + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029bab5b788bc9b710543d1061be8e8d1ceff + + + + MsgValidityWarning + classxmlpp_1_1Parser.html + a8bfd5ceb1cc0b3b9fd9ff7cf44d1029baf56ce30abc58b13a1bd9ee27c085ac70 + + + + static void + callback_parser_error + classxmlpp_1_1Parser.html + ae5272535b144daaafcdc161e36f1aa33 + (void *ctx, const char *msg,...) + + + static void + callback_parser_warning + classxmlpp_1_1Parser.html + a7dbe69dcd8aa5c7625fa96a9dcdcbad7 + (void *ctx, const char *msg,...) - - virtual void - parse_context - classxmlpp_1_1DomParser.html - a0f77c8ab0a9ab2d7abd809846ae75d6f - () + + static void + callback_validity_error + classxmlpp_1_1Parser.html + a7ec91483923a6023e7ac56eeaf16b1e3 + (void *ctx, const char *msg,...) - - virtual void - release_underlying - classxmlpp_1_1DomParser.html - a58a312db2834a41a77ca290dc6dc48fe - () + + static void + callback_validity_warning + classxmlpp_1_1Parser.html + aa573fc538688db238714cef413944567 + (void *ctx, const char *msg,...) - - Document * - doc_ - classxmlpp_1_1DomParser.html - ab95c1209f2311df8fe1f1f34651d2d28 - + + static void + callback_error_or_warning + classxmlpp_1_1Parser.html + a49b79a6ada464e8d1be27a655ee63b48 + (MsgType msg_type, void *ctx, const char *msg, va_list var_args) @@ -2663,6 +7158,20 @@ a45d51d91fecdfcd659f4bd2008d1d686 (const Document *doc) + + + Validator + classxmlpp_1_1Validator.html + a2e25d9106542fac59c7a4368257cdcb5 + () + + + virtual + ~Validator + classxmlpp_1_1Validator.html + a381ade9a196777fb24780375ed82b06a + () + virtual void release_underlying @@ -2670,6 +7179,48 @@ ae132f171961e6fa5d3745a03f8d9a210 () + + virtual void + initialize_valid + classxmlpp_1_1Validator.html + a12ee744e385987547d1c449a1e4bf596 + () + + + virtual void + on_validity_error + classxmlpp_1_1Validator.html + af59b45514fe397db1dbb025a1a3b103f + (const Glib::ustring &message) + + + virtual void + on_validity_warning + classxmlpp_1_1Validator.html + a7ef36a34b258165082c4f33737e743d2 + (const Glib::ustring &message) + + + virtual void + handleException + classxmlpp_1_1Validator.html + a4d02cc2d687f0bd28e3c777ebbc7c458 + (const exception &e) + + + virtual void + check_for_exception + classxmlpp_1_1Validator.html + a2af695894f22e61b4f85551edefd104d + () + + + virtual void + check_for_validity_messages + classxmlpp_1_1Validator.html + a655f06aa683577c26dcb2edba2e9e84b + () + Dtd * dtd_ @@ -2677,6 +7228,48 @@ a31fdef5610cfc931496428013a8858a8 + + _xmlValidCtxt * + valid_ + classxmlpp_1_1Validator.html + a1c6ef225bbdf9053a7e83587262f30e9 + + + + exception * + exception_ + classxmlpp_1_1Validator.html + a55796f9903e66aa4730313936fab1f0b + + + + Glib::ustring + validate_error_ + classxmlpp_1_1Validator.html + ac28c8c06c9c3cbbebfa0d1c90d20cdf5 + + + + Glib::ustring + validate_warning_ + classxmlpp_1_1Validator.html + aa876f0e05457de97a3c2d598e4af2580 + + + + static void + callback_validity_error + classxmlpp_1_1Validator.html + a616cad28f3d4f59b76edb916bffeb6ef + (void *ctx, const char *msg,...) + + + static void + callback_validity_warning + classxmlpp_1_1Validator.html + a5f8938e79ca2c52ec26e499b356985a0 + (void *ctx, const char *msg,...) + xmlpp::SchemaValidator @@ -2780,6 +7373,20 @@ ade440860cfcbbb0ab082bf42dd03d113 (const Glib::ustring &file) + + + Validator + classxmlpp_1_1Validator.html + a2e25d9106542fac59c7a4368257cdcb5 + () + + + virtual + ~Validator + classxmlpp_1_1Validator.html + a381ade9a196777fb24780375ed82b06a + () + virtual void initialize_valid @@ -2801,6 +7408,41 @@ a682a1a79512bc7bc58c839212f2a2722 () + + virtual void + on_validity_error + classxmlpp_1_1Validator.html + af59b45514fe397db1dbb025a1a3b103f + (const Glib::ustring &message) + + + virtual void + on_validity_warning + classxmlpp_1_1Validator.html + a7ef36a34b258165082c4f33737e743d2 + (const Glib::ustring &message) + + + virtual void + handleException + classxmlpp_1_1Validator.html + a4d02cc2d687f0bd28e3c777ebbc7c458 + (const exception &e) + + + virtual void + check_for_exception + classxmlpp_1_1Validator.html + a2af695894f22e61b4f85551edefd104d + () + + + virtual void + check_for_validity_messages + classxmlpp_1_1Validator.html + a655f06aa683577c26dcb2edba2e9e84b + () + Schema * schema_ @@ -2822,6 +7464,48 @@ a484c2d1670616ff07d31034f76850e2a + + _xmlValidCtxt * + valid_ + classxmlpp_1_1Validator.html + a1c6ef225bbdf9053a7e83587262f30e9 + + + + exception * + exception_ + classxmlpp_1_1Validator.html + a55796f9903e66aa4730313936fab1f0b + + + + Glib::ustring + validate_error_ + classxmlpp_1_1Validator.html + ac28c8c06c9c3cbbebfa0d1c90d20cdf5 + + + + Glib::ustring + validate_warning_ + classxmlpp_1_1Validator.html + aa876f0e05457de97a3c2d598e4af2580 + + + + static void + callback_validity_error + classxmlpp_1_1Validator.html + a616cad28f3d4f59b76edb916bffeb6ef + (void *ctx, const char *msg,...) + + + static void + callback_validity_warning + classxmlpp_1_1Validator.html + a5f8938e79ca2c52ec26e499b356985a0 + (void *ctx, const char *msg,...) + xmlpp::Validator @@ -2933,4 +7617,63 @@ + + exceptions + /home/murrayc/checkout/gnome/libxml++/libxml++/exceptions/ + dir_fceced95d8215eeebebd9df6aa39e1a5.html + exception.h + internal_error.h + parse_error.h + validity_error.h + + + io + /home/murrayc/checkout/gnome/libxml++/libxml++/io/ + dir_bc161955dc3a3d2485839eba21420d01.html + istreamparserinputbuffer.h + ostreamoutputbuffer.h + outputbuffer.h + parserinputbuffer.h + + + nodes + /home/murrayc/checkout/gnome/libxml++/libxml++/nodes/ + dir_8637afc38b758fdb535647a385c49b5e.html + cdatanode.h + commentnode.h + contentnode.h + element.h + entitydeclaration.h + entityreference.h + node.h + processinginstructionnode.h + textnode.h + xincludeend.h + xincludestart.h + + + parsers + /home/murrayc/checkout/gnome/libxml++/libxml++/parsers/ + dir_a5a40681709ed751decc24cd7289c9c5.html + domparser.h + parser.h + saxparser.h + textreader.h + + + validators + /home/murrayc/checkout/gnome/libxml++/libxml++/validators/ + dir_e3818dbe052c35541aa8102ff72444f2.html + dtdvalidator.h + schemavalidator.h + validator.h + + + index + libxml++ Reference Manual + index + description + features + basics + diff --git a/examples/Makefile.am b/examples/Makefile.am index 63e873e..1f43f08 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -25,6 +25,7 @@ check_PROGRAMS = \ dom_parser/dom_parser \ dom_parser_raw/dom_parser_raw \ dom_read_write/dom_read_write \ + dom_xinclude/dom_xinclude \ dom_xpath/dom_xpath \ dtdvalidation/dtdvalidation \ import_node/import_node \ @@ -49,6 +50,8 @@ dom_parser_raw_dom_parser_raw_SOURCES = \ dom_parser_raw/main.cc dom_read_write_dom_read_write_SOURCES = \ dom_read_write/main.cc +dom_xinclude_dom_xinclude_SOURCES = \ + dom_xinclude/main.cc dom_xpath_dom_xpath_SOURCES = \ dom_xpath/main.cc dtdvalidation_dtdvalidation_SOURCES = \ @@ -96,6 +99,9 @@ dist_noinst_DATA = \ dom_read_write/README \ dom_read_write/example.xml \ dom_read_write/example.dtd \ + dom_xinclude/example.xml \ + dom_xinclude/include1.txt \ + dom_xinclude/include2.xml \ dom_xpath/example.xml \ dtdvalidation/example.dtd \ import_node/example1.xml \ diff --git a/examples/Makefile.in b/examples/Makefile.in index 8d6605a..6477ed1 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,6 +56,7 @@ check_PROGRAMS = dom_build/dom_build$(EXEEXT) \ dom_parser/dom_parser$(EXEEXT) \ dom_parser_raw/dom_parser_raw$(EXEEXT) \ dom_read_write/dom_read_write$(EXEEXT) \ + dom_xinclude/dom_xinclude$(EXEEXT) \ dom_xpath/dom_xpath$(EXEEXT) \ dtdvalidation/dtdvalidation$(EXEEXT) \ import_node/import_node$(EXEEXT) \ @@ -105,6 +123,13 @@ dom_read_write_dom_read_write_LDADD = $(LDADD) dom_read_write_dom_read_write_DEPENDENCIES = \ $(top_builddir)/libxml++/libxml++-$(LIBXMLXX_API_VERSION).la \ $(am__DEPENDENCIES_1) +am_dom_xinclude_dom_xinclude_OBJECTS = dom_xinclude/main.$(OBJEXT) +dom_xinclude_dom_xinclude_OBJECTS = \ + $(am_dom_xinclude_dom_xinclude_OBJECTS) +dom_xinclude_dom_xinclude_LDADD = $(LDADD) +dom_xinclude_dom_xinclude_DEPENDENCIES = \ + $(top_builddir)/libxml++/libxml++-$(LIBXMLXX_API_VERSION).la \ + $(am__DEPENDENCIES_1) am_dom_xpath_dom_xpath_OBJECTS = dom_xpath/main.$(OBJEXT) dom_xpath_dom_xpath_OBJECTS = $(am_dom_xpath_dom_xpath_OBJECTS) dom_xpath_dom_xpath_LDADD = $(LDADD) @@ -221,6 +246,7 @@ SOURCES = $(dom_build_dom_build_SOURCES) \ $(dom_parser_dom_parser_SOURCES) \ $(dom_parser_raw_dom_parser_raw_SOURCES) \ $(dom_read_write_dom_read_write_SOURCES) \ + $(dom_xinclude_dom_xinclude_SOURCES) \ $(dom_xpath_dom_xpath_SOURCES) \ $(dtdvalidation_dtdvalidation_SOURCES) \ $(import_node_import_node_SOURCES) \ @@ -235,6 +261,7 @@ DIST_SOURCES = $(dom_build_dom_build_SOURCES) \ $(dom_parser_dom_parser_SOURCES) \ $(dom_parser_raw_dom_parser_raw_SOURCES) \ $(dom_read_write_dom_read_write_SOURCES) \ + $(dom_xinclude_dom_xinclude_SOURCES) \ $(dom_xpath_dom_xpath_SOURCES) \ $(dtdvalidation_dtdvalidation_SOURCES) \ $(import_node_import_node_SOURCES) \ @@ -244,6 +271,11 @@ DIST_SOURCES = $(dom_build_dom_build_SOURCES) \ $(sax_parser_entities_sax_parser_entities_SOURCES) \ $(schemavalidation_schemavalidation_SOURCES) \ $(textreader_textreader_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac DATA = $(dist_noinst_DATA) ETAGS = etags CTAGS = ctags @@ -313,6 +345,7 @@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MMDOCTOOLDIR = @MMDOCTOOLDIR@ NM = @NM@ @@ -345,6 +378,7 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ @@ -378,7 +412,6 @@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ @@ -416,6 +449,9 @@ dom_parser_raw_dom_parser_raw_SOURCES = \ dom_read_write_dom_read_write_SOURCES = \ dom_read_write/main.cc +dom_xinclude_dom_xinclude_SOURCES = \ + dom_xinclude/main.cc + dom_xpath_dom_xpath_SOURCES = \ dom_xpath/main.cc @@ -471,6 +507,9 @@ dist_noinst_DATA = \ dom_read_write/README \ dom_read_write/example.xml \ dom_read_write/example.dtd \ + dom_xinclude/example.xml \ + dom_xinclude/include1.txt \ + dom_xinclude/include2.xml \ dom_xpath/example.xml \ dtdvalidation/example.dtd \ import_node/example1.xml \ @@ -588,6 +627,17 @@ dom_read_write/main.$(OBJEXT): dom_read_write/$(am__dirstamp) \ dom_read_write/dom_read_write$(EXEEXT): $(dom_read_write_dom_read_write_OBJECTS) $(dom_read_write_dom_read_write_DEPENDENCIES) $(EXTRA_dom_read_write_dom_read_write_DEPENDENCIES) dom_read_write/$(am__dirstamp) @rm -f dom_read_write/dom_read_write$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(dom_read_write_dom_read_write_OBJECTS) $(dom_read_write_dom_read_write_LDADD) $(LIBS) +dom_xinclude/$(am__dirstamp): + @$(MKDIR_P) dom_xinclude + @: > dom_xinclude/$(am__dirstamp) +dom_xinclude/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) dom_xinclude/$(DEPDIR) + @: > dom_xinclude/$(DEPDIR)/$(am__dirstamp) +dom_xinclude/main.$(OBJEXT): dom_xinclude/$(am__dirstamp) \ + dom_xinclude/$(DEPDIR)/$(am__dirstamp) +dom_xinclude/dom_xinclude$(EXEEXT): $(dom_xinclude_dom_xinclude_OBJECTS) $(dom_xinclude_dom_xinclude_DEPENDENCIES) $(EXTRA_dom_xinclude_dom_xinclude_DEPENDENCIES) dom_xinclude/$(am__dirstamp) + @rm -f dom_xinclude/dom_xinclude$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(dom_xinclude_dom_xinclude_OBJECTS) $(dom_xinclude_dom_xinclude_LDADD) $(LIBS) dom_xpath/$(am__dirstamp): @$(MKDIR_P) dom_xpath @: > dom_xpath/$(am__dirstamp) @@ -713,6 +763,7 @@ mostlyclean-compile: -rm -f dom_parser/main.$(OBJEXT) -rm -f dom_parser_raw/main.$(OBJEXT) -rm -f dom_read_write/main.$(OBJEXT) + -rm -f dom_xinclude/main.$(OBJEXT) -rm -f dom_xpath/main.$(OBJEXT) -rm -f dtdvalidation/main.$(OBJEXT) -rm -f import_node/main.$(OBJEXT) @@ -737,6 +788,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@dom_parser/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@dom_parser_raw/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@dom_read_write/$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@dom_xinclude/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@dom_xpath/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@dtdvalidation/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@import_node/$(DEPDIR)/main.Po@am__quote@ @@ -787,6 +839,7 @@ clean-libtool: -rm -rf dom_parser/.libs dom_parser/_libs -rm -rf dom_parser_raw/.libs dom_parser_raw/_libs -rm -rf dom_read_write/.libs dom_read_write/_libs + -rm -rf dom_xinclude/.libs dom_xinclude/_libs -rm -rf dom_xpath/.libs dom_xpath/_libs -rm -rf dtdvalidation/.libs dtdvalidation/_libs -rm -rf import_node/.libs import_node/_libs @@ -1015,6 +1068,8 @@ distclean-generic: -rm -f dom_parser_raw/$(am__dirstamp) -rm -f dom_read_write/$(DEPDIR)/$(am__dirstamp) -rm -f dom_read_write/$(am__dirstamp) + -rm -f dom_xinclude/$(DEPDIR)/$(am__dirstamp) + -rm -f dom_xinclude/$(am__dirstamp) -rm -f dom_xpath/$(DEPDIR)/$(am__dirstamp) -rm -f dom_xpath/$(am__dirstamp) -rm -f dtdvalidation/$(DEPDIR)/$(am__dirstamp) @@ -1043,7 +1098,7 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am - -rm -rf dom_build/$(DEPDIR) dom_parse_entities/$(DEPDIR) dom_parser/$(DEPDIR) dom_parser_raw/$(DEPDIR) dom_read_write/$(DEPDIR) dom_xpath/$(DEPDIR) dtdvalidation/$(DEPDIR) import_node/$(DEPDIR) sax_exception/$(DEPDIR) sax_parser/$(DEPDIR) sax_parser_build_dom/$(DEPDIR) sax_parser_entities/$(DEPDIR) schemavalidation/$(DEPDIR) textreader/$(DEPDIR) + -rm -rf dom_build/$(DEPDIR) dom_parse_entities/$(DEPDIR) dom_parser/$(DEPDIR) dom_parser_raw/$(DEPDIR) dom_read_write/$(DEPDIR) dom_xinclude/$(DEPDIR) dom_xpath/$(DEPDIR) dtdvalidation/$(DEPDIR) import_node/$(DEPDIR) sax_exception/$(DEPDIR) sax_parser/$(DEPDIR) sax_parser_build_dom/$(DEPDIR) sax_parser_entities/$(DEPDIR) schemavalidation/$(DEPDIR) textreader/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -1089,7 +1144,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf dom_build/$(DEPDIR) dom_parse_entities/$(DEPDIR) dom_parser/$(DEPDIR) dom_parser_raw/$(DEPDIR) dom_read_write/$(DEPDIR) dom_xpath/$(DEPDIR) dtdvalidation/$(DEPDIR) import_node/$(DEPDIR) sax_exception/$(DEPDIR) sax_parser/$(DEPDIR) sax_parser_build_dom/$(DEPDIR) sax_parser_entities/$(DEPDIR) schemavalidation/$(DEPDIR) textreader/$(DEPDIR) + -rm -rf dom_build/$(DEPDIR) dom_parse_entities/$(DEPDIR) dom_parser/$(DEPDIR) dom_parser_raw/$(DEPDIR) dom_read_write/$(DEPDIR) dom_xinclude/$(DEPDIR) dom_xpath/$(DEPDIR) dtdvalidation/$(DEPDIR) import_node/$(DEPDIR) sax_exception/$(DEPDIR) sax_parser/$(DEPDIR) sax_parser_build_dom/$(DEPDIR) sax_parser_entities/$(DEPDIR) schemavalidation/$(DEPDIR) textreader/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff --git a/examples/README b/examples/README index c72a324..573e64d 100644 --- a/examples/README +++ b/examples/README @@ -1,23 +1,36 @@ -Examples: Enable building with the --enable-examples argument to configure +Examples: Built and executed by "make check" Simple parsing examples: dom_parser - Shows how to parse an XML Document with the DOM parser. sax_parser - Shows how to parse an XML Document with the SAX parser. + textreader - Shows how to parse an XML Document with the TextReader parser. -Building XML doxuments: +Building XML documents: dom_build - Shows how to build an XML document using the DOM Parser API. - sax_parser_build_dom - Shows how to parse an XML document with the SAX parser, building a separate custom DOM as you parse. - dom_read_write: Reads an XML document with the DOM parser and writes it again. The output should be the same as the input. + sax_parser_build_dom - Shows how to parse an XML document with the SAX parser, + building a separate custom DOM as you parse. + dom_read_write: Reads an XML document with the DOM parser and writes it again. + The output should be the same as the input. import_node: Adds a part of an XML document to another, using the DOM parser. + dom_xinclude: Adds the contents of other files to an XML document, using the + DOM parser and XInclude processing. Entity parsing: - dom_parser_entities: Shows how to detect entity references when using the DOM parser. - sax_parser_entities: Shows how to detect (and maybe resolve) entity references when using the SAX Parser. + dom_parse_entities: Shows how to detect entity references when using the DOM parser. + sax_parser_entities: Shows how to detect (and maybe resolve) entity references + when using the SAX Parser. XPath: - dom_xpath: Shows how to get XML nodes by specifying them with an XPath, when using the DOM parser. + dom_xpath: Shows how to get XML nodes by specifying them with an XPath, + when using the DOM parser. Others: - sax_exception: Shows how to implement a libxml++ exception that can be thrown by your SAX parser. - dom_parser_raw: Test parse_memory_raw() by converting a UTF-8-encoded XML document to UCS-2 and passing the raw memory to the parser. + sax_exception: Shows how to implement a libxml++ exception that can be thrown + by your SAX parser. + dom_parser_raw: Test parse_memory_raw() by converting a UTF-8-encoded XML document + to UCS-2 and passing the raw memory to the parser. + dtdvalidation: Shows how to parse a DTD (document type definition), + and use it for validating a document. + schemavalidation: Shows how to parse a schema definition, and use it for + validating a document, using the DOM parser. diff --git a/examples/dom_xinclude/example.xml b/examples/dom_xinclude/example.xml new file mode 100644 index 0000000..e99a4a4 --- /dev/null +++ b/examples/dom_xinclude/example.xml @@ -0,0 +1,7 @@ + + +

    + Did not find include1.txt. +

    + +
    diff --git a/examples/dom_xinclude/include1.txt b/examples/dom_xinclude/include1.txt new file mode 100644 index 0000000..6683a84 --- /dev/null +++ b/examples/dom_xinclude/include1.txt @@ -0,0 +1 @@ +This is the contents of file include1.txt. \ No newline at end of file diff --git a/examples/dom_xinclude/include2.xml b/examples/dom_xinclude/include2.xml new file mode 100644 index 0000000..19b2c9d --- /dev/null +++ b/examples/dom_xinclude/include2.xml @@ -0,0 +1,4 @@ + + +

    This is the contents of file include2.xml.

    +
    diff --git a/examples/dom_xinclude/main.cc b/examples/dom_xinclude/main.cc new file mode 100644 index 0000000..601348b --- /dev/null +++ b/examples/dom_xinclude/main.cc @@ -0,0 +1,198 @@ +/* Copyright (C) 2012 The libxml++ development team + * + * This file is part of libxml++. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +void print_node(const xmlpp::Node* node, unsigned int indentation = 0) +{ + const Glib::ustring indent(indentation, ' '); + + const xmlpp::ContentNode* nodeContent = dynamic_cast(node); + const xmlpp::TextNode* nodeText = dynamic_cast(node); + const xmlpp::CommentNode* nodeComment = dynamic_cast(node); + + //Let's ignore the indenting - you don't always want to do this. + if (nodeText && nodeText->is_white_space()) + return; + + const Glib::ustring nodename = node->get_name(); + + if (!nodeText && !nodeComment && !nodename.empty()) //Let's not say "name: text". + { + const Glib::ustring namespace_prefix = node->get_namespace_prefix(); + + std::cout << indent << "Node name = "; + if (!namespace_prefix.empty()) + std::cout << namespace_prefix << ":"; + std::cout << nodename << std::endl; + } + else if (nodeText) //Let's say when it's text. + { + std::cout << indent << "Text Node" << std::endl; + } + + //Treat the various node types differently: + if (nodeText) + { + std::cout << indent << "text = \"" << nodeText->get_content() << "\"" << std::endl; + } + else if (nodeComment) + { + std::cout << indent << "comment = " << nodeComment->get_content() << std::endl; + } + else if (nodeContent) + { + std::cout << indent << "content = " << nodeContent->get_content() << std::endl; + } + else if (const xmlpp::Element* nodeElement = dynamic_cast(node)) + { + //A normal Element node: + std::cout << indent << " Element line = " << node->get_line() << std::endl; + + //Print attributes: + const xmlpp::Element::AttributeList attributes = nodeElement->get_attributes(); + for (xmlpp::Element::AttributeList::const_iterator iter = attributes.begin(); iter != attributes.end(); ++iter) + { + const xmlpp::Attribute* attribute = *iter; + const Glib::ustring namespace_prefix = attribute->get_namespace_prefix(); + + std::cout << indent << " Attribute "; + if (!namespace_prefix.empty()) + std::cout << namespace_prefix << ":"; + std::cout << attribute->get_name() << " = " << attribute->get_value() << std::endl; + } + + const xmlpp::Attribute* attribute = nodeElement->get_attribute("title"); + if (attribute) + { + std::cout << indent << "title = " << attribute->get_value() << std::endl; + } + } + else if (dynamic_cast(node)) + { + std::cout << indent << " " << "XIncludeStart line = " << node->get_line() << std::endl; + } + else if (dynamic_cast(node)) + { + std::cout << indent << " " << "XIncludeEnd" << std::endl; + } + + if (!nodeContent) + { + //Recurse through child nodes: + xmlpp::Node::NodeList list = node->get_children(); + for (xmlpp::Node::NodeList::iterator iter = list.begin(); iter != list.end(); ++iter) + { + print_node(*iter, indentation + 2); //recursive + } + } +} + +int main(int argc, char* argv[]) +{ + // Set the global C++ locale to the user-configured locale, + // so we can use std::cout with UTF-8, via Glib::ustring, without exceptions. + std::locale::global(std::locale("")); + + bool validate = false; + bool set_throw_messages = false; + bool throw_messages = false; + bool substitute_entities = true; + bool generate_xinclude_nodes = true; + + int argi = 1; + while (argc > argi && *argv[argi] == '-') // option + { + switch (*(argv[argi]+1)) + { + case 'v': + validate = true; + break; + case 't': + set_throw_messages = true; + throw_messages = true; + break; + case 'e': + set_throw_messages = true; + throw_messages = false; + break; + case 'E': + substitute_entities = false; + break; + case 'X': + generate_xinclude_nodes = false; + break; + default: + std::cout << "Usage: " << argv[0] << " [-v] [-t] [-e] [-x] [filename]" << std::endl + << " -v Validate" << std::endl + << " -t Throw messages in an exception" << std::endl + << " -e Write messages to stderr" << std::endl + << " -E Do not substitute entities" << std::endl + << " -X Do not generate XInclude nodes" << std::endl; + return EXIT_FAILURE; + } + argi++; + } + std::string filepath; + if (argc > argi) + filepath = argv[argi]; //Allow the user to specify a different XML file to parse. + else + filepath = "example.xml"; + + try + { + xmlpp::DomParser parser; + if (validate) + parser.set_validate(); + if (set_throw_messages) + parser.set_throw_messages(throw_messages); + //We can have the text resolved/unescaped automatically. + parser.set_substitute_entities(substitute_entities); + parser.parse_file(filepath); + if (parser) + { + //Walk the tree: + xmlpp::Node* pNode = parser.get_document()->get_root_node(); //deleted by DomParser. + print_node(pNode); + + std::cout << std::endl << ">>>>> Number of XInclude substitutions: " + << parser.get_document()->process_xinclude(generate_xinclude_nodes) + << std::endl << std::endl; + pNode = parser.get_document()->get_root_node(); + print_node(pNode); + + const Glib::ustring whole = parser.get_document()->write_to_string(); + std::cout << std::endl << ">>>>> XML after XInclude processing: " << std::endl + << whole << std::endl; + } + } + catch (const std::exception& ex) + { + std::cerr << "Exception caught: " << ex.what() << std::endl; + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} + diff --git a/examples/dtdvalidation/main.cc b/examples/dtdvalidation/main.cc index b235b14..1e2f613 100644 --- a/examples/dtdvalidation/main.cc +++ b/examples/dtdvalidation/main.cc @@ -54,9 +54,10 @@ int main(int argc, char* argv[]) std::cerr << "Validation successful (not expected)" << std::endl; return_code = EXIT_FAILURE; } - catch( const xmlpp::validity_error& ) + catch (const xmlpp::exception& ex) { std::cout << "Error validating the document (expected)" << std::endl; + std::cout << ex.what() << std::endl; } /* xmlpp::Element* nodeRoot2 = */document.create_root_node("example"); @@ -66,19 +67,20 @@ int main(int argc, char* argv[]) try { - xmlpp::DtdValidator validator2( dtdfilepath ); - validator2.validate( &document ); + validator.validate( &document ); std::cout << "Validation successful" << std::endl; } - catch( const xmlpp::validity_error& ) + catch (const xmlpp::exception& ex) { std::cerr << "Error validating the document" << std::endl; + std::cerr << ex.what() << std::endl; return_code = EXIT_FAILURE; } } - catch( const xmlpp::parse_error& ) + catch (const xmlpp::exception& ex) { std::cerr << "Error parsing the dtd" << std::endl; + std::cerr << ex.what() << std::endl; return_code = EXIT_FAILURE; } return return_code; diff --git a/examples/sax_parser/main.cc b/examples/sax_parser/main.cc index ffe82e6..470858a 100644 --- a/examples/sax_parser/main.cc +++ b/examples/sax_parser/main.cc @@ -26,6 +26,7 @@ #include #include #include +#include // std::memset() #include "myparser.h" @@ -47,7 +48,7 @@ main(int argc, char* argv[]) try { MySaxParser parser; - parser.set_substitute_entities(true); // + parser.set_substitute_entities(true); parser.parse_file(filepath); } catch(const xmlpp::exception& ex) @@ -56,35 +57,42 @@ main(int argc, char* argv[]) return_code = EXIT_FAILURE; } - - // Demonstrate incremental parsing, sometimes useful for network connections: + // Incremental parsing, sometimes useful for network connections: + try { - //std::cout << "Incremental SAX Parser:" << std:endl; + std::cout << std::endl << "Incremental SAX Parser:" << std::endl; std::ifstream is(filepath.c_str()); - /* char buffer[64]; - const size_t buffer_size = sizeof(buffer) / sizeof(char); */ + if (!is) + throw xmlpp::exception("Could not open file " + filepath); + + char buffer[64]; + const size_t buffer_size = sizeof(buffer) / sizeof(char); //Parse the file: MySaxParser parser; - parser.parse_file(filepath); - - //Or parse chunks (though this seems to have problems): -/* + parser.set_substitute_entities(true); do { - memset(buffer, 0, buffer_size); + std::memset(buffer, 0, buffer_size); is.read(buffer, buffer_size-1); - if(is && is.gcount()) + if(is.gcount()) { - Glib::ustring input(buffer, is.gcount()); + // We use Glib::ustring::ustring(InputIterator begin, InputIterator end) + // instead of Glib::ustring::ustring( const char*, size_type ) because it + // expects the length of the string in characters, not in bytes. + Glib::ustring input(buffer, buffer+is.gcount()); parser.parse_chunk(input); } } while(is); parser.finish_chunk_parsing(); -*/ + } + catch(const xmlpp::exception& ex) + { + std::cerr << "Incremental parsing, libxml++ exception: " << ex.what() << std::endl; + return_code = EXIT_FAILURE; } return return_code; diff --git a/examples/schemavalidation/main.cc b/examples/schemavalidation/main.cc index 1c5d38a..1857bd1 100644 --- a/examples/schemavalidation/main.cc +++ b/examples/schemavalidation/main.cc @@ -51,24 +51,29 @@ int main(int argc, char* argv[]) try { - xmlpp::DomParser parser(docfilepath); xmlpp::SchemaValidator validator(schemafilepath); + Glib::ustring phase; try { + phase = "parsing"; + xmlpp::DomParser parser(docfilepath); + + phase = "validating"; validator.validate( parser.get_document() ); std::cout << "Valid document" << std::endl; } - catch( const xmlpp::validity_error& error) + catch (const xmlpp::exception& ex) { - std::cerr << "Error validating the document" << std::endl; - std::cerr << error.what(); + std::cerr << "Error " << phase << " the document" << std::endl; + std::cerr << ex.what() << std::endl; return EXIT_FAILURE; } } - catch( const xmlpp::parse_error& error) + catch (const xmlpp::exception& ex) { - std::cerr << "Error parsing the schema: " << error.what() << std::endl; + std::cerr << "Error parsing the schema" << std::endl; + std::cerr << ex.what() << std::endl; return EXIT_FAILURE; } return EXIT_SUCCESS; diff --git a/libxml++/document.cc b/libxml++/document.cc index 06cf137..6bc3112 100644 --- a/libxml++/document.cc +++ b/libxml++/document.cc @@ -16,8 +16,121 @@ #include #include +#include +#include // XML_PARSE_NOXINCNODE #include +#include + +namespace // anonymous +{ +typedef std::map NodeMap; + +// Find all C++ wrappers of 'node' and its descendants. +// Compare xmlpp::Node::free_wrappers(). +void find_wrappers(xmlNode* node, NodeMap& node_map) +{ + if (!node) + return; + + //If an entity declaration contains an entity reference, there can be cyclic + //references between entity declarations and entity references. (It's not + //a tree.) We must avoid an infinite recursion. + //Compare xmlFreeNode(), which frees the children of all node types except + //XML_ENTITY_REF_NODE. + if (node->type != XML_ENTITY_REF_NODE) + { + // Walk the children list. + for (xmlNode* child = node->children; child; child = child->next) + find_wrappers(child, node_map); + } + + // Find the local one + bool has_attributes = true; + switch (node->type) + { + // Node types that have no attributes. + // These are not represented by struct xmlNode. + case XML_DTD_NODE: + case XML_ATTRIBUTE_NODE: + case XML_ELEMENT_DECL: + case XML_ATTRIBUTE_DECL: + case XML_ENTITY_DECL: + case XML_DOCUMENT_NODE: + has_attributes = false; + break; + default: + break; + } + + if (node->_private) + node_map[static_cast(node->_private)] = node->type; + + if (!has_attributes) + return; + + //Walk the attributes list. + //Note that some "derived" structs have a different layout, so + //_xmlNode::properties would be a nonsense value, leading to crashes + //(and shown as valgrind warnings), so we return above, to avoid + //checking it here. + for (xmlAttr* attr = node->properties; attr; attr = attr->next) + find_wrappers(reinterpret_cast(attr), node_map); +} + +// Remove from 'node_map' the pointers to the C++ wrappers that are found with +// unchanged type in 'node' and its descendants. +void remove_found_wrappers(xmlNode* node, NodeMap& node_map) +{ + if (!node) + return; + + if (node->type != XML_ENTITY_REF_NODE) + { + // Walk the children list. + for (xmlNode* child = node->children; child; child = child->next) + remove_found_wrappers(child, node_map); + } + + // Find the local one + bool has_attributes = true; + switch (node->type) + { + // Node types that have no attributes + case XML_DTD_NODE: + case XML_ATTRIBUTE_NODE: + case XML_ELEMENT_DECL: + case XML_ATTRIBUTE_DECL: + case XML_ENTITY_DECL: + case XML_DOCUMENT_NODE: + has_attributes = false; + break; + default: + break; + } + + if (node->_private) + { + const NodeMap::iterator iter = + node_map.find(static_cast(node->_private)); + if (iter != node_map.end()) + { + if (iter->second == node->type) + node_map.erase(iter); + else + node->_private = 0; // node->type has changed. The wrapper will be deleted. + } + } + + if (!has_attributes) + return; + + // Walk the attributes list. + for (xmlAttr* attr = node->properties; attr; attr = attr->next) + remove_found_wrappers(reinterpret_cast(attr), node_map); + +} +} // anonymous namespace xmlpp { @@ -59,6 +172,8 @@ Document::Init Document::init_; Document::Document(const Glib::ustring& version) : impl_(xmlNewDoc((const xmlChar*)version.c_str())) { + if (!impl_) + throw internal_error("Could not create Document."); impl_->_private = this; } @@ -125,7 +240,16 @@ Element* Document::create_root_node(const Glib::ustring& name, const Glib::ustring& ns_prefix) { xmlNode* node = xmlNewDocNode(impl_, 0, (const xmlChar*)name.c_str(), 0); - xmlDocSetRootElement(impl_, node); + if (!node) + throw internal_error("Could not create root element node " + name); + + node = xmlDocSetRootElement(impl_, node); + if (node) + { + // An old root element node has been replaced. + Node::free_wrappers(node); + xmlFreeNode(node); + } Element* element = get_root_node(); @@ -141,28 +265,38 @@ Element* Document::create_root_node(const Glib::ustring& name, Element* Document::create_root_node_by_import(const Node* node, bool recursive) { + if (!node) + return 0; + //Create the node, by copying: xmlNode* imported_node = xmlDocCopyNode(const_cast(node->cobj()), impl_, recursive); if (!imported_node) { - throw exception("Unable to import node"); + throw exception("Unable to copy the node that shall be imported"); } - xmlDocSetRootElement(impl_, imported_node); + xmlNode* old_node = xmlDocSetRootElement(impl_, imported_node); + if (old_node) + { + // An old root element node has been replaced. + Node::free_wrappers(old_node); + xmlFreeNode(old_node); + } return get_root_node(); } CommentNode* Document::add_comment(const Glib::ustring& content) { - xmlNode* node = xmlNewComment((const xmlChar*)content.c_str()); - if(!node) + xmlNode* child = xmlNewComment((const xmlChar*)content.c_str()); + + // Use the result, because child can be freed when merging text nodes: + xmlNode* node = xmlAddChild((xmlNode*)impl_, child); + if (!node) { - throw internal_error("Cannot create comment node"); + xmlFreeNode(child); + throw internal_error("Could not add comment node \"" + content + "\""); } - - // Use the result, because node can be freed when merging text nodes: - node = xmlAddChild( (xmlNode*)impl_, node); Node::create_wrapper(node); return static_cast(node->_private); } @@ -170,14 +304,15 @@ CommentNode* Document::add_comment(const Glib::ustring& content) ProcessingInstructionNode* Document::add_processing_instruction( const Glib::ustring& name, const Glib::ustring& content) { - xmlNode* node = xmlNewDocPI(impl_, (const xmlChar*)name.c_str(), (const xmlChar*)content.c_str()); - if(!node) + xmlNode* child = xmlNewDocPI(impl_, (const xmlChar*)name.c_str(), (const xmlChar*)content.c_str()); + xmlNode* node = xmlAddChild((xmlNode*)impl_, child); + if (!node) { - throw internal_error("Cannot create processing instruction node"); + xmlFreeNode(child); + throw internal_error("Could not add processing instruction node " + name); } - node = xmlAddChild((xmlNode*)impl_, node); Node::create_wrapper(node); - return node ? static_cast(node->_private) : 0; + return static_cast(node->_private); } void Document::write_to_file(const Glib::ustring& filename, const Glib::ustring& encoding) @@ -217,12 +352,13 @@ void Document::do_write_to_file( { KeepBlanks k(KeepBlanks::Default); xmlIndentTreeOutput = format?1:0; + xmlResetLastError(); const int result = xmlSaveFormatFileEnc(filename.c_str(), impl_, get_encoding_or_utf8(encoding), format?1:0); if(result == -1) { - throw exception("do_write_to_file() failed."); + throw exception("do_write_to_file() failed.\n" + format_xml_error()); } } @@ -235,12 +371,13 @@ Glib::ustring Document::do_write_to_string( xmlChar* buffer = 0; int length = 0; + xmlResetLastError(); xmlDocDumpFormatMemoryEnc(impl_, &buffer, &length, get_encoding_or_utf8(encoding), format?1:0); if(!buffer) { - throw exception("do_write_to_string() failed."); + throw exception("do_write_to_string() failed.\n" + format_xml_error()); } // Create a Glib::ustring copy of the buffer @@ -260,12 +397,13 @@ void Document::do_write_to_stream(std::ostream& output, const Glib::ustring& enc { // TODO assert document encoding is UTF-8 if encoding is different than UTF-8 OStreamOutputBuffer buffer(output, encoding); + xmlResetLastError(); const int result = xmlSaveFormatFileTo(buffer.cobj(), impl_, get_encoding_or_utf8(encoding), format ? 1 : 0); if(result == -1) { - throw exception("do_write_to_stream() failed."); + throw exception("do_write_to_stream() failed.\n" + format_xml_error()); } } @@ -273,10 +411,50 @@ void Document::set_entity_declaration(const Glib::ustring& name, XmlEntityType t const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content) { - xmlAddDocEntity( impl_, (const xmlChar*) name.c_str(), type, + xmlEntity* entity = xmlAddDocEntity( impl_, (const xmlChar*) name.c_str(), type, publicId.empty() ? (const xmlChar*)0 : (const xmlChar*)publicId.c_str(), systemId.empty() ? (const xmlChar*)0 : (const xmlChar*)systemId.c_str(), (const xmlChar*) content.c_str() ); + if (!entity) + throw internal_error("Could not add entity declaration " + name); +} + +int Document::process_xinclude(bool generate_xinclude_nodes) +{ + NodeMap node_map; + + xmlNode* root = xmlDocGetRootElement(impl_); + + find_wrappers(root, node_map); + + xmlResetLastError(); + const int n_substitutions = xmlXIncludeProcessTreeFlags(root, + generate_xinclude_nodes ? 0 : XML_PARSE_NOXINCNODE); + + remove_found_wrappers(reinterpret_cast(impl_), node_map); + // Delete wrappers of nodes that have been deleted or have got their type changed. + for (NodeMap::iterator iter = node_map.begin(); iter != node_map.end(); ++iter) + { + switch (iter->second) + { + case XML_DTD_NODE: + delete reinterpret_cast(iter->first); + break; + case XML_DOCUMENT_NODE: + delete reinterpret_cast(iter->first); + break; + default: + delete iter->first; // Node* + break; + } + } + + if (n_substitutions < 0) + { + throw exception("Couldn't process XInclude\n" + format_xml_error()); + } + + return n_substitutions; } _xmlEntity* Document::get_entity(const Glib::ustring& name) diff --git a/libxml++/document.h b/libxml++/document.h index 5c2e50e..798b332 100644 --- a/libxml++/document.h +++ b/libxml++/document.h @@ -56,24 +56,39 @@ class Document : NonCopyable virtual ~Init(); }; - friend class DomParser; friend class SaxParser; public: + /** Create a new document. + * @param version XML version. + * @throws xmlpp::internal_error If memory allocation fails. + */ explicit Document(const Glib::ustring& version = "1.0"); -protected: - Document(_xmlDoc* doc); + /** Create a new C++ wrapper for an xmlDoc struct. + * The created xmlpp::Document takes ownership of the xmlDoc. + * When the Document is deleted, so is the xmlDoc and all its nodes. + * @param doc A pointer to an xmlDoc struct. Must not be 0. + */ + explicit Document(_xmlDoc* doc); -public: virtual ~Document(); /** @return The encoding used in the source from which the document has been loaded. - */ + */ Glib::ustring get_encoding() const; + /** Get the internal subset of this document. + * @returns A pointer to the DTD, or 0 if not found. + */ Dtd* get_internal_subset() const; + /** Create the internal subset of this document. + * If the document already has an internal subset, a new one is not created. + * @param name The DTD name. + * @param external_id The external (PUBLIC) ID, or an empty string. + * @param system_id The system ID, or an empty string. + */ void set_internal_subset(const Glib::ustring& name, const Glib::ustring& external_id, const Glib::ustring& system_id); @@ -81,27 +96,36 @@ public: //TODO: There should be a const and non-const version. //See the patch here: https://bugzilla.gnome.org/show_bug.cgi?id=632522 /** Return the root node. - * This function does _not_ create a default root node if it doesn't exist. - * @return A pointer to the root node if it exists, 0 otherwise. + * This function does @b not create a default root node if it doesn't exist. + * @return A pointer to the root node if it exists, 0 otherwise. */ Element* get_root_node() const; - /** Creates the root node. + /** Create the root element node. + * If the document already contains a root element node, it is replaced, and + * the old root element node and all its descendants are deleted. * @param name The node's name. - * @param ns_uri The namespace URI. A namespace declaration will be added to this node, because it could not have - been declared before. - * @param ns_prefix The namespace prefix to associate with the namespace. If no namespace prefix is specified then - the namespace URI will be the default namespace. - * @return A pointer to the new root node + * @param ns_uri The namespace URI. A namespace declaration will be added to + * this node, because it could not have been declared before. + * @param ns_prefix The namespace prefix to associate with the namespace. + * If no namespace prefix is specified then the namespace URI will be the default namespace. + * @return A pointer to the new root node. + * @throws xmlpp::internal_error If memory allocation fails. + * @throws xmlpp::exception If a new namespace node cannot be created. */ Element* create_root_node(const Glib::ustring& name, const Glib::ustring& ns_uri = Glib::ustring(), const Glib::ustring& ns_prefix = Glib::ustring() ); - /** Creates a root node by importing the node from another document, without affecting the source node. - * @param node The node to copy and insert as the root node of the document + /** Create a root element node by importing the node from another document, + * without affecting the source node. + * If the document already contains a root element node, it is replaced, and + * the old root element node and all its descendants are deleted. + * @param node The node to copy and insert as the root node of the document. + * It must be an element node. * @param recursive Whether to import the child nodes also. Defaults to true. * @return A pointer to the new root node + * @throws xmlpp::exception If the node can't be copied. */ Element* create_root_node_by_import(const Node* node, bool recursive = true); @@ -109,6 +133,7 @@ public: /** Append a new comment node. * @param content The text. This should be unescaped - see ContentNode::set_content(). * @returns The new comment node. + * @throws xmlpp::internal_error */ CommentNode* add_comment(const Glib::ustring& content); @@ -119,7 +144,7 @@ public: * @param name The name of the application to which the instruction is directed. * @param content The content of the instruction. This should be unescaped - see ContentNode::set_content(). * @returns The new processing instruction node. - * @throws internal_error + * @throws xmlpp::internal_error */ ProcessingInstructionNode* add_processing_instruction( const Glib::ustring& name, const Glib::ustring& content); @@ -128,6 +153,7 @@ public: /** Write the document to a file. * @param filename * @param encoding If not provided, UTF-8 is used + * @throws xmlpp::exception */ void write_to_file(const Glib::ustring& filename, const Glib::ustring& encoding = Glib::ustring()); @@ -136,11 +162,14 @@ public: * but may insert unwanted significant whitespaces. Use with care ! * @param filename * @param encoding If not provided, UTF-8 is used + * @throws xmlpp::exception */ void write_to_file_formatted(const Glib::ustring& filename, const Glib::ustring& encoding = Glib::ustring()); /** Write the document to the memory. * @param encoding If not provided, UTF-8 is used + * @returns The written document. + * @throws xmlpp::exception */ Glib::ustring write_to_string(const Glib::ustring& encoding = Glib::ustring()); @@ -148,13 +177,16 @@ public: * The output is formatted by inserting whitespaces, which is easier to read for a human, * but may insert unwanted significant whitespaces. Use with care ! * @param encoding If not provided, UTF-8 is used - * @return The written document. + * @returns The written document. + * @throws xmlpp::exception */ Glib::ustring write_to_string_formatted(const Glib::ustring& encoding = Glib::ustring()); /** Write the document to a std::ostream. * @param output A reference to the stream in which the document will be written * @param encoding If not provided, UTF-8 is used + * @throws xmlpp::exception + * @throws xmlpp::internal_error * @warning This method is much less efficient than write_to_string if you want to dump the * document to a buffer or the standard output. Writing to a fstream is almost as fast as write_to_file */ @@ -165,6 +197,8 @@ public: * but may insert unwanted significant whitespaces. Use with care ! * @param output A reference to the stream in which the document will be written * @param encoding If not provided, UTF-8 is used + * @throws xmlpp::exception + * @throws xmlpp::internal_error * @warning See write_to_stream */ void write_to_stream_formatted(std::ostream & output, const Glib::ustring& encoding = Glib::ustring()); @@ -176,11 +210,28 @@ public: * @param systemId The system ID of the subset. * @param content The value of the Entity. In entity reference substitutions, this * is the replacement value. + * @throws xmlpp::internal_error */ virtual void set_entity_declaration(const Glib::ustring& name, XmlEntityType type, const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content); + /** Perform XInclude substitution on the XML document. + * XInclude substitution may both add and delete nodes in the document, + * as well as change the type of some nodes. All pointers to deleted nodes + * and nodes whose type is changed become invalid. + * (The node type represented by an underlying xmlNode struct can change. + * The type of a C++ wrapper can't change. The old wrapper is deleted, and a + * new one is created if and when it's required.) + * + * @newin{2,36} + * + * @param generate_xinclude_nodes Generate XIncludeStart and XIncludeEnd nodes. + * @returns The number of substitutions. + * @throws xmlpp::exception + */ + int process_xinclude(bool generate_xinclude_nodes = true); + ///Access the underlying libxml implementation. _xmlDoc* cobj(); @@ -191,7 +242,7 @@ protected: /** Retrieve an Entity. * The entity can be from an external subset or internally declared. * @param name The name of the entity to get. - * @returns A pointer to the libxml2 entity structure. + * @returns A pointer to the libxml2 entity structure, or 0 if not found. */ _xmlEntity* get_entity(const Glib::ustring& name); diff --git a/libxml++/libxml++.h b/libxml++/libxml++.h index 05a5806..91c2dd0 100644 --- a/libxml++/libxml++.h +++ b/libxml++/libxml++.h @@ -53,11 +53,15 @@ #include #include #include +#include #include #include #include #include +#include #include +#include +#include #include #include #include diff --git a/libxml++/nodes/element.cc b/libxml++/nodes/element.cc index 2e3f786..73a128a 100644 --- a/libxml++/nodes/element.cc +++ b/libxml++/nodes/element.cc @@ -157,13 +157,17 @@ TextNode* Element::add_child_text(const Glib::ustring& content) { if(cobj()->type == XML_ELEMENT_NODE) { - xmlNode* node = xmlNewText((const xmlChar*)content.c_str()); + xmlNode* child = xmlNewText((const xmlChar*)content.c_str()); - // Use the result, because node can be freed when merging text nodes: - node = xmlAddChild(cobj(), node); - - Node::create_wrapper(node); - return static_cast(node->_private); + // Use the result, because child can be freed when merging text nodes: + xmlNode* node = xmlAddChild(cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add text node \"" + content + "\""); + } + Node::create_wrapper(node); + return static_cast(node->_private); } return 0; } @@ -175,13 +179,17 @@ TextNode* Element::add_child_text(xmlpp::Node* previous_sibling, const Glib::ust if(cobj()->type == XML_ELEMENT_NODE) { - xmlNode* node = xmlNewText((const xmlChar*)content.c_str()); + xmlNode* child = xmlNewText((const xmlChar*)content.c_str()); - // Use the result, because node can be freed when merging text nodes: - node = xmlAddNextSibling(previous_sibling->cobj(), node); - - Node::create_wrapper(node); - return static_cast(node->_private); + // Use the result, because child can be freed when merging text nodes: + xmlNode* node = xmlAddNextSibling(previous_sibling->cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add text node \"" + content + "\""); + } + Node::create_wrapper(node); + return static_cast(node->_private); } return 0; } @@ -193,13 +201,17 @@ TextNode* Element::add_child_text_before(xmlpp::Node* next_sibling, const Glib:: if(cobj()->type == XML_ELEMENT_NODE) { - xmlNode* node = xmlNewText((const xmlChar*)content.c_str()); - - // Use the result, because node can be freed when merging text nodes: - node = xmlAddPrevSibling(next_sibling->cobj(), node); + xmlNode* child = xmlNewText((const xmlChar*)content.c_str()); - Node::create_wrapper(node); - return static_cast(node->_private); + // Use the result, because child can be freed when merging text nodes: + xmlNode* node = xmlAddPrevSibling(next_sibling->cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add text node \"" + content + "\""); + } + Node::create_wrapper(node); + return static_cast(node->_private); } return 0; } @@ -212,9 +224,12 @@ bool Element::has_child_text() const void Element::set_namespace_declaration(const Glib::ustring& ns_uri, const Glib::ustring& ns_prefix) { //Create a new namespace declaration for this element: - xmlNewNs(cobj(), (const xmlChar*)(ns_uri.empty() ? 0 : ns_uri.c_str()), - (const xmlChar*)(ns_prefix.empty() ? 0 : ns_prefix.c_str()) ); - //We ignore the returned xmlNs*. Hopefully this is owned by the node. murrayc. + xmlNs* ns = xmlNewNs(cobj(), (const xmlChar*)(ns_uri.empty() ? 0 : ns_uri.c_str()), + (const xmlChar*)(ns_prefix.empty() ? 0 : ns_prefix.c_str()) ); + if (!ns) + throw exception("Could not add namespace declaration with URI=" + ns_uri + + ", prefix=" + ns_prefix); + //We ignore the returned xmlNs*. It's owned by the XML_ELEMENT_NODE. } Glib::ustring Element::get_namespace_uri_for_prefix(const Glib::ustring& ns_prefix) const @@ -236,10 +251,15 @@ Glib::ustring Element::get_namespace_uri_for_prefix(const Glib::ustring& ns_pref CommentNode* Element::add_child_comment(const Glib::ustring& content) { - xmlNode* node = xmlNewComment((const xmlChar*)content.c_str()); + xmlNode* child = xmlNewComment((const xmlChar*)content.c_str()); - // Use the result, because node can be freed when merging text nodes: - node = xmlAddChild(cobj(), node); + // Use the result, because child can be freed when merging text nodes: + xmlNode* node = xmlAddChild(cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add comment node \"" + content + "\""); + } Node::create_wrapper(node); return static_cast(node->_private); } @@ -247,8 +267,13 @@ CommentNode* Element::add_child_comment(const Glib::ustring& content) CdataNode* Element::add_child_cdata(const Glib::ustring& content) { - xmlNode* node = xmlNewCDataBlock(cobj()->doc, (const xmlChar*)content.c_str(), content.bytes()); - node = xmlAddChild(cobj(), node); + xmlNode* child = xmlNewCDataBlock(cobj()->doc, (const xmlChar*)content.c_str(), content.bytes()); + xmlNode* node = xmlAddChild(cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add CDATA node \"" + content + "\""); + } Node::create_wrapper(node); return static_cast(node->_private); } @@ -262,24 +287,33 @@ EntityReference* Element::add_child_entity_reference(const Glib::ustring& name) // Is it an entity reference or a character reference? // libxml uses xmlNode::type == XML_ENTITY_REF_NODE for both. - xmlNode* node = 0; + xmlNode* child = 0; if (extended_name[ichar] == '#') - node = xmlNewCharRef(cobj()->doc, (const xmlChar*)name.c_str()); + child = xmlNewCharRef(cobj()->doc, (const xmlChar*)name.c_str()); else - node = xmlNewReference(cobj()->doc, (const xmlChar*)name.c_str()); - node = xmlAddChild(cobj(), node); + child = xmlNewReference(cobj()->doc, (const xmlChar*)name.c_str()); + xmlNode* node = xmlAddChild(cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add entity reference node " + name); + } Node::create_wrapper(node); - return node ? static_cast(node->_private) : 0; + return static_cast(node->_private); } ProcessingInstructionNode* Element::add_child_processing_instruction( const Glib::ustring& name, const Glib::ustring& content) { - xmlNode* node = xmlNewDocPI(cobj()->doc, (const xmlChar*)name.c_str(), (const xmlChar*)content.c_str()); - node = xmlAddChild(cobj(), node); + xmlNode* child = xmlNewDocPI(cobj()->doc, (const xmlChar*)name.c_str(), (const xmlChar*)content.c_str()); + xmlNode* node = xmlAddChild(cobj(), child); + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add processing instruction node " + name); + } Node::create_wrapper(node); - return node ? static_cast(node->_private) : 0; + return static_cast(node->_private); } - } //namespace xmlpp diff --git a/libxml++/nodes/element.h b/libxml++/nodes/element.h index c9e3082..a727989 100644 --- a/libxml++/nodes/element.h +++ b/libxml++/nodes/element.h @@ -29,8 +29,12 @@ public: typedef std::list AttributeList; /** This adds a namespace declaration to this node which will apply to this node and all children. - * @param ns_uri The namespace to associate with the prefix, or to use as the default namespace if no prefix is specified. - * @param ns_prefix The namespace prefix. If no prefix is specified then the namespace URI will be the default namespace. + * @param ns_uri The namespace to associate with the prefix, + * or to use as the default namespace if no prefix is specified. + * @param ns_prefix The namespace prefix. If no prefix is specified then the + * namespace URI will be the default namespace. + * @throws xmlpp::exception If a new namespace node cannot be created, + * e.g. because a namespace with the same prefix already exists. */ void set_namespace_declaration(const Glib::ustring& ns_uri, const Glib::ustring& ns_prefix = Glib::ustring()); @@ -75,7 +79,7 @@ public: * @param value The new value for the attribute * @param ns_prefix Namespace prefix. If the prefix has not been declared then this method will throw an exception. * @return The attribute that was changed, or 0 is no suitable Attribute was found. - * @throws exception + * @throws xmlpp::exception */ Attribute* set_attribute(const Glib::ustring& name, const Glib::ustring& value, const Glib::ustring& ns_prefix = Glib::ustring()); @@ -103,6 +107,7 @@ public: /** Append a new text node. * @param content The text. This should be unescaped - see ContentNode::set_content(). * @returns The new text node. + * @throws xmlpp::internal_error */ TextNode* add_child_text(const Glib::ustring& content = Glib::ustring()); @@ -113,6 +118,7 @@ public: * @param previous_sibling An existing child node. * @param content The text. This should be unescaped - see ContentNode::set_content(). * @returns The new text node. + * @throws xmlpp::internal_error */ TextNode* add_child_text(xmlpp::Node* previous_sibling, const Glib::ustring& content = Glib::ustring()); @@ -123,12 +129,14 @@ public: * @param next_sibling An existing child node. * @param content The text. This should be unescaped - see ContentNode::set_content(). * @returns The new text node. + * @throws xmlpp::internal_error */ TextNode* add_child_text_before(xmlpp::Node* next_sibling, const Glib::ustring& content = Glib::ustring()); /** Set the text of the first text node, adding one if necessary. * This is a convenience method, meant as an alternative to iterating over all the child nodes to find the first suitable node then and setting the text directly. * @param content The text. This should be unescaped - see ContentNode::set_content(). + * @throws xmlpp::internal_error */ void set_child_text(const Glib::ustring& content); @@ -141,12 +149,14 @@ public: /** Append a new comment node. * @param content The text. This should be unescaped - see ContentNode::set_content(). * @returns The new comment node. + * @throws xmlpp::internal_error */ CommentNode* add_child_comment(const Glib::ustring& content); /** Append a new CDATA node. * @param content The raw text. * @returns The new CDATA node. + * @throws xmlpp::internal_error */ CdataNode* add_child_cdata(const Glib::ustring& content); @@ -162,6 +172,7 @@ public: * * @param name The name of the entity. * @returns The new entity reference node. + * @throws xmlpp::internal_error */ EntityReference* add_child_entity_reference(const Glib::ustring& name); @@ -172,6 +183,7 @@ public: * @param name The name of the application to which the instruction is directed. * @param content The content of the instruction. This should be unescaped - see ContentNode::set_content(). * @returns The new processing instruction node. + * @throws xmlpp::internal_error */ ProcessingInstructionNode* add_child_processing_instruction( const Glib::ustring& name, const Glib::ustring& content); diff --git a/libxml++/nodes/node.cc b/libxml++/nodes/node.cc index 8f2344a..44bcf91 100644 --- a/libxml++/nodes/node.cc +++ b/libxml++/nodes/node.cc @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include #include #include @@ -30,6 +32,8 @@ xmlXPathObject* eval_common(const Glib::ustring& xpath, xmlpp::XPathResultType* result_type, xmlNode* node) { xmlXPathContext* ctxt = xmlXPathNewContext(node->doc); + if (!ctxt) + throw xmlpp::internal_error("Could not create XPath context for " + xpath); ctxt->node = node; if (namespaces) @@ -221,13 +225,12 @@ Element* Node::add_child(const Glib::ustring& name, const Glib::ustring& ns_prefix) { _xmlNode* child = create_new_child_node(name, ns_prefix); - if(!child) - return 0; - _xmlNode* node = xmlAddChild(impl_, child); - if(!node) - return 0; - + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add child element node " + name); + } Node::create_wrapper(node); return static_cast(node->_private); } @@ -240,13 +243,12 @@ Element* Node::add_child(xmlpp::Node* previous_sibling, return 0; _xmlNode* child = create_new_child_node(name, ns_prefix); - if(!child) - return 0; - _xmlNode* node = xmlAddNextSibling(previous_sibling->cobj(), child); - if(!node) - return 0; - + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add child element node " + name); + } Node::create_wrapper(node); return static_cast(node->_private); } @@ -259,13 +261,12 @@ Element* Node::add_child_before(xmlpp::Node* next_sibling, return 0; _xmlNode* child = create_new_child_node(name, ns_prefix); - if(!child) - return 0; - _xmlNode* node = xmlAddPrevSibling(next_sibling->cobj(), child); - if(!node) - return 0; - + if (!node) + { + xmlFreeNode(child); + throw internal_error("Could not add child element node " + name); + } Node::create_wrapper(node); return static_cast(node->_private); } @@ -302,7 +303,8 @@ void Node::remove_child(Node* node) { //TODO: Allow a node to be removed without deleting it, to allow it to be moved? //This would require a more complex memory management API. - + if (!node) + return; xmlNode* cnode = node->cobj(); Node::free_wrappers(cnode); //This delete the C++ node (not this) itself. xmlUnlinkNode(cnode); @@ -311,11 +313,14 @@ void Node::remove_child(Node* node) Node* Node::import_node(const Node* node, bool recursive) { + if (!node) + return 0; + //Create the node, by copying: xmlNode* imported_node = xmlDocCopyNode(const_cast(node->cobj()), impl_->doc, recursive); if (!imported_node) { - throw exception("Unable to import node"); + throw exception("Unable to copy the node that shall be imported"); } if (imported_node->type == XML_ATTRIBUTE_NODE && impl_->type == XML_ELEMENT_NODE) @@ -446,6 +451,8 @@ static NodeSet find_impl(xmlXPathContext* ctxt, const Glib::ustring& xpath) NodeSet Node::find(const Glib::ustring& xpath) const { xmlXPathContext* ctxt = xmlXPathNewContext(impl_->doc); + if (!ctxt) + throw internal_error("Could not create XPath context for " + xpath); ctxt->node = impl_; return find_impl(ctxt, xpath); @@ -455,6 +462,8 @@ NodeSet Node::find(const Glib::ustring& xpath, const PrefixNsMap& namespaces) const { xmlXPathContext* ctxt = xmlXPathNewContext(impl_->doc); + if (!ctxt) + throw internal_error("Could not create XPath context for " + xpath); ctxt->node = impl_; for (PrefixNsMap::const_iterator it=namespaces.begin(); @@ -633,6 +642,16 @@ void Node::create_wrapper(xmlNode* node) node->_private = new xmlpp::EntityReference(node); break; } + case XML_XINCLUDE_START: + { + node->_private = new xmlpp::XIncludeStart(node); + break; + } + case XML_XINCLUDE_END: + { + node->_private = new xmlpp::XIncludeEnd(node); + break; + } case XML_DOCUMENT_NODE: { // do nothing. For Documents it's the wrapper that is the owner. diff --git a/libxml++/nodes/node.h b/libxml++/nodes/node.h index b54fdb3..a60107e 100644 --- a/libxml++/nodes/node.h +++ b/libxml++/nodes/node.h @@ -71,11 +71,18 @@ public: /** Set the namespace prefix used by the node. * If no such namespace prefix has been declared then this method will throw an exception. * @param ns_prefix The namespace prefix. - * @throws exception + * @throws xmlpp::exception */ void set_namespace(const Glib::ustring& ns_prefix); + /** Get the namespace prefix of this node. + * @returns The node's namespace prefix. Can be an empty string. + */ Glib::ustring get_namespace_prefix() const; + + /** Get the namespace URI of this node. + * @returns The node's namespace URI. Can be an empty string. + */ Glib::ustring get_namespace_uri() const; /** Discover at what line number this node occurs in the XML file. @@ -84,44 +91,48 @@ public: int get_line() const; /** Get the parent element for this node. - * @returns The parent node + * @returns The parent node, or 0 if the node has no parent element. */ const Element* get_parent() const; /** Get the parent element for this node. - * @returns The parent node + * @returns The parent node, or 0 if the node has no parent element. */ Element* get_parent(); /** Get the next sibling for this node. - * @returns The next sibling + * @returns The next sibling, or 0 if the node has no next sibling. */ const Node* get_next_sibling() const; /** Get the next sibling for this node. - * @returns The next sibling + * @returns The next sibling, or 0 if the node has no next sibling. */ Node* get_next_sibling(); /** Get the previous sibling for this node . - * @returns The previous sibling + * @returns The previous sibling, or 0 if the node has no previous sibling. */ const Node* get_previous_sibling() const; /** Get the previous sibling for this node. - * @returns The previous sibling + * @returns The previous sibling, or 0 if the node has no previous sibling. */ Node* get_previous_sibling(); - /** Get the first child of this node. You may optionally get the first child node which has a certain name. - * @returns The first child + /** Get the first child of this node. + * You may optionally get the first child node which has a certain name. + * @param name The name of the requested child node, or an empty string. + * @returns The first child, or 0 if no child node (with the specified name) exists. * * @newin{2,36} */ const Node* get_first_child(const Glib::ustring& name = Glib::ustring()) const; - /** Get the first child of this node. You may optionally get the first child node which has a certain name. - * @returns The first child + /** Get the first child of this node. + * You may optionally get the first child node which has a certain name. + * @param name The name of the requested child node, or an empty string. + * @returns The first child, or 0 if no child node (with the specified name) exists. * * @newin{2,36} */ @@ -140,15 +151,18 @@ public: const NodeList get_children(const Glib::ustring& name = Glib::ustring()) const; /** Add a child element to this node. + * This node must be an element node. * @param name The new node name * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception. * @returns The newly-created element - * @throws exception + * @throws xmlpp::exception If a namespace prefix is specified, but has not been declared. + * @throws xmlpp::internal_error If this node is not an element node. */ Element* add_child(const Glib::ustring& name, const Glib::ustring& ns_prefix = Glib::ustring()); /** Add a child element to this node after the specified existing child node. + * This node must be an element node. * * @newin{2,24} * @@ -156,12 +170,14 @@ public: * @param name The new node name * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception. * @returns The newly-created element - * @throws exception + * @throws xmlpp::exception If a namespace prefix is specified, but has not been declared. + * @throws xmlpp::internal_error If this node is not an element node. */ Element* add_child(xmlpp::Node* previous_sibling, const Glib::ustring& name, const Glib::ustring& ns_prefix = Glib::ustring()); /** Add a child element to this node before the specified existing child node. + * This node must be an element node. * * @newin{2,24} * @@ -169,7 +185,8 @@ public: * @param name The new node name * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception. * @returns The newly-created element - * @throws exception + * @throws xmlpp::exception If a namespace prefix is specified, but has not been declared. + * @throws xmlpp::internal_error If this node is not an element node. */ Element* add_child_before(xmlpp::Node* next_sibling, const Glib::ustring& name, const Glib::ustring& ns_prefix = Glib::ustring()); @@ -190,19 +207,21 @@ public: * @param recursive Whether to import the child nodes also. Defaults to true. * @returns Usually the newly created node, but adjacent text nodes are merged, * and the old text node with merged contents is returned. - * @throws exception + * @throws xmlpp::exception */ Node* import_node(const Node* node, bool recursive = true); - /** Return the XPath of this node. + /** Get the XPath of this node. * @result The XPath of the node. */ Glib::ustring get_path() const; /** Find nodes from an XPath expression. * @param xpath The XPath of the nodes. - * @throws exception + * @returns The resulting NodeSet. + * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error If the result type is not nodeset. */ NodeSet find(const Glib::ustring& xpath) const; @@ -213,7 +232,9 @@ public: /** Find nodes from an XPath expression. * @param xpath The XPath of the nodes. * @param namespaces A map of namespace prefixes to namespace URIs to be used while finding. - * @throws exception + * @returns The resulting NodeSet. + * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error If the result type is not nodeset. */ NodeSet find(const Glib::ustring& xpath, const PrefixNsMap& namespaces) const; @@ -224,6 +245,7 @@ public: * @returns The value of the XPath expression. If the value is not of type boolean, * it is converted to boolean. * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error * * @newin{2,36} */ @@ -238,6 +260,7 @@ public: * @returns The value of the XPath expression. If the value is not of type boolean, * it is converted to boolean. * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error * * @newin{2,36} */ @@ -251,6 +274,7 @@ public: * @returns The value of the XPath expression. If the value is not of type number, * it is converted to number. * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error * * @newin{2,36} */ @@ -264,6 +288,7 @@ public: * @returns The value of the XPath expression. If the value is not of type number, * it is converted to number. * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error * * @newin{2,36} */ @@ -277,6 +302,7 @@ public: * @returns The value of the XPath expression. If the value is not of type string, * it is converted to string. * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error * * @newin{2,36} */ @@ -290,6 +316,7 @@ public: * @returns The value of the XPath expression. If the value is not of type string, * it is converted to string. * @throws xmlpp::exception If the XPath expression cannot be evaluated. + * @throws xmlpp::internal_error * * @newin{2,36} */ diff --git a/libxml++/nodes/xincludeend.cc b/libxml++/nodes/xincludeend.cc new file mode 100644 index 0000000..3187920 --- /dev/null +++ b/libxml++/nodes/xincludeend.cc @@ -0,0 +1,32 @@ +/* Copyright (C) 2012 The libxml++ development team + * + * This file is part of libxml++. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include +#include + +namespace xmlpp +{ + +XIncludeEnd::XIncludeEnd(xmlNode* node) +: Node(node) +{} + +XIncludeEnd::~XIncludeEnd() +{} + +} //namespace xmlpp diff --git a/libxml++/nodes/xincludeend.h b/libxml++/nodes/xincludeend.h new file mode 100644 index 0000000..7071cbe --- /dev/null +++ b/libxml++/nodes/xincludeend.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2012 The libxml++ development team + * + * This file is part of libxml++. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __LIBXMLPP_NODES_XINCLUDEEND_H +#define __LIBXMLPP_NODES_XINCLUDEEND_H + +#include + +namespace xmlpp +{ + +/** XIncludeEnd node. + * This will be instantiated by xmlpp::Document::process_xinclude(). + * + * @newin{2,36} + */ +class XIncludeEnd : public Node +{ +public: + explicit XIncludeEnd(_xmlNode* node); + virtual ~XIncludeEnd(); +}; + +} // namespace xmlpp + +#endif //__LIBXMLPP_NODES_XINCLUDEEND_H diff --git a/libxml++/nodes/xincludestart.cc b/libxml++/nodes/xincludestart.cc new file mode 100644 index 0000000..c2bc0f3 --- /dev/null +++ b/libxml++/nodes/xincludestart.cc @@ -0,0 +1,32 @@ +/* Copyright (C) 2012 The libxml++ development team + * + * This file is part of libxml++. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include +#include + +namespace xmlpp +{ + +XIncludeStart::XIncludeStart(xmlNode* node) +: Node(node) +{} + +XIncludeStart::~XIncludeStart() +{} + +} //namespace xmlpp diff --git a/libxml++/nodes/xincludestart.h b/libxml++/nodes/xincludestart.h new file mode 100644 index 0000000..2b046b6 --- /dev/null +++ b/libxml++/nodes/xincludestart.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2012 The libxml++ development team + * + * This file is part of libxml++. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __LIBXMLPP_NODES_XINCLUDESTART_H +#define __LIBXMLPP_NODES_XINCLUDESTART_H + +#include + +namespace xmlpp +{ + +/** XIncludeStart node. + * This will be instantiated by xmlpp::Document::process_xinclude(). + * + * @newin{2,36} + */ +class XIncludeStart : public Node +{ +public: + explicit XIncludeStart(_xmlNode* node); + virtual ~XIncludeStart(); +}; + +} // namespace xmlpp + +#endif //__LIBXMLPP_NODES_XINCLUDESTART_H diff --git a/libxml++/parsers/domparser.cc b/libxml++/parsers/domparser.cc index 52fb8d2..f1aaa52 100644 --- a/libxml++/parsers/domparser.cc +++ b/libxml++/parsers/domparser.cc @@ -50,13 +50,12 @@ void DomParser::parse_file(const Glib::ustring& filename) if(!context_) { - throw internal_error("Couldn't create parsing context\n" + format_xml_error()); + throw internal_error("Could not create parser context\n" + format_xml_error()); } if(context_->directory == 0) { - char* directory = xmlParserGetDirectory(filename.c_str()); - context_->directory = (char*) xmlStrdup((xmlChar*) directory); + context_->directory = xmlParserGetDirectory(filename.c_str()); } parse_context(); @@ -74,7 +73,7 @@ void DomParser::parse_memory_raw(const unsigned char* contents, size_type bytes_ if(!context_) { - throw internal_error("Couldn't create parsing context\n" + format_xml_error()); + throw internal_error("Could not create parser context\n" + format_xml_error()); } parse_context(); @@ -96,19 +95,28 @@ void DomParser::parse_context() if(!context_) { - throw internal_error("Context not initialized\n" + format_xml_error()); + throw internal_error("Parser context not initialized\n" + format_xml_error()); } - xmlParseDocument(context_); + const int parseError = xmlParseDocument(context_); - check_for_exception(); + try + { + check_for_exception(); + } + catch (...) + { + release_underlying(); //Free doc_ and context_ + throw; // re-throw exception + } - const Glib::ustring error_str = format_xml_parser_error(context_); + Glib::ustring error_str = format_xml_parser_error(context_); + if (error_str.empty() && parseError == -1) + error_str = "xmlParseDocument() failed."; if(!error_str.empty()) { release_underlying(); //Free doc_ and context_ - throw parse_error(error_str); } @@ -120,11 +128,8 @@ void DomParser::parse_context() //Free the parse context, but keep the document alive so people can navigate the DOM tree: //TODO: Why not keep the context alive too? Parser::release_underlying(); - - check_for_exception(); } - void DomParser::parse_stream(std::istream& in) { release_underlying(); //Free any existing document. @@ -133,20 +138,21 @@ void DomParser::parse_stream(std::istream& in) xmlResetLastError(); context_ = xmlCreatePushParserCtxt( - 0, // setting thoses two parameters to 0 force the parser + 0, // Setting those two parameters to 0 force the parser 0, // to create a document while parsing. - 0, - 0, - ""); // here should come the filename. I don't know if it is a problem to let it empty + 0, // chunk + 0, // size + 0); // no filename for fetching external entities if(!context_) { - throw internal_error("Couldn't create parsing context\n" + format_xml_error()); + throw internal_error("Could not create parser context\n" + format_xml_error()); } initialize_context(); //TODO: Shouldn't we use a Glib::ustring here, and some alternative to std::getline()? + int firstParseError = XML_ERR_OK; std::string line; while(std::getline(in, line)) { @@ -154,19 +160,36 @@ void DomParser::parse_stream(std::istream& in) // about layout in certain cases. line += '\n'; - xmlParseChunk(context_, line.c_str(), line.size() /* This is a std::string, not a ustring, so this is the number of bytes. */, 0); + const int parseError = xmlParseChunk(context_, line.c_str(), + line.size() /* This is a std::string, not a ustring, so this is the number of bytes. */, 0); + + // Save the first error code if any, but read on. + // More errors might be reported and then thrown by check_for_exception(). + if (parseError != XML_ERR_OK && firstParseError == XML_ERR_OK) + firstParseError = parseError; } - xmlParseChunk(context_, 0, 0, 1); + const int parseError = xmlParseChunk(context_, 0, 0, 1 /* last chunk */); + if (parseError != XML_ERR_OK && firstParseError == XML_ERR_OK) + firstParseError = parseError; - check_for_exception(); + try + { + check_for_exception(); + } + catch (...) + { + release_underlying(); //Free doc_ and context_ + throw; // re-throw exception + } - const Glib::ustring error_str = format_xml_parser_error(context_); + Glib::ustring error_str = format_xml_parser_error(context_); + if (error_str.empty() && firstParseError != XML_ERR_OK) + error_str = "Error code from xmlParseChunk(): " + Glib::ustring::format(firstParseError); if(!error_str.empty()) { release_underlying(); //Free doc_ and context_ - throw parse_error(error_str); } @@ -179,8 +202,6 @@ void DomParser::parse_stream(std::istream& in) //Free the parse context, but keep the document alive so people can navigate the DOM tree: //TODO: Why not keep the context alive too? Parser::release_underlying(); - - check_for_exception(); } void DomParser::release_underlying() @@ -210,5 +231,3 @@ const Document* DomParser::get_document() const } } // namespace xmlpp - - diff --git a/libxml++/parsers/domparser.h b/libxml++/parsers/domparser.h index 8d6c296..5c2282a 100644 --- a/libxml++/parsers/domparser.h +++ b/libxml++/parsers/domparser.h @@ -19,46 +19,74 @@ namespace xmlpp { class DomParser : public Parser { public: + /** Create a parser with an empty document. + * @throws xmlpp::internal_error If an empty document can't be created. + */ DomParser(); /** Instantiate the parser and parse a document immediately. - * @throw exception * @param filename The path to the file. * @param validate Whether the parser should validate the XML. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ explicit DomParser(const Glib::ustring& filename, bool validate = false); virtual ~DomParser(); /** Parse an XML document from a file. - * @throw exception + * If the parser already contains a document, that document and all its nodes + * are deleted. * @param filename The path to the file. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_file(const Glib::ustring& filename); /** Parse an XML document from a string. - * @throw exception + * If the parser already contains a document, that document and all its nodes + * are deleted. * @param contents The XML document as a string. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_memory(const Glib::ustring& contents); /** Parse an XML document from raw memory. - * @throw exception + * If the parser already contains a document, that document and all its nodes + * are deleted. * @param contents The XML document as an array of bytes. * @param bytes_count The number of bytes in the @a contents array. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ void parse_memory_raw(const unsigned char* contents, size_type bytes_count); /** Parse an XML document from a stream. - * @throw exception + * If the parser already contains a document, that document and all its nodes + * are deleted. * @param in The stream. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_stream(std::istream& in); /** Test whether a document has been parsed. - */ + */ operator bool() const; + /** Get the parsed document. + * @returns A pointer to the parsed document, or 0. + */ Document* get_document(); + + /** Get the parsed document. + * @returns A pointer to the parsed document, or 0. + */ const Document* get_document() const; protected: @@ -69,12 +97,6 @@ protected: Document* doc_; }; - - - } // namespace xmlpp #endif //__LIBXMLPP_PARSERS_DOMPARSER_H - - - diff --git a/libxml++/parsers/parser.cc b/libxml++/parsers/parser.cc index b1055b7..66e1d61 100644 --- a/libxml++/parsers/parser.cc +++ b/libxml++/parsers/parser.cc @@ -10,6 +10,7 @@ #include //For auto_ptr. #include +#include // For Glib::Threads::Mutex. Needed until the next API/ABI break. //TODO: See several TODOs in parser.h for changes at the next API/ABI break. @@ -30,15 +31,20 @@ struct ExtraParserData }; std::map extra_parser_data; +// Different Parser instances may run in different threads. +// Accesses to extra_parser_data must be thread-safe. +Glib::Threads::Mutex extra_parser_data_mutex; void on_parser_error(const xmlpp::Parser* parser, const Glib::ustring& message) { + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); //Throw an exception later when the whole message has been received: extra_parser_data[parser].parser_error_ += message; } void on_parser_warning(const xmlpp::Parser* parser, const Glib::ustring& message) { + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); //Throw an exception later when the whole message has been received: extra_parser_data[parser].parser_warning_ += message; } @@ -56,6 +62,7 @@ Parser::~Parser() { release_underlying(); delete exception_; + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); extra_parser_data.erase(this); } @@ -81,12 +88,14 @@ bool Parser::get_substitute_entities() const void Parser::set_throw_messages(bool val) { + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); extra_parser_data[this].throw_parser_messages_ = val; extra_parser_data[this].throw_validity_messages_ = val; } bool Parser::get_throw_messages() const { + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); return extra_parser_data[this].throw_parser_messages_; } @@ -101,6 +110,7 @@ void Parser::initialize_context() //Turn on/off validation: context_->validate = (validate_ ? 1 : 0); + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); if (context_->sax && extra_parser_data[this].throw_parser_messages_) { //Tell the parser context about the callbacks. @@ -164,6 +174,7 @@ void Parser::check_for_validity_messages() // Also checks parser messages bool parser_msg = false; bool validity_msg = false; + Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex); if (!extra_parser_data[this].parser_error_.empty()) { parser_msg = true; diff --git a/libxml++/parsers/saxparser.cc b/libxml++/parsers/saxparser.cc index d937cbf..204dd7d 100644 --- a/libxml++/parsers/saxparser.cc +++ b/libxml++/parsers/saxparser.cc @@ -15,7 +15,6 @@ #include // for xmlCreateFileParserCtxt #include //For va_list. -#include // for assert() #include namespace xmlpp { @@ -147,28 +146,41 @@ void SaxParser::on_internal_subset(const Glib::ustring& name, // (http://www.daa.com.au/~james/gnome/xml-sax/implementing.html) void SaxParser::parse() { - + //TODO If this is not the first parsing with this SaxParser, the xmlDoc object + // in entity_resolver_doc_ should be deleted and replaced by a new one. + // Otherwise entity declarations from a previous parsing may erroneously affect + // this parsing. This would be much easier if entity_resolver_doc_ were a + // std::auto_ptr, so the xmlpp::Document could be deleted and a new + // one created. A good place for such code would be in an overridden + // SaxParser::initialize_context(). It would be an ABI break. + if(!context_) { - throw internal_error("Parse context not created."); + throw internal_error("Parser context not created."); } xmlSAXHandlerPtr old_sax = context_->sax; context_->sax = sax_handler_.get(); + xmlResetLastError(); initialize_context(); - xmlParseDocument(context_); + const int parseError = xmlParseDocument(context_); context_->sax = old_sax; - if( (! context_->wellFormed) - && (! exception_) ) - exception_ = new parse_error("Document not well-formed"); + Glib::ustring error_str = format_xml_parser_error(context_); + if (error_str.empty() && parseError == -1) + error_str = "xmlParseDocument() failed."; - release_underlying(); + release_underlying(); // Free context_ check_for_exception(); + + if(!error_str.empty()) + { + throw parse_error(error_str); + } } void SaxParser::parse_file(const Glib::ustring& filename) @@ -210,17 +222,24 @@ void SaxParser::parse_stream(std::istream& in) } KeepBlanks k(KeepBlanks::Default); + xmlResetLastError(); context_ = xmlCreatePushParserCtxt( sax_handler_.get(), 0, // user_data - 0, - 0, - ""); // This should be the filename. I don't know if it is a problem to leave it empty. + 0, // chunk + 0, // size + 0); // no filename for fetching external entities + + if(!context_) + { + throw internal_error("Could not create parser context\n" + format_xml_error()); + } initialize_context(); //TODO: Shouldn't we use a Glib::ustring here, and some alternative to std::getline()? + int firstParseError = XML_ERR_OK; std::string line; while( ( ! exception_ ) && std::getline(in, line)) @@ -229,15 +248,37 @@ void SaxParser::parse_stream(std::istream& in) // about layout in certain cases. line += '\n'; - xmlParseChunk(context_, line.c_str(), line.size() /* This is a std::string, not a ustring, so this is the number of bytes. */, 0 /* don't terminate */); + const int parseError = xmlParseChunk(context_, line.c_str(), + line.size() /* This is a std::string, not a ustring, so this is the number of bytes. */, + 0 /* don't terminate */); + + // Save the first error code if any, but read on. + // More errors might be reported and then thrown by check_for_exception(). + if (parseError != XML_ERR_OK && firstParseError == XML_ERR_OK) + firstParseError = parseError; } if( ! exception_ ) - xmlParseChunk(context_, 0 /* chunk */, 0 /* size */, 1 /* terminate (1 or 0) */); //This seems to be called just to terminate parsing. + { + //This is called just to terminate parsing. + const int parseError = xmlParseChunk(context_, 0 /* chunk */, 0 /* size */, 1 /* terminate (1 or 0) */); - release_underlying(); + if (parseError != XML_ERR_OK && firstParseError == XML_ERR_OK) + firstParseError = parseError; + } + + Glib::ustring error_str = format_xml_parser_error(context_); + if (error_str.empty() && firstParseError != XML_ERR_OK) + error_str = "Error code from xmlParseChunk(): " + Glib::ustring::format(firstParseError); + + release_underlying(); // Free context_ check_for_exception(); + + if(!error_str.empty()) + { + throw parse_error(error_str); + } } void SaxParser::parse_chunk(const Glib::ustring& chunk) @@ -248,23 +289,39 @@ void SaxParser::parse_chunk(const Glib::ustring& chunk) void SaxParser::parse_chunk_raw(const unsigned char* contents, size_type bytes_count) { KeepBlanks k(KeepBlanks::Default); + xmlResetLastError(); if(!context_) { context_ = xmlCreatePushParserCtxt( sax_handler_.get(), 0, // user_data - 0, - 0, - ""); // This should be the filename. I don't know if it is a problem to let it empty - + 0, // chunk + 0, // size + 0); // no filename for fetching external entities + + if(!context_) + { + throw internal_error("Could not create parser context\n" + format_xml_error()); + } initialize_context(); } + else + xmlCtxtResetLastError(context_); + int parseError = XML_ERR_OK; if(!exception_) - xmlParseChunk(context_, (const char*)contents, bytes_count, 0 /* don't terminate */); + parseError = xmlParseChunk(context_, (const char*)contents, bytes_count, 0 /* don't terminate */); check_for_exception(); + + Glib::ustring error_str = format_xml_parser_error(context_); + if (error_str.empty() && parseError != XML_ERR_OK) + error_str = "Error code from xmlParseChunk(): " + Glib::ustring::format(parseError); + if(!error_str.empty()) + { + throw parse_error(error_str); + } } void SaxParser::release_underlying() @@ -274,22 +331,42 @@ void SaxParser::release_underlying() void SaxParser::finish_chunk_parsing() { + xmlResetLastError(); if(!context_) { context_ = xmlCreatePushParserCtxt( sax_handler_.get(), 0, // this, // user_data - 0, - 0, - ""); // This should be the filename. I don't know if it is a problem to leave it empty + 0, // chunk + 0, // size + 0); // no filename for fetching external entities + + if(!context_) + { + throw internal_error("Could not create parser context\n" + format_xml_error()); + } + initialize_context(); } - + else + xmlCtxtResetLastError(context_); + + int parseError = XML_ERR_OK; if(!exception_) - xmlParseChunk(context_, 0 /* chunk */, 0 /* size */, 1 /* terminate (1 or 0) */); //This seems to be called just to terminate parsing. + //This is called just to terminate parsing. + parseError = xmlParseChunk(context_, 0 /* chunk */, 0 /* size */, 1 /* terminate (1 or 0) */); - release_underlying(); + Glib::ustring error_str = format_xml_parser_error(context_); + if (error_str.empty() && parseError != XML_ERR_OK) + error_str = "Error code from xmlParseChunk(): " + Glib::ustring::format(parseError); + + release_underlying(); // Free context_ check_for_exception(); + + if(!error_str.empty()) + { + throw parse_error(error_str); + } } @@ -548,5 +625,3 @@ void SaxParserCallback::internal_subset(void* context, const xmlChar* name, } } // namespace xmlpp - - diff --git a/libxml++/parsers/saxparser.h b/libxml++/parsers/saxparser.h index 6c30440..2e64482 100644 --- a/libxml++/parsers/saxparser.h +++ b/libxml++/parsers/saxparser.h @@ -81,27 +81,35 @@ public: virtual ~SaxParser(); /** Parse an XML document from a file. - * @throw exception * @param filename The path to the file. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_file(const Glib::ustring& filename); /** Parse an XML document from a string. - * @throw exception * @param contents The XML document as a string. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_memory(const Glib::ustring& contents); /** Parse an XML document from raw memory. - * @throw exception * @param contents The XML document as an array of bytes. * @param bytes_count The number of bytes in the @a contents array. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ void parse_memory_raw(const unsigned char* contents, size_type bytes_count); /** Parse an XML document from a stream. - * @throw exception * @param in The stream. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_stream(std::istream& in); @@ -114,8 +122,10 @@ public: * The first call to parse_chunk will setup the parser. When the last chunk * has been parsed, call finish_chunk_parsing() to finish the parse. * - * @throw exception * @param chunk The next piece of the XML document. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void parse_chunk(const Glib::ustring& chunk); @@ -130,9 +140,11 @@ public: * The first call to parse_chunk will setup the parser. When the last chunk * has been parsed, call finish_chunk_parsing() to finish the parse. * - * @throw exception * @param contents The next piece of the XML document as an array of bytes. * @param bytes_count The number of bytes in the @a contents array. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ void parse_chunk_raw(const unsigned char* contents, size_type bytes_count); @@ -140,6 +152,9 @@ public: * * Call this after the last call to parse_chunk(). Don't use this function with * the other parsing methods. + * @throws xmlpp::internal_error + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ virtual void finish_chunk_parsing(); @@ -153,6 +168,8 @@ protected: virtual void on_comment(const Glib::ustring& text); virtual void on_warning(const Glib::ustring& text); virtual void on_error(const Glib::ustring& text); + /** @throws xmlpp::parse_error + */ virtual void on_fatal_error(const Glib::ustring& text); virtual void on_cdata_block(const Glib::ustring& text); @@ -176,7 +193,8 @@ protected: * Unlike the DomParser, the SaxParser will also tell you about entity references for the 5 predefined entities. * * @param name The entity reference name. - * @returns The resolved xmlEntity for the entity reference. You must include libxml/parser.h in order to use this C struct. + * @returns The resolved xmlEntity for the entity reference, or 0 if not found. + * You must include libxml/parser.h in order to use this C struct. * This instance will not be freed by the caller. */ virtual _xmlEntity* on_get_entity(const Glib::ustring& name); @@ -185,6 +203,7 @@ protected: * If you override this function, and you want normal entity substitution to work, then you must call the base class in your override. * * This would be useful when overriding on_get_entity(). + * @throws xmlpp::internal_error */ virtual void on_entity_declaration(const Glib::ustring& name, XmlEntityType type, const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content); @@ -202,12 +221,6 @@ private: friend struct SaxParserCallback; }; - - - } // namespace xmlpp #endif //__LIBXMLPP_PARSERS_SAXPARSER_H - - - diff --git a/libxml++/parsers/textreader.cc b/libxml++/parsers/textreader.cc index 4a258dc..c041cd4 100644 --- a/libxml++/parsers/textreader.cc +++ b/libxml++/parsers/textreader.cc @@ -106,7 +106,7 @@ int TextReader::get_attribute_count() const Glib::ustring TextReader::get_base_uri() const { return propertyreader->String( - xmlTextReaderBaseUri(impl_)); + xmlTextReaderBaseUri(impl_), true); } int TextReader::get_depth() const @@ -306,15 +306,7 @@ Node* TextReader::get_current_node() const Node* TextReader::get_current_node() const { - xmlNodePtr node = xmlTextReaderCurrentNode(impl_); - if(node) - { - Node::create_wrapper(node); - return static_cast(node->_private); - } - - check_for_exceptions(); - return 0; + return const_cast(this)->get_current_node(); } /* @@ -331,7 +323,6 @@ Node* TextReader::expand() { xmlNodePtr node = xmlTextReaderExpand(impl_); if(node) - if(node) { Node::create_wrapper(node); return static_cast(node->_private); @@ -384,7 +375,6 @@ void TextReader::check_for_exceptions() const int severity = severity_; ths->severity_ = 0; - //TODO: Offer an alternative when not using exceptions? if( severity == XML_PARSER_SEVERITY_ERROR ) throw parse_error(error_); else if( severity == XML_PARSER_SEVERITY_VALIDITY_ERROR ) @@ -404,7 +394,7 @@ bool TextReader::PropertyReader::Bool(int value) if(value == -1) owner_.check_for_exceptions(); - return value; + return value > 0; } char TextReader::PropertyReader::Char(int value) diff --git a/libxml++/parsers/textreader.h b/libxml++/parsers/textreader.h index 595e2e5..5901894 100644 --- a/libxml++/parsers/textreader.h +++ b/libxml++/parsers/textreader.h @@ -22,7 +22,7 @@ extern "C" namespace xmlpp { -/** A TextReader-style XML parser +/** A TextReader-style XML parser. * A reader that provides fast, non-cached, forward-only access to XML data, * in the style of .Net's XmlTextReader class. */ @@ -81,6 +81,7 @@ class TextReader: NonCopyable /** * Creates a new TextReader object to parse a file or URI. * @param URI The URI to read. + * @throws xmlpp::internal_error If an xmlTextReader object cannot be created. */ TextReader(const Glib::ustring& URI); @@ -88,39 +89,53 @@ class TextReader: NonCopyable * Creates a new TextReader object which parses in memory data. * @param data The data to parse. * @param size The number of bytes in data. - * @param uri The base URI of the file. + * @param uri The base URI to use for the document. + * @throws xmlpp::internal_error If an xmlTextReader object cannot be created. */ TextReader(const unsigned char* data, size_type size, const Glib::ustring& uri = Glib::ustring()); ~TextReader(); /** Moves the position of the current instance to the next node in the stream, exposing its properties. - * @return true if the node was read successfully, false if there is no more nodes to read. + * @return true if the node was read successfully, false if there are no more nodes to read. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ bool read(); /** Reads the contents of the current node, including child nodes and markup. - * @return A Glib::ustring containing the XML content, or and empty Glib::ustring if the current node is neither an element nor attribute, or has no child nodes. + * @return A Glib::ustring containing the XML content, or an empty Glib::ustring if the current node is neither an element nor attribute, or has no child nodes. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ Glib::ustring read_inner_xml(); /** Reads the current node and its contents, including child nodes and markup. * @return A Glib::ustring containing the XML content, or an empty Glib::ustring if the current node is neither an element nor attribute. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ Glib::ustring read_outer_xml(); /** Reads the contents of an element or a text node as a string. * @return A Glib::ustring containing the contents of the Element or Text node, or an empty Glib::ustring if the reader is positioned on any other type of node. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ Glib::ustring read_string(); /** Parses an attribute value into one or more Text and EntityReference nodes. * @return A bool where true indicates the attribute value was parsed, and false indicates the reader was not positioned on an attribute node or all the attribute values have been read. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ bool read_attribute_value(); /** Gets the number of attributes on the current node. - * @return The number of attributes on the current node, or zero if the current node does not support attributes. + * @return The number of attributes on the current node, or zero if the current node + * does not support attributes, or -1 in case of error. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error */ int get_attribute_count() const; @@ -130,7 +145,7 @@ class TextReader: NonCopyable Glib::ustring get_base_uri() const; /** Gets the depth of the current node in the XML document. - * @return The depth of the current node in the XML document. + * @return The depth of the current node in the XML document, or -1 in case of error. */ int get_depth() const; @@ -139,7 +154,7 @@ class TextReader: NonCopyable */ bool has_attributes() const; - /** Whether the node can have a text value. + /** Whether the node can have a text value. * @return true if the current node can have an associated text value, false otherwise. */ bool has_value() const; @@ -158,9 +173,19 @@ class TextReader: NonCopyable Glib::ustring get_name() const; Glib::ustring get_namespace_uri() const; + /** Get the node type of the current node. + * @returns The xmlpp::xmlNodeType of the current node, or -1 in case of error. + */ xmlNodeType get_node_type() const; + /** Get the namespace prefix associated with the current node. + * @returns The namespace prefix, or an empty string if not available. + */ Glib::ustring get_prefix() const; + + /** Get the quotation mark character used to enclose the value of an attribute. + * @returns Returns " or ' and -1 in case of error. + */ char get_quote_char() const; Glib::ustring get_value() const; @@ -191,9 +216,33 @@ class TextReader: NonCopyable bool get_parser_property(ParserProperties property) const; void set_parser_property(ParserProperties property, bool value); + /** Get a pointer to the current node. + * @warning This is dangerous because the underlying node may be destroyed on the next read. + * The C++ wrapper is not deleted. Using this method causes memory leaks, + * unless you call xmlpp::Node::free_wrappers(), which is not intended to be + * called by the application. + * @returns A pointer to the current node, or 0 in case of error. + */ Node* get_current_node(); + + /** Get a pointer to the current node. + * @warning See the non-const get_current_node(). + * @returns A pointer to the current node, or 0 in case of error. + */ const Node* get_current_node() const; + // Document* CurrentDocument(); + + /** Expand the current node. + * Reads the contents of the current node and the full subtree. It then makes + * the subtree available until the next call to read() or next(). + * @warning The C++ wrappers are not deleted. Using this method causes memory leaks, + * unless you call xmlpp::Node::free_wrappers(), which is not intended to be + * called by the application. + * @returns A pointer to the current node, or 0 in case of error. + * @throws xmlpp::parse_error + * @throws xmlpp::validity_error + */ Node* expand(); bool next(); diff --git a/libxml++/schema.cc b/libxml++/schema.cc index 581bb55..d33906a 100644 --- a/libxml++/schema.cc +++ b/libxml++/schema.cc @@ -36,18 +36,30 @@ void Schema::set_document(Document* document, bool embed) { release_underlying(); + bool has_created_document = false; + if (!document) + { + document = new Document(); + has_created_document = true; + } + + xmlResetLastError(); xmlSchemaParserCtxtPtr context = xmlSchemaNewDocParserCtxt( document->cobj() ); if(!context) { - throw parse_error("Schema could not be parsed"); + if (has_created_document) + delete document; + throw parse_error("Schema could not be parsed.\n" + format_xml_error()); } impl_ = xmlSchemaParse(context); if(!impl_) { xmlSchemaFreeParserCtxt(context); - throw parse_error("Schema could not be parsed"); + if (has_created_document) + delete document; + throw parse_error("Schema could not be parsed.\n" + format_xml_error()); } impl_->_private = this; @@ -57,22 +69,22 @@ void Schema::set_document(Document* document, bool embed) Glib::ustring Schema::get_name() const { - return (char*)impl_->name; + return impl_ ? (char*)impl_->name : ""; } Glib::ustring Schema::get_target_namespace() const { - return (char*)impl_->targetNamespace; + return impl_ ? (char*)impl_->targetNamespace : ""; } Glib::ustring Schema::get_version() const { - return (char*)impl_->version; + return impl_ ? (char*)impl_->version : ""; } void Schema::release_underlying() { - if(embedded_doc_ && impl_ && impl_->doc->_private) + if(embedded_doc_ && impl_ && impl_->doc && impl_->doc->_private) { delete (Document*) impl_->doc->_private; embedded_doc_ = false; @@ -87,18 +99,18 @@ void Schema::release_underlying() Document* Schema::get_document() { - if(impl_) - return (Document*) impl_->doc->_private; - else + if (!(impl_ && impl_->doc)) return 0; + + if (!impl_->doc->_private) // Possible if *this was created with Schema(xmlSchema* schema). + new Document(impl_->doc); // Sets impl_->doc->_private + + return (Document*) impl_->doc->_private; } -const Document* Schema::get_document()const +const Document* Schema::get_document() const { - if(impl_) - return (Document*) impl_->doc->_private; - else - return 0; + return const_cast(this)->get_document(); } _xmlSchema* Schema::cobj() diff --git a/libxml++/schema.h b/libxml++/schema.h index 3f56059..9e9c648 100644 --- a/libxml++/schema.h +++ b/libxml++/schema.h @@ -32,17 +32,23 @@ public: */ explicit Schema(_xmlSchema* schema); - /** Create a schema from a XML document. + /** Create a schema from an XML document. * @param document XMLSchema document, 0 to create an empty schema document. * @param embed If true, the document will be deleted when * the schema is deleted or another document is set. + * @throws xmlpp::parse_error + * @throws xmlpp::internal_error If an empty schema document can't be created. */ explicit Schema(Document* document = 0, bool embed = false); ~Schema(); /** Set a new document to the schema. + * If the old schema document is owned by the schema (embed == true), the old + * schema document and all its nodes are deleted. * @param document XMLSchema document, 0 to create an empty schema document. * @param embed If true, the document will be deleted when the schema is deleted or another document is set. + * @throws xmlpp::parse_error + * @throws xmlpp::internal_error If an empty schema document can't be created. */ virtual void set_document(Document* document = 0, bool embed = false); @@ -50,8 +56,15 @@ public: Glib::ustring get_target_namespace() const; Glib::ustring get_version() const; + /** Get the schema document. + * @returns A pointer to the schema document, or 0 if none exists. + */ Document* get_document(); - const Document* get_document()const; + + /** Get the schema document. + * @returns A pointer to the schema document, or 0 if none exists. + */ + const Document* get_document() const; /** Access the underlying libxml implementation. */ _xmlSchema* cobj(); @@ -65,13 +78,10 @@ protected: private: _xmlSchema* impl_; - /** Is the base document is created with the schema. */ + /** If the base document is created with the schema. */ bool embedded_doc_; }; } // namespace xmlpp #endif //__LIBXMLPP_SCHEMA_H - - - diff --git a/libxml++/validators/dtdvalidator.cc b/libxml++/validators/dtdvalidator.cc index f000214..133c75e 100644 --- a/libxml++/validators/dtdvalidator.cc +++ b/libxml++/validators/dtdvalidator.cc @@ -7,15 +7,13 @@ #include "libxml++/validators/dtdvalidator.h" #include "libxml++/dtd.h" -#include "libxml++/nodes/element.h" -#include "libxml++/nodes/textnode.h" -#include "libxml++/nodes/commentnode.h" -#include "libxml++/keepblanks.h" +#include "libxml++/nodes/node.h" #include "libxml++/exceptions/internal_error.h" +#include "libxml++/exceptions/validity_error.h" #include "libxml++/io/istreamparserinputbuffer.h" #include "libxml++/document.h" -#include //For xmlCreateFileParserCtxt(). +#include #include #include @@ -54,6 +52,7 @@ void DtdValidator::parse_file(const Glib::ustring& filename) void DtdValidator::parse_subset(const Glib::ustring& external,const Glib::ustring& system) { release_underlying(); // Free any existing dtd. + xmlResetLastError(); xmlDtd* dtd = xmlParseDTD( external.empty() ? 0 : (const xmlChar *)external.c_str(), @@ -61,7 +60,7 @@ void DtdValidator::parse_subset(const Glib::ustring& external,const Glib::ustrin if (!dtd) { - throw parse_error("Dtd could not be parsed"); + throw parse_error("Dtd could not be parsed.\n" + format_xml_error()); } Node::create_wrapper(reinterpret_cast(dtd)); @@ -78,7 +77,8 @@ void DtdValidator::parse_memory(const Glib::ustring& contents) void DtdValidator::parse_stream(std::istream& in) { - release_underlying(); //Free any existing document. + release_underlying(); // Free any existing dtd. + xmlResetLastError(); IStreamParserInputBuffer ibuff( in ); @@ -86,7 +86,7 @@ void DtdValidator::parse_stream(std::istream& in) if (!dtd) { - throw parse_error("Dtd could not be parsed"); + throw parse_error("Dtd could not be parsed.\n" + format_xml_error()); } Node::create_wrapper(reinterpret_cast(dtd)); @@ -97,9 +97,9 @@ void DtdValidator::release_underlying() { if(dtd_) { - //Make a local copy as the wrapper is destroyed first + //Make a local pointer to the underlying xmlDtd object as the wrapper is destroyed first. //After free_wrappers is called dtd_ will be invalid (e.g. delete dtd_) - xmlDtd* dtd=dtd_->cobj(); + xmlDtd* dtd = dtd_->cobj(); Node::free_wrappers(reinterpret_cast(dtd)); xmlFreeDtd(dtd); dtd_ = 0; @@ -123,33 +123,37 @@ const Dtd* DtdValidator::get_dtd() const bool DtdValidator::validate(const Document* doc) { + if (!doc) + { + throw internal_error("Document pointer cannot be 0."); + } + + if (!dtd_) + { + throw internal_error("No DTD to use for validation."); + } + // A context is required at this stage only if (!valid_) valid_ = xmlNewValidCtxt(); if(!valid_) { - throw internal_error("Couldn't create parsing context"); - } - - if (!doc) - { - throw internal_error("Document pointer cannot be 0"); + throw internal_error("Couldn't create validation context"); } + xmlResetLastError(); initialize_valid(); const bool res = (bool)xmlValidateDtd( valid_, (xmlDoc*)doc->cobj(), dtd_->cobj() ); - if(res == 0) + if (!res) { check_for_exception(); - - throw validity_error("Document failed Dtd validation"); + throw validity_error("Document failed DTD validation\n" + format_xml_error()); } return res; } } // namespace xmlpp - diff --git a/libxml++/validators/dtdvalidator.h b/libxml++/validators/dtdvalidator.h index 674e7af..863faa0 100644 --- a/libxml++/validators/dtdvalidator.h +++ b/libxml++/validators/dtdvalidator.h @@ -5,8 +5,8 @@ * included with libxml++ as the file COPYING. */ -#ifndef __LIBXMLPP_PARSERS_DTDVALIDATOR_H -#define __LIBXMLPP_PARSERS_DTDVALIDATOR_H +#ifndef __LIBXMLPP_VALIDATORS_DTDVALIDATOR_H +#define __LIBXMLPP_VALIDATORS_DTDVALIDATOR_H #include #include @@ -14,28 +14,79 @@ namespace xmlpp { -/** XML DOM parser. - * +/** XML DTD validator. */ class DtdValidator : public Validator { public: DtdValidator(); + + /** Create a validator and parse an external subset (DTD file) immediately. + * @param file The URL of the DTD. + * @throws xmlpp::parse_error + */ explicit DtdValidator(const Glib::ustring& file); + + /** Create a validator and parse an external subset (DTD file) immediately. + * @param external The external ID of the DTD. + * @param system The URL of the DTD. + * @throws xmlpp::parse_error + */ explicit DtdValidator(const Glib::ustring& external,const Glib::ustring& system); + virtual ~DtdValidator(); + /** Parse an external subset (DTD file). + * If the validator already contains a DTD, that DTD is deleted. + * @param external The external ID of the DTD. + * @param system The URL of the DTD. + * @throws xmlpp::parse_error + */ virtual void parse_subset(const Glib::ustring& external,const Glib::ustring& system); + + /** Parse an external subset (DTD file). + * If the validator already contains a DTD, that DTD is deleted. + * @param filename The URL of the DTD. + * @throws xmlpp::parse_error + */ virtual void parse_file(const Glib::ustring& filename); + + /** Parse a DTD from a string. + * If the validator already contains a DTD, that DTD is deleted. + * @param contents The DTD as a string. + * @throws xmlpp::parse_error + */ virtual void parse_memory(const Glib::ustring& contents); + + /** Parse a DTD from a stream. + * If the validator already contains a DTD, that DTD is deleted. + * @param in The stream. + * @throws xmlpp::parse_error + */ virtual void parse_stream(std::istream& in); - /** Test whether a document has been parsed. - */ + /** Test whether a DTD has been parsed. + */ operator bool() const; + + /** Get the parsed DTD. + * @returns A pointer to the parsed DTD, or 0. + */ Dtd* get_dtd(); + + /** Get the parsed DTD. + * @returns A pointer to the parsed DTD, or 0. + */ const Dtd* get_dtd() const; + /** Validate a document, using a previously parsed DTD. + * The internal subset (if present) is de-coupled (i.e. not used), + * which could give problems if ID or IDREF is present. + * @param doc Pointer to the document. + * @returns Whether the document is valid. + * @throws xmlpp::internal_error + * @throws xmlpp::validity_error + */ bool validate(const Document* doc); protected: @@ -44,10 +95,7 @@ protected: Dtd* dtd_; }; - - - } // namespace xmlpp -#endif //__LIBXMLPP_PARSERS_DTDVALIDATOR_H +#endif //__LIBXMLPP_VALIDATORS_DTDVALIDATOR_H diff --git a/libxml++/validators/schemavalidator.cc b/libxml++/validators/schemavalidator.cc index 2a73640..c51b62c 100644 --- a/libxml++/validators/schemavalidator.cc +++ b/libxml++/validators/schemavalidator.cc @@ -71,11 +71,14 @@ SchemaValidator::~SchemaValidator() void SchemaValidator::parse_context(_xmlSchemaParserCtxt* context) { - release_underlying(); // Free any existing dtd. + if (!context) + throw parse_error("Could not create schema parser context\n" + format_xml_error()); + + release_underlying(); // Free any existing schema. xmlSchema* schema = xmlSchemaParse( context ); if ( ! schema ) - throw parse_error("Schema could not be parsed"); + throw parse_error("Schema could not be parsed\n" + format_xml_error()); schema->_private = new Schema(schema); @@ -85,6 +88,7 @@ void SchemaValidator::parse_context(_xmlSchemaParserCtxt* context) void SchemaValidator::parse_file(const Glib::ustring& filename) { + xmlResetLastError(); xmlSchemaParserCtxtPtr ctx = xmlSchemaNewParserCtxt( filename.c_str() ); XmlSchemaParserContextHolder holder(ctx); parse_context( ctx ); @@ -92,6 +96,7 @@ void SchemaValidator::parse_file(const Glib::ustring& filename) void SchemaValidator::parse_memory(const Glib::ustring& contents) { + xmlResetLastError(); xmlSchemaParserCtxtPtr ctx = xmlSchemaNewMemParserCtxt( contents.c_str(), contents.bytes() ); XmlSchemaParserContextHolder holder(ctx); parse_context( ctx ); @@ -99,6 +104,7 @@ void SchemaValidator::parse_memory(const Glib::ustring& contents) void SchemaValidator::parse_document(Document& document) { + xmlResetLastError(); xmlSchemaParserCtxtPtr ctx = xmlSchemaNewDocParserCtxt( document.cobj() ); XmlSchemaParserContextHolder holder(ctx); parse_context( ctx ); @@ -168,17 +174,22 @@ bool SchemaValidator::validate(const Document* doc) throw internal_error("Couldn't create validating context"); } + xmlResetLastError(); initialize_valid(); - int res = xmlSchemaValidateDoc( ctxt_, (xmlDoc*)doc->cobj() ); + const int res = xmlSchemaValidateDoc( ctxt_, (xmlDoc*)doc->cobj() ); if(res != 0) { check_for_exception(); - throw validity_error("Document failed schema validation"); + + Glib::ustring error_str = format_xml_error(); + if (error_str.empty()) + error_str = "Error code from xmlSchemaValidateDoc(): " + Glib::ustring::format(res); + throw validity_error("Document failed schema validation\n" + error_str); } - return res; + return res == 0; } bool SchemaValidator::validate(const Glib::ustring& file) @@ -188,6 +199,7 @@ bool SchemaValidator::validate(const Glib::ustring& file) if (!schema_) throw internal_error("Must have a schema to validate document"); + // A context is required at this stage only if (!ctxt_) ctxt_ = xmlSchemaNewValidCtxt( schema_->cobj() ); @@ -196,17 +208,23 @@ bool SchemaValidator::validate(const Glib::ustring& file) { throw internal_error("Couldn't create validating context"); } + + xmlResetLastError(); initialize_valid(); - int res = xmlSchemaValidateFile( ctxt_, file.c_str(), 0 ); + const int res = xmlSchemaValidateFile( ctxt_, file.c_str(), 0 ); if(res != 0) { check_for_exception(); - throw validity_error("Document failed schema validation"); + + Glib::ustring error_str = format_xml_error(); + if (error_str.empty()) + error_str = "Error code from xmlSchemaValidateFile(): " + Glib::ustring::format(res); + throw validity_error("Document failed schema validation\n" + error_str); } - return res; + return res == 0; } } // namespace xmlpp diff --git a/libxml++/validators/schemavalidator.h b/libxml++/validators/schemavalidator.h index c3aa7c9..f1ee910 100644 --- a/libxml++/validators/schemavalidator.h +++ b/libxml++/validators/schemavalidator.h @@ -21,7 +21,7 @@ extern "C" { namespace xmlpp { -/** Schema Validator +/** XML Schema Validator. * * @newin{2,24} */ @@ -29,23 +29,95 @@ class SchemaValidator : public Validator { public: SchemaValidator(); + + /** Create a validator and parse a schema definition file immediately. + * @param file The URL of the schema. + * @throws xmlpp::parse_error + */ explicit SchemaValidator(const Glib::ustring& file); + + /** Create a validator and parse a schema definition document immediately. + * @param document A preparsed document tree, containing the schema definition. + * @note The document may be modified during the parsing process. + * @throws xmlpp::parse_error + */ explicit SchemaValidator(Document& document); + + /** Create a schema validator. + * @param schema A pointer to the XML schema to use when validating XML documents. + * The validator does not take ownership of the schema. The caller must + * guarantee that the schema exists as long as the validator keeps a + * pointer to it. The caller is responsible for deleting the schema + * when it's no longer needed. + */ explicit SchemaValidator(Schema* schema); + virtual ~SchemaValidator(); + /** Parse a schema definition file. + * If the validator already contains a schema, that schema is released + * (deleted if the validator owns the schema). + * @param file The URL of the schema. + * @throws xmlpp::parse_error + */ virtual void parse_file(const Glib::ustring& filename); + + /** Parse a schema definition from a string. + * If the validator already contains a schema, that schema is released + * (deleted if the validator owns the schema). + * @param contents The schema definition as a string. + * @throws xmlpp::parse_error + */ virtual void parse_memory(const Glib::ustring& contents); + + /** Parse a schema definition from a document. + * If the validator already contains a schema, that schema is released + * (deleted if the validator owns the schema). + * @param document A preparsed document tree, containing the schema definition. + * @note The document may be modified during the parsing process. + * @throws xmlpp::parse_error + */ virtual void parse_document(Document& document); + + /** Set a schema. + * If the validator already contains a schema, that schema is released + * (deleted if the validator owns the schema). + * @param schema A pointer to the XML schema to use when validating XML documents. + * The validator does not take ownership of the schema. The caller must + * guarantee that the schema exists as long as the validator keeps a + * pointer to it. The caller is responsible for deleting the schema + * when it's no longer needed. + */ virtual void set_schema(Schema* schema); - /** Test whether a document has been parsed. - */ + /** Test whether a schema has been parsed. + */ operator bool() const; + + /** Get the parsed schema. + * @returns A pointer to the parsed schema, or 0. + */ Schema* get_schema(); + + /** Get the parsed schema. + * @returns A pointer to the parsed schema, or 0. + */ const Schema* get_schema() const; + /** Validate a document, using a previously parsed schema. + * @param doc Pointer to the document. + * @returns Whether the document is valid. + * @throws xmlpp::internal_error + * @throws xmlpp::validity_error + */ bool validate(const Document* doc); + + /** Validate an XML file, using a previously parsed schema. + * @param file The URI of the XML file. + * @returns Whether the document is valid. + * @throws xmlpp::internal_error + * @throws xmlpp::validity_error + */ bool validate(const Glib::ustring& file); protected: @@ -54,13 +126,10 @@ protected: virtual void release_underlying(); Schema* schema_; - bool embbeded_shema_; + bool embbeded_shema_; //TODO Correct mis-spelling at the next API/ABI break. _xmlSchemaValidCtxt* ctxt_; }; - - - } // namespace xmlpp #endif //__LIBXMLPP_VALIDATOR_SCHEMAVALIDATOR_H diff --git a/libxml++/validators/validator.cc b/libxml++/validators/validator.cc index 119ba61..d073e16 100644 --- a/libxml++/validators/validator.cc +++ b/libxml++/validators/validator.cc @@ -26,8 +26,7 @@ Validator::~Validator() void Validator::initialize_valid() { - //Tell the validity valid about the callbacks: - //(These are only called if validation is on - see above) + //Tell the validation context about the callbacks: valid_->error = &callback_validity_error; valid_->warning = &callback_validity_warning; @@ -64,21 +63,28 @@ void Validator::on_validity_warning(const Glib::ustring& message) void Validator::check_for_validity_messages() { - if(!validate_error_.empty()) - { - if(!exception_) - exception_ = new validity_error("Validity error:\n" + validate_error_); + Glib::ustring msg(exception_ ? exception_->what() : ""); + bool validity_msg = false; + if (!validate_error_.empty()) + { + validity_msg = true; + msg += "\nValidity error:\n" + validate_error_; validate_error_.erase(); } - if(!validate_warning_.empty()) + if (!validate_warning_.empty()) { - if(!exception_) - exception_ = new validity_error("Validity warning:\n" + validate_warning_); - + validity_msg = true; + msg += "\nValidity warning:\n" + validate_warning_; validate_warning_.erase(); } + + if (validity_msg) + { + delete exception_; + exception_ = new validity_error(msg); + } } void Validator::callback_validity_error(void* valid_, const char* msg, ...) @@ -133,9 +139,19 @@ void Validator::callback_validity_warning(void* valid_, const char* msg, ...) void Validator::handleException(const exception& e) { + delete exception_; exception_ = e.Clone(); - release_underlying(); + // Don't delete the DTD validation context or schema validation context + // while validating. It would cause accesses to deallocated memory in libxml2 + // functions after the return from Validator::callback_validity_...(). + // Parser::handleException() calls xmlStopParser(), but there is no + // xmlStopValidator() or similar function to call here. + // We don't throw the exception here, since it would have to pass through + // C functions. That's not guaranteed to work. It might work, but it depends + // on the C compiler and the options used when building libxml2. + + //release_underlying(); } void Validator::check_for_exception() @@ -151,5 +167,3 @@ void Validator::check_for_exception() } } // namespace xmlpp - - diff --git a/libxml++/validators/validator.h b/libxml++/validators/validator.h index a7ca2b3..7dc1b90 100644 --- a/libxml++/validators/validator.h +++ b/libxml++/validators/validator.h @@ -22,8 +22,7 @@ extern "C" { namespace xmlpp { -/** XML parser. - * +/** Base class for XML validators. */ class Validator : NonCopyable { diff --git a/macros/config.guess b/macros/config.guess index 49ba16f..d622a44 100755 --- a/macros/config.guess +++ b/macros/config.guess @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. -timestamp='2012-01-01' +timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -17,9 +17,7 @@ timestamp='2012-01-01' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -863,6 +861,13 @@ EOF i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -1320,6 +1325,9 @@ EOF i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 diff --git a/macros/config.sub b/macros/config.sub index d6b6b3c..c894da4 100755 --- a/macros/config.sub +++ b/macros/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. -timestamp='2012-01-01' +timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,9 +21,7 @@ timestamp='2012-01-01' # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -132,6 +130,10 @@ case $maybe_os in os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -247,6 +249,7 @@ case $basic_machine in # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ + | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ @@ -319,7 +322,7 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -332,7 +335,10 @@ case $basic_machine in strongarm | thumb | xscale) basic_machine=arm-unknown ;; - + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; xscaleeb) basic_machine=armeb-unknown ;; @@ -355,6 +361,7 @@ case $basic_machine in # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ + | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ diff --git a/macros/depcomp b/macros/depcomp index bd0ac08..25a39e6 100755 --- a/macros/depcomp +++ b/macros/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2011-12-04.11; # UTC +scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011 Free Software Foundation, Inc. +# 2011, 2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ scriptversion=2011-12-04.11; # UTC case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) @@ -40,8 +40,8 @@ as side-effects. Environment variables: depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. @@ -57,6 +57,12 @@ EOF ;; esac +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' + if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 @@ -102,6 +108,12 @@ if test "$depmode" = msvc7msys; then depmode=msvc7 fi +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -156,15 +168,14 @@ gcc) ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. +## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory + tr ' ' "$nl" < "$tmpdepfile" | +## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. @@ -203,18 +214,15 @@ sgi) # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the + # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ + tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" + tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ + tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else @@ -226,10 +234,17 @@ sgi) rm -f "$tmpdepfile" ;; +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the + # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` @@ -259,12 +274,11 @@ aix) test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. + # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. + # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -275,23 +289,26 @@ aix) ;; icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. + # However on + # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h - # which is wrong. We want: + # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : + # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - + # tcc 0.9.26 (FIXME still under development at the moment of writing) + # will emit a similar output, but also prepend the continuation lines + # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : @@ -300,15 +317,21 @@ icc) exit $stat fi rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Each line is of the form 'foo.o: dependent.h', + # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" + # '$object: dependent.h' and one to simply 'dependent.h:'. + sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ + < "$tmpdepfile" > "$depfile" + sed ' + s/[ '"$tab"'][ '"$tab"']*/ /g + s/^ *// + s/ *\\*$// + s/^[^:]*: *// + /^$/d + /:$/d + s/$/ :/ + ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; @@ -344,7 +367,7 @@ hp2) done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. + # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// @@ -359,9 +382,9 @@ hp2) tru64) # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. + # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= @@ -407,8 +430,7 @@ tru64) done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi @@ -443,11 +465,11 @@ msvc7) p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g -s/\(.*\)/ \1 \\/p +s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { - s/.*/ / + s/.*/'"$tab"'/ G p }' >> "$depfile" @@ -478,7 +500,7 @@ dashmstdout) shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -498,15 +520,14 @@ dashmstdout) done test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' + # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ + tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" @@ -562,8 +583,7 @@ makedepend) # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ + sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" @@ -583,7 +603,7 @@ cpp) shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -652,8 +672,8 @@ msvisualcpp) sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; diff --git a/macros/doc-reference.am b/macros/doc-reference.am index 2c6a429..cb77754 100644 --- a/macros/doc-reference.am +++ b/macros/doc-reference.am @@ -42,7 +42,7 @@ book_title ?= $(PACKAGE_NAME) Reference Manual # A list of wildcard patterns matching the files from the HTML directory # generated by Doxygen which should be distributed and installed. -htmlref_patterns ?= $(addprefix $(doc_outdir)/html/*.,css gif html png) +htmlref_patterns ?= $(addprefix $(doc_outdir)/html/*.,css gif html png js) # Locations of utilities shipped with glibmm. Made overridable # in case the installed utilities cannot be used for some reason. @@ -189,10 +189,11 @@ $(doc_outdir)/html/%: | $(doxytagfile) # also functions as time stamp target for the documentation as a whole. # Quote $(DOXYGEN) so that this still works if this is a path containing # spaces such as "/c/Program Files (x86)/Doxygen/bin/doxygen" +# The doc_config file may contain "$(MMDOCTOOLDIR)". Export MMDOCTOOLDIR to Doxygen. $(doxytagfile): $(doc_dependencies) | $(doc_config) -$(AM_V_at)rm -f $@ -$(AM_V_at)rm -fr $(doc_outdir)/html - $(AM_V_GEN)(echo '@INCLUDE =' $(doc_config) && echo 'INPUT =' $(doc_input)) | "$(DOXYGEN)" - + $(AM_V_GEN)(echo '@INCLUDE =' $(doc_config) && echo 'INPUT =' $(doc_input)) | MMDOCTOOLDIR="$(MMDOCTOOLDIR)" "$(DOXYGEN)" - $(AM_V_at)$(doc_postprocess) '$(doc_outdir)/html/*.html' # Run XSL transformation to generate a Devhelp book from a Doxygen tag file. diff --git a/macros/libtool.m4 b/macros/libtool.m4 index 39ba996..56666f0 100644 --- a/macros/libtool.m4 +++ b/macros/libtool.m4 @@ -1,7 +1,8 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -10,7 +11,8 @@ m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -37,7 +39,7 @@ m4_define([_LT_COPYING], [dnl # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) -# serial 56 LT_INIT +# serial 57 LT_INIT # LT_PREREQ(VERSION) @@ -66,6 +68,7 @@ esac # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl @@ -82,6 +85,8 @@ AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) @@ -118,7 +123,7 @@ m4_defun([_LT_CC_BASENAME], *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) @@ -138,6 +143,11 @@ m4_defun([_LT_FILEUTILS_DEFAULTS], m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl @@ -160,10 +170,13 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our @@ -179,7 +192,6 @@ fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl -_LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) @@ -193,23 +205,6 @@ aix3*) ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# 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' - # Global variables: ofile=libtool can_build_shared=yes @@ -250,6 +245,28 @@ _LT_CONFIG_COMMANDS ])# _LT_SETUP +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# 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' +]) + # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' @@ -408,7 +425,7 @@ m4_define([_lt_decl_all_varnames], # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS @@ -418,7 +435,7 @@ m4_define([_LT_CONFIG_STATUS_DECLARE], # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # -# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) @@ -517,12 +534,20 @@ 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 lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -533,9 +558,9 @@ done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -543,16 +568,38 @@ for var in lt_decl_all_varnames([[ \ esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\[$]0 --fallback-echo"')dnl " - lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` - ;; -esac - _LT_OUTPUT_LIBTOOL_INIT ]) +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- @@ -562,20 +609,11 @@ _LT_OUTPUT_LIBTOOL_INIT AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) -cat >"$CONFIG_LT" <<_LTEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate a libtool stub with the current configuration. - -lt_cl_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_LTEOF +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF -AS_SHELL_SANITIZE -_AS_PREPARE - -exec AS_MESSAGE_FD>&1 +lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo @@ -601,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. -Copyright (C) 2008 Free Software Foundation, Inc. +Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." @@ -646,15 +684,13 @@ chmod +x "$CONFIG_LT" # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. -if test "$no_create" != yes; then - lt_cl_success=: - test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" - exec AS_MESSAGE_LOG_FD>/dev/null - $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false - exec AS_MESSAGE_LOG_FD>>config.log - $lt_cl_success || AS_EXIT(1) -fi +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT @@ -717,15 +753,12 @@ _LT_EOF # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_XSI_SHELLFNS + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) + _LT_PROG_REPLACE_SHELLFNS - mv -f "$cfgfile" "$ofile" || + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], @@ -770,6 +803,7 @@ AC_DEFUN([LT_LANG], m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], @@ -791,6 +825,31 @@ m4_defun([_LT_LANG], ])# _LT_LANG +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], @@ -821,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ], m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) @@ -831,11 +894,13 @@ AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER @@ -921,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # 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 >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -929,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ rm -rf libconftest.dylib* rm -f conftest.* fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no @@ -940,6 +1012,34 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [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" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $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 >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -967,7 +1067,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test "$DSYMUTIL" != ":"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -977,8 +1077,8 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ ]) -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ @@ -987,7 +1087,13 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(whole_archive_flag_spec, $1)='' + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in @@ -995,7 +1101,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="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}" @@ -1011,203 +1117,142 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], fi ]) -# _LT_SYS_MODULE_PATH_AIX -# ----------------------- +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -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 "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`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_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_SHELL_INIT +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + # _LT_PROG_ECHO_BACKSLASH # ----------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], -[_LT_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# 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 - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -[$]* -_LT_EOF - exit 0 + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' fi -# 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 - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + 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" )])]) -AC_SUBST(lt_ECHO) -]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], - [An echo program that does not interpret backslashes]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], @@ -1236,7 +1281,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in @@ -1329,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-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" @@ -1354,14 +1412,47 @@ need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) +[_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: @@ -1380,18 +1471,27 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + 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 _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE @@ -1416,15 +1516,15 @@ AC_CACHE_CHECK([$1], [$2], -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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $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 $2=yes @@ -1464,7 +1564,7 @@ AC_CACHE_CHECK([$1], [$2], if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes @@ -1527,6 +1627,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl 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. @@ -1552,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl 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 @@ -1591,8 +1701,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl # 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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -1643,7 +1753,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -[#line __oline__ "configure" +[#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -1684,7 +1794,13 @@ else # endif #endif -void fnord() { int i=42;} +/* When -fvisbility=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); @@ -1693,7 +1809,11 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else @@ -1869,16 +1989,16 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], -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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $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_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes @@ -2037,6 +2157,7 @@ m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ @@ -2045,16 +2166,23 @@ if test "$GCC" = yes; then darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + 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 -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + 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= @@ -2067,7 +2195,7 @@ if test "$GCC" = yes; then 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 ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -2087,7 +2215,13 @@ BEGIN {RS=" "; FS="/|\n";} { if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # 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]) @@ -2113,7 +2247,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + 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 @@ -2122,7 +2256,7 @@ aix3*) ;; aix[[4-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -2175,7 +2309,7 @@ amigaos*) 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -2187,7 +2321,7 @@ beos*) ;; bsdi[[45]]*) - version_type=linux + 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' @@ -2206,8 +2340,9 @@ cygwin* | mingw* | pw32* | cegcc*) need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + 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}`~ @@ -2228,36 +2363,83 @@ cygwin* | mingw* | pw32* | cegcc*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +m4_if([$1], [],[ + 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}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + 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 wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -2278,7 +2460,7 @@ m4_if([$1], [],[ ;; dgux*) - version_type=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' @@ -2286,10 +2468,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -2297,7 +2475,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[[123]]*) objformat=aout ;; + freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -2315,7 +2493,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) @@ -2335,12 +2513,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=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}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +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=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2386,12 +2578,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # 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 + 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}' @@ -2407,7 +2601,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -2444,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-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}' @@ -2454,26 +2648,35 @@ linux* | k*bsd*-gnu) 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 - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + 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 + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + # Append ld.so.conf contents 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;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + 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="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2504,7 +2707,7 @@ netbsd*) ;; newsos6) - version_type=linux + 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 @@ -2573,7 +2776,7 @@ rdos*) ;; solaris*) - version_type=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}' @@ -2598,7 +2801,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + 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 @@ -2622,7 +2825,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + 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 @@ -2653,7 +2856,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=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}' @@ -2663,7 +2866,7 @@ tpf*) ;; uts4*) - version_type=linux + 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 @@ -2705,6 +2908,8 @@ _LT_DECL([], [library_names_spec], [1], The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], @@ -2817,6 +3022,7 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], @@ -2938,6 +3144,11 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' @@ -2946,8 +3157,8 @@ case $host_os in fi ;; esac -_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl -_LT_DECL([], [reload_cmds], [2])dnl +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl ])# _LT_CMD_RELOAD @@ -2999,16 +3210,18 @@ 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 + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && 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 - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + # 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) +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' @@ -3038,6 +3251,10 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -3046,11 +3263,11 @@ hpux10.20* | hpux11*) lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + [lt_cv_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_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 @@ -3071,8 +3288,8 @@ irix5* | irix6* | nonstopux*) lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -3150,6 +3367,21 @@ tpf*) ;; esac ]) + +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 @@ -3157,7 +3389,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD @@ -3214,7 +3450,19 @@ if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -3227,13 +3475,13 @@ _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -3248,15 +3496,76 @@ dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' -# LT_LIB_M -# -------- +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which 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 +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -3284,7 +3593,12 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, @@ -3301,6 +3615,7 @@ _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl @@ -3368,8 +3683,8 @@ esac lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3393,6 +3708,7 @@ for ac_symprfx in "" "_"; do # 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};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -3405,6 +3721,7 @@ for ac_symprfx in "" "_"; do 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 @@ -3426,7 +3743,7 @@ _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -3438,6 +3755,18 @@ _LT_EOF 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 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + #ifdef __cplusplus extern "C" { #endif @@ -3449,7 +3778,7 @@ _LT_EOF cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ -const struct { +LT@&t@_DLSYM_CONST struct { const char *name; void *address; } @@ -3475,15 +3804,15 @@ static const void *lt_preloaded_setup() { _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi @@ -3516,6 +3845,13 @@ else AC_MSG_RESULT(ok) 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 + _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], @@ -3526,6 +3862,8 @@ _LT_DECL([global_symbol_to_c_name_address], _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3537,7 +3875,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= -AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -3588,6 +3925,11 @@ m4_if([$1], [CXX], [ # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. @@ -3637,6 +3979,12 @@ m4_if([$1], [CXX], [ ;; 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). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; dgux*) case $cc_basename in ec++*) @@ -3693,7 +4041,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -3726,8 +4074,8 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' @@ -3789,7 +4137,7 @@ m4_if([$1], [CXX], [ ;; solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -3893,6 +4241,12 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + 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 @@ -3935,6 +4289,15 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in @@ -3977,7 +4340,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -3998,7 +4361,13 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -4010,25 +4379,40 @@ m4_if([$1], [CXX], [ # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-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_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; @@ -4060,7 +4444,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in - f77* | f90* | f95*) + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; @@ -4117,9 +4501,11 @@ case $host_os in _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. @@ -4138,6 +4524,8 @@ fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # @@ -4158,6 +4546,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl @@ -4166,27 +4555,37 @@ m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_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 AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; + ;; cygwin* | mingw* | cegcc*) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; esac - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= @@ -4201,7 +4600,6 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -4249,7 +4647,33 @@ dnl Note also adjust exclude_expsyms for C++ above. esac _LT_TAGVAR(ld_shlibs, $1)=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 "$with_gnu_ld" = yes; 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 "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -4267,6 +4691,7 @@ dnl Note also adjust exclude_expsyms for C++ above. fi supports_anon_versioning=no case `$LD -v 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 ... @@ -4282,11 +4707,12 @@ dnl Note also adjust exclude_expsyms for C++ above. _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** 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 modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** 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 @@ -4322,10 +4748,12 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -4343,6 +4771,11 @@ _LT_EOF fi ;; + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4358,7 +4791,7 @@ _LT_EOF _LT_TAGVAR(archive_expsym_cmds, $1)='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) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -4368,15 +4801,16 @@ _LT_EOF if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then - tmp_addflag= + tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${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*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' ;; @@ -4387,13 +4821,17 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; - xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + 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 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 @@ -4409,17 +4847,16 @@ _LT_EOF fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4433,8 +4870,8 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -4452,8 +4889,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4499,8 +4936,8 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4540,8 +4977,10 @@ _LT_EOF else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -4628,9 +5067,9 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' @@ -4639,14 +5078,19 @@ _LT_EOF else # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -4678,20 +5122,64 @@ _LT_EOF # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='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 wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$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. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac ;; darwin* | rhapsody*) @@ -4704,10 +5192,6 @@ _LT_EOF _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -4720,7 +5204,7 @@ _LT_EOF ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -4729,7 +5213,7 @@ _LT_EOF # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4737,7 +5221,7 @@ _LT_EOF hpux9*) if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi @@ -4752,14 +5236,13 @@ _LT_EOF ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes @@ -4771,16 +5254,16 @@ _LT_EOF ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else @@ -4792,7 +5275,14 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + m4_if($1, [], [ + # 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) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi @@ -4820,19 +5310,34 @@ _LT_EOF irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) - LDFLAGS="$save_LDFLAGS" + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$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 else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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' + _LT_TAGVAR(archive_expsym_cmds, $1)='$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 _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' @@ -4894,17 +5399,17 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' @@ -4914,13 +5419,13 @@ _LT_EOF osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(archive_expsym_cmds, $1)='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 "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -4933,9 +5438,9 @@ _LT_EOF _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $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"*) @@ -5111,36 +5616,38 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi @@ -5177,9 +5684,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1], _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], @@ -5205,8 +5709,6 @@ _LT_TAGDECL([], [inherit_rpath], [0], to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], @@ -5217,6 +5719,8 @@ _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented @@ -5310,37 +5814,22 @@ CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG -# _LT_PROG_CXX -# ------------ -# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ -# compiler, we have our own version here. -m4_defun([_LT_PROG_CXX], -[ -pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) -AC_PROG_CXX -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_CXX - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_CXX], []) - - # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], -[AC_REQUIRE([_LT_PROG_CXX])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no @@ -5352,7 +5841,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -5362,6 +5850,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -5393,6 +5883,7 @@ if test "$_lt_caught_CXX_error" != yes; then # 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 @@ -5410,6 +5901,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -5431,8 +5923,8 @@ if test "$_lt_caught_CXX_error" != yes; then # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5464,7 +5956,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -5573,10 +6065,10 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' @@ -5585,14 +6077,19 @@ if test "$_lt_caught_CXX_error" != yes; then else # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. @@ -5622,28 +6119,75 @@ if test "$_lt_caught_CXX_error" != yes; then ;; cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$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 (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='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, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$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 (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; @@ -5666,7 +6210,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - freebsd[[12]]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no @@ -5685,6 +6229,11 @@ if test "$_lt_caught_CXX_error" != yes; then gnu*) ;; + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: @@ -5709,11 +6258,11 @@ if test "$_lt_caught_CXX_error" != yes; then # 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; $ECHO "X$list" | $Xsed' + 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 "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -5774,7 +6323,7 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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 "$GXX" = yes; then @@ -5784,10 +6333,10 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$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 @@ -5817,7 +6366,7 @@ if test "$_lt_caught_CXX_error" != yes; then case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 @@ -5828,9 +6377,9 @@ if test "$_lt_caught_CXX_error" != yes; then *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -5841,7 +6390,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -5859,7 +6408,7 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5896,26 +6445,26 @@ if test "$_lt_caught_CXX_error" != yes; then pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in - *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='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 | $NL2SP`~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + $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 will use weak symbols + *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$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' ;; @@ -5923,7 +6472,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${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++ @@ -5942,9 +6491,9 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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*) + xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5964,13 +6513,13 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' _LT_TAGVAR(compiler_needs_object, $1)=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='echo' + 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 @@ -6039,7 +6588,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6074,15 +6623,15 @@ if test "$_lt_caught_CXX_error" != yes; then case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; @@ -6098,17 +6647,17 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + 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 "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$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 @@ -6118,7 +6667,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + 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 @@ -6154,7 +6703,7 @@ if test "$_lt_caught_CXX_error" != yes; then solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -6175,7 +6724,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac _LT_TAGVAR(link_all_deplibs, $1)=yes - output_verbose_link_cmd='echo' + 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 @@ -6195,14 +6744,14 @@ if test "$_lt_caught_CXX_error" != yes; then if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + 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. @@ -6213,7 +6762,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' @@ -6267,6 +6816,10 @@ if test "$_lt_caught_CXX_error" != yes; then CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' @@ -6322,6 +6875,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi # test -n "$compiler" CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC @@ -6336,6 +6890,29 @@ AC_LANG_POP ])# _LT_LANG_CXX_CONFIG +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +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 +])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -6344,6 +6921,7 @@ AC_LANG_POP # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= @@ -6393,7 +6971,20 @@ public class foo { } }; _LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_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 + dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then @@ -6405,7 +6996,7 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. @@ -6414,13 +7005,22 @@ if AC_TRY_EVAL(ac_compile); then test $p = "-R"; then prev=$p continue - else - prev= 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 "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) + 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. @@ -6440,8 +7040,10 @@ if AC_TRY_EVAL(ac_compile); then _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${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. @@ -6477,6 +7079,7 @@ else fi $RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], @@ -6513,7 +7116,7 @@ linux*) solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as @@ -6557,32 +7160,16 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1], ])# _LT_SYS_HIDDEN_LIBDEPS -# _LT_PROG_F77 -# ------------ -# Since AC_PROG_F77 is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_F77], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) -AC_PROG_F77 -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_F77 - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_F77], []) - - # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], -[AC_REQUIRE([_LT_PROG_F77])dnl -AC_LANG_PUSH(Fortran 77) +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= @@ -6592,7 +7179,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -6601,6 +7187,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -6640,7 +7228,9 @@ if test "$_lt_disable_F77" != yes; then # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} + CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -6694,38 +7284,24 @@ if test "$_lt_disable_F77" != yes; then GCC=$lt_save_GCC CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG -# _LT_PROG_FC -# ----------- -# Since AC_PROG_FC is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_FC], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) -AC_PROG_FC -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_FC - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_FC], []) - - # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], -[AC_REQUIRE([_LT_PROG_FC])dnl -AC_LANG_PUSH(Fortran) +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= @@ -6735,7 +7311,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -6744,6 +7319,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -6783,7 +7360,9 @@ if test "$_lt_disable_FC" != yes; then # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} + CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu @@ -6839,7 +7418,8 @@ if test "$_lt_disable_FC" != yes; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC="$lt_save_CC" + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP @@ -6876,10 +7456,12 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC="$CC" +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" @@ -6889,6 +7471,8 @@ _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -6908,10 +7492,82 @@ fi AC_LANG_RESTORE GCC=$lt_save_GCC -CC="$lt_save_CC" +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## 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_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler @@ -6943,9 +7599,11 @@ _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} +CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -6958,7 +7616,8 @@ fi GCC=$lt_save_GCC AC_LANG_RESTORE -CC="$lt_save_CC" +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG @@ -6978,6 +7637,13 @@ dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], @@ -7017,6 +7683,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) # _LT_DECL_SED # ------------ @@ -7110,8 +7785,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES], # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes @@ -7150,208 +7825,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES -# _LT_PROG_XSI_SHELLFNS -# --------------------- -# Bourne and XSI compatible variants of some useful shell functions. -m4_defun([_LT_PROG_XSI_SHELLFNS], -[case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $[*] )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) -dnl func_dirname_and_basename -dnl A portable version of this function is already defined in general.m4sh -dnl so there is no need for it here. + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) -# sed scripts: -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[[^=]]*=//' + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` -} + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$[@]"` -} +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` -} + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) -_LT_EOF -esac + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]+=\$[2]" -} -_LT_EOF +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[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 ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]=\$$[1]\$[2]" -} - -_LT_EOF + *-*-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 ;; - esac + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#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 ]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/macros/ltmain.sh b/macros/ltmain.sh old mode 100755 new mode 100644 index b36c4ad..63ae69d --- a/macros/ltmain.sh +++ b/macros/ltmain.sh @@ -1,9 +1,9 @@ -# Generated from ltmain.m4sh. -# ltmain.sh (GNU libtool) 2.2.6 +# libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 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. @@ -32,50 +32,57 @@ # # Provide generalized library-building support services. # -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print informational messages (default) -# --version print version information -# -h, --help print short or long help message +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory # -# MODE-ARGS vary depending on the MODE. +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.6 -# automake: $automake_version -# autoconf: $autoconf_version +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version # # Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . -PROGRAM=ltmain.sh +PROGRAM=libtool PACKAGE=libtool -VERSION=2.2.6 +VERSION=2.4.2 TIMESTAMP="" -package_revision=1.3012 +package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -91,10 +98,15 @@ fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + # NLS nuisances: We save the old values to restore during execute mode. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES @@ -107,24 +119,28 @@ do lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL $lt_unset CDPATH +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" : ${CP="cp -f"} -: ${ECHO="echo"} -: ${EGREP="/usr/bin/grep -E"} -: ${FGREP="/usr/bin/grep -F"} -: ${GREP="/usr/bin/grep"} -: ${LN_S="ln -s"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="/opt/local/bin/gsed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} @@ -144,6 +160,27 @@ IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: @@ -158,33 +195,183 @@ basename="s,^.*/,," # those functions but instead duplicate the functionality here. func_dirname_and_basename () { - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + 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 may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } -# Generated shell functions inserted here. +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} # The name of this program: -# In the unlikely event $progname began with a '-', it would play havoc with -# func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result -case $progname in - -*) progname=./$progname ;; -esac # Make sure we have an absolute path for reexecution: case $progpath in @@ -196,7 +383,7 @@ case $progpath in ;; *) save_IFS="$IFS" - IFS=: + IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break @@ -215,6 +402,15 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. @@ -243,7 +439,7 @@ opt_warning=: # name if it has been set yet. func_echo () { - $ECHO "$progname${mode+: }$mode: $*" + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... @@ -258,18 +454,25 @@ func_verbose () : } +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + # func_error arg... # Echo program name prefixed message to standard error. func_error () { - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : @@ -326,9 +529,9 @@ func_mkdir_p () case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done - my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do @@ -378,7 +581,7 @@ func_mktempdir () func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi - $ECHO "X$my_tmpdir" | $Xsed + $ECHO "$my_tmpdir" } @@ -392,7 +595,7 @@ func_quote_for_eval () { case $1 in *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac @@ -419,7 +622,7 @@ func_quote_for_expand () { case $1 in *[\\\`\"]*) - my_arg=`$ECHO "X$1" | $Xsed \ + my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; @@ -488,15 +691,39 @@ func_show_eval_locale () fi } - - +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} # func_version # Echo version message to standard output and exit. func_version () { - $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ @@ -509,22 +736,28 @@ func_version () # Echo short help message to standard output and exit. func_usage () { - $SED -n '/^# Usage:/,/# -h/ { + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" - $ECHO + echo $ECHO "run \`$progname --help | more' for full usage" exit $? } -# func_help -# Echo long help message to standard output and exit. +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. func_help () { + $opt_debug + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print s/^# // s/^# *$// s*\$progname*'$progname'* @@ -534,11 +767,18 @@ func_help () s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p - }' < "$progpath" - exit $? + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi } # func_missing_arg argname @@ -546,63 +786,106 @@ func_help () # exit_cmd. func_missing_arg () { - func_error "missing argument for $1" + $opt_debug + + func_error "missing argument for $1." exit_cmd=exit } -exit_cmd=: +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: -# Check that we have a working $ECHO. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell, and then maybe $ECHO will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. @@ -636,16 +919,16 @@ func_config () # Display the features supported by this script. func_features () { - $ECHO "host: $host" + echo "host: $host" if test "$build_libtool_libs" = yes; then - $ECHO "enable shared libraries" + echo "enable shared libraries" else - $ECHO "disable shared libraries" + echo "disable shared libraries" fi if test "$build_old_libs" = yes; then - $ECHO "enable static libraries" + echo "enable static libraries" else - $ECHO "disable static libraries" + echo "disable static libraries" fi exit $? @@ -692,117 +975,209 @@ func_enable_tag () esac } -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () { + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - # Parse non-mode specific arguments: - while test "$#" -gt 0; do +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do opt="$1" shift - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" + --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" - opt_debug='set -x' $opt_debug ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift + --dry-run|--dryrun|-n) + opt_dry_run=: ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" shift ;; - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: + opt_preserve_dup_deps=: ;; - - --verbose| -v) preserve_args="$preserve_args $opt" + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) opt_silent=false +func_append preserve_args " $opt" ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" shift ;; + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) @@ -810,82 +1185,44 @@ func_enable_tag () opt_duplicate_compiler_generated_deps=: ;; *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} + $opt_help || { + # Sanity checks first: + func_check_version_match -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" fi - exit $EXIT_MISMATCH - fi -} - - -## ----------- ## -## Main. ## -## ----------- ## - -$opt_help || { - # Sanity checks first: - func_check_version_match + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi - test -z "$mode" && func_fatal_error "error: you must specify a MODE." + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." -} +## ----------- ## +## Main. ## +## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. @@ -950,12 +1287,9 @@ func_ltwrapper_executable_p () # temporary ltwrapper_script. func_ltwrapper_scriptname () { - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file @@ -1001,6 +1335,37 @@ func_source () } +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. @@ -1013,13 +1378,15 @@ func_infer_tag () if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) @@ -1030,11 +1397,13 @@ func_infer_tag () CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. @@ -1097,6 +1466,486 @@ EOF } } + +################################################## +# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # +################################################## + +# func_convert_core_file_wine_to_w32 ARG +# Helper function used by file name conversion functions when $build is *nix, +# and $host is mingw, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. +# +# ARG is the $build file name to be converted to w32 format. +# Result is available in $func_convert_core_file_wine_to_w32_result, and will +# be empty on error (or when ARG is empty) +func_convert_core_file_wine_to_w32 () +{ + $opt_debug + func_convert_core_file_wine_to_w32_result="$1" + if test -n "$1"; then + # Unfortunately, winepath does not exit with a non-zero error code, so we + # are forced to check the contents of stdout. On the other hand, if the + # command is not found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both error code of + # zero AND non-empty stdout, which explains the odd construction: + func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + # func_mode_compile arg... func_mode_compile () { @@ -1137,12 +1986,12 @@ func_mode_compile () ;; -pie | -fpie | -fPIE) - pie_flag="$pie_flag $arg" + func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" + func_append later " $arg" continue ;; @@ -1163,15 +2012,14 @@ func_mode_compile () save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" - func_quote_for_eval "$arg" - lastarg="$lastarg $func_quote_for_eval_result" + func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" + func_append base_compile " $lastarg" continue ;; @@ -1187,8 +2035,7 @@ func_mode_compile () esac # case $arg_mode # Aesthetically quote the previous argument. - func_quote_for_eval "$lastarg" - base_compile="$base_compile $func_quote_for_eval_result" + func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in @@ -1213,7 +2060,7 @@ func_mode_compile () *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx) + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; @@ -1288,7 +2135,7 @@ func_mode_compile () # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then - output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= @@ -1319,17 +2166,16 @@ compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi - removelist="$removelist $output_obj" + func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" + func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result @@ -1349,7 +2195,7 @@ compiler." if test -z "$output_obj"; then # Place PIC objects in $objdir - command="$command -o $lobj" + func_append command " -o $lobj" fi func_show_eval_locale "$command" \ @@ -1396,11 +2242,11 @@ compiler." command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then - command="$command -o $obj" + func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" + func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' @@ -1445,13 +2291,13 @@ compiler." } $opt_help || { -test "$mode" = compile && func_mode_compile ${1+"$@"} + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. - case $mode in + case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. @@ -1482,10 +2328,11 @@ This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. @@ -1538,7 +2385,7 @@ either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: - -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." @@ -1558,6 +2405,8 @@ The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) @@ -1586,6 +2435,11 @@ The following components of LINK-COMMAND are treated specially: -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. @@ -1619,18 +2473,44 @@ Otherwise, only FILE itself is deleted using RM." ;; *) - func_fatal_help "invalid operation mode \`$mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac - $ECHO + echo $ECHO "Try \`$progname --help' for more information about other modes." - - exit $? } - # Now that we've collected a possible --mode arg, show help if necessary - $opt_help && func_mode_help +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi # func_mode_execute arg... @@ -1643,13 +2523,16 @@ func_mode_execute () func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do + for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" @@ -1671,7 +2554,7 @@ func_mode_execute () dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" + func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" @@ -1712,7 +2595,7 @@ func_mode_execute () for file do case $file in - -*) ;; + -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then @@ -1728,8 +2611,7 @@ func_mode_execute () ;; esac # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" + func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then @@ -1754,29 +2636,66 @@ func_mode_execute () # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - $ECHO "export $shlibpath_var" + echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } -test "$mode" = execute && func_mode_execute ${1+"$@"} +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug - libdirs="$nonopt" + libs= + libdirs= admincmds= - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. @@ -1786,7 +2705,7 @@ func_mode_finish () if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done @@ -1795,53 +2714,55 @@ func_mode_finish () # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS - $ECHO "X----------------------------------------------------------------------" | $Xsed - $ECHO "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - $ECHO - $ECHO "If you ever happen to want to link against installed libraries" - $ECHO "in a given directory, LIBDIR, you must either use libtool, and" - $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" - $ECHO "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" - $ECHO " during execution" - fi - if test -n "$runpath_var"; then - $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" - $ECHO " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $ECHO + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo - $ECHO "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" - $ECHO "pages." - ;; - *) - $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - $ECHO "X----------------------------------------------------------------------" | $Xsed + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi exit $EXIT_SUCCESS } -test "$mode" = finish && func_mode_finish ${1+"$@"} +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... @@ -1852,7 +2773,7 @@ func_mode_install () # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. - $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -1866,7 +2787,12 @@ func_mode_install () # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac # We need to accept at least all the BSD install flags. dest= @@ -1876,10 +2802,12 @@ func_mode_install () install_type= isdir=no stripme= + no_mode=: for arg do + arg2= if test -n "$dest"; then - files="$files $dest" + func_append files " $dest" dest=$arg continue fi @@ -1887,10 +2815,9 @@ func_mode_install () case $arg in -d) isdir=yes ;; -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac + if $install_cp; then :; else + prev=$arg + fi ;; -g | -m | -o) prev=$arg @@ -1904,6 +2831,10 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi prev= else dest=$arg @@ -1914,7 +2845,11 @@ func_mode_install () # Aesthetically quote the argument. func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -1923,6 +2858,13 @@ func_mode_install () test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" @@ -1977,10 +2919,13 @@ func_mode_install () case $file in *.$libext) # Do the static libraries later. - staticlibs="$staticlibs $file" + func_append staticlibs " $file" ;; *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" @@ -1994,23 +2939,23 @@ func_mode_install () if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; + *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; + *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" - dir="$dir$objdir" + func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that @@ -2023,9 +2968,9 @@ func_mode_install () if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" @@ -2043,7 +2988,7 @@ func_mode_install () test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. - func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in @@ -2083,7 +3028,7 @@ func_mode_install () func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) @@ -2183,7 +3128,7 @@ func_mode_install () if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no @@ -2202,7 +3147,7 @@ func_mode_install () file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. - relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" @@ -2221,7 +3166,7 @@ func_mode_install () } else # Install the binary that we compiled earlier. - file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi @@ -2257,11 +3202,13 @@ func_mode_install () # Set up the ranlib parameters. oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. @@ -2280,7 +3227,7 @@ func_mode_install () fi } -test "$mode" = install && func_mode_install ${1+"$@"} +test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -2323,6 +3270,22 @@ func_generate_dlsyms () extern \"C\" { #endif +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* 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 con'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 + /* External symbol declarations for the compiler. */\ " @@ -2332,10 +3295,11 @@ extern \"C\" { $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. - progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then @@ -2371,7 +3335,7 @@ extern \"C\" { eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in - *cygwin | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; @@ -2384,10 +3348,52 @@ extern \"C\" { func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac done $opt_dry_run || { @@ -2415,36 +3421,19 @@ extern \"C\" { if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else - $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* | *cegcc* ) - $ECHO >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - $ECHO >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist +extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist +LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," @@ -2457,7 +3446,7 @@ lt_${my_prefix}_LTX_preloaded_symbols[] = eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; @@ -2484,7 +3473,7 @@ static const void *lt_preloaded_setup() { # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; @@ -2500,7 +3489,7 @@ static const void *lt_preloaded_setup() { for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; + *) func_append symtab_cflags " $arg" ;; esac done @@ -2515,16 +3504,16 @@ static const void *lt_preloaded_setup() { case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; @@ -2538,8 +3527,8 @@ static const void *lt_preloaded_setup() { # really was required. # Nullify the symbol file. - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } @@ -2549,6 +3538,7 @@ static const void *lt_preloaded_setup() { # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug @@ -2559,9 +3549,11 @@ func_win32_libid () win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ @@ -2590,6 +3582,131 @@ func_win32_libid () $ECHO "$win32_libid_type" } +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} # func_extract_an_archive dir oldlib @@ -2598,7 +3715,18 @@ func_extract_an_archive () $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else @@ -2669,7 +3797,7 @@ func_extract_archives () darwin_file= darwin_files= for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ @@ -2684,25 +3812,30 @@ func_extract_archives () func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } - -# func_emit_wrapper_part1 [arg=no] +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. # -# Emit the first part of a libtool wrapper script on stdout. -# For more information, see the description associated with -# func_emit_wrapper(), below. -func_emit_wrapper_part1 () +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () { - func_emit_wrapper_part1_arg1=no - if test -n "$1" ; then - func_emit_wrapper_part1_arg1=$1 - fi + func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL @@ -2718,7 +3851,6 @@ func_emit_wrapper_part1 () # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible @@ -2749,31 +3881,135 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then - ECHO=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$ECHO works! - : - else - # Restart under the correct shell, and then maybe \$ECHO will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ " - $ECHO "\ + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. - thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do - destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then @@ -2783,30 +4019,13 @@ else esac fi - file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done -" -} -# end: func_emit_wrapper_part1 - -# func_emit_wrapper_part2 [arg=no] -# -# Emit the second part of a libtool wrapper script on stdout. -# For more information, see the description associated with -# func_emit_wrapper(), below. -func_emit_wrapper_part2 () -{ - func_emit_wrapper_part2_arg1=no - if test -n "$1" ; then - func_emit_wrapper_part2_arg1=$1 - fi - - $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then @@ -2814,7 +4033,7 @@ func_emit_wrapper_part2 () fi # remove .libs from thisdir case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi @@ -2869,6 +4088,18 @@ func_emit_wrapper_part2 () if test -f \"\$progdir/\$program\"; then" + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ @@ -2877,253 +4108,28 @@ func_emit_wrapper_part2 () # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 + func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } -# end: func_emit_wrapper_part2 - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=no - if test -n "$1" ; then - func_emit_wrapper_arg1=$1 - fi - - # split this up so that func_emit_cwrapperexe_src - # can call each part independently. - func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" - func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" -} - - -# func_to_host_path arg -# -# Convert paths to host format when used with build tools. -# Intended for use with "native" mingw (where libtool itself -# is running under the msys shell), or in the following cross- -# build environments: -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# where wine is equipped with the `winepath' executable. -# In the native mingw case, the (msys) shell automatically -# converts paths for any non-msys applications it launches, -# but that facility isn't available from inside the cwrapper. -# Similar accommodations are necessary for $host mingw and -# $build cygwin. Calling this function does no harm for other -# $host/$build combinations not listed above. -# -# ARG is the path (on $build) that should be converted to -# the proper representation for $host. The result is stored -# in $func_to_host_path_result. -func_to_host_path () -{ - func_to_host_path_result="$1" - if test -n "$1" ; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - case $build in - *mingw* ) # actually, msys - # awkward: cmd appends spaces to result - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - func_to_host_path_tmp1=`( cmd //c echo "$1" |\ - $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_path_tmp1=`cygpath -w "$1"` - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # Unfortunately, winepath does not exit with a non-zero - # error code, so we are forced to check the contents of - # stdout. On the other hand, if the command is not - # found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both - # error code of zero AND non-empty stdout, which explains - # the odd construction: - func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` - else - # Allow warning below. - func_to_host_path_result="" - fi - ;; - esac - if test -z "$func_to_host_path_result" ; then - func_error "Could not determine host path corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_path_result="$1" - fi - ;; - esac - fi -} -# end: func_to_host_path -# func_to_host_pathlist arg -# -# Convert pathlists to host format when used with build tools. -# See func_to_host_path(), above. This function supports the -# following $build/$host combinations (but does no harm for -# combinations not listed here): -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# -# Path separators are also converted from $build format to -# $host format. If ARG begins or ends with a path separator -# character, it is preserved (but converted to $host format) -# on output. -# -# ARG is a pathlist (on $build) that should be converted to -# the proper representation on $host. The result is stored -# in $func_to_host_pathlist_result. -func_to_host_pathlist () -{ - func_to_host_pathlist_result="$1" - if test -n "$1" ; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_to_host_pathlist_tmp2="$1" - # Once set for this call, this variable should not be - # reassigned. It is used in tha fallback case. - func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e 's|^:*||' -e 's|:*$||'` - case $build in - *mingw* ) # Actually, msys. - # Awkward: cmd appends spaces to result. - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # unfortunately, winepath doesn't convert pathlists - func_to_host_pathlist_result="" - func_to_host_pathlist_oldIFS=$IFS - IFS=: - for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do - IFS=$func_to_host_pathlist_oldIFS - if test -n "$func_to_host_pathlist_f" ; then - func_to_host_path "$func_to_host_pathlist_f" - if test -n "$func_to_host_path_result" ; then - if test -z "$func_to_host_pathlist_result" ; then - func_to_host_pathlist_result="$func_to_host_path_result" - else - func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" - fi - fi - fi - IFS=: - done - IFS=$func_to_host_pathlist_oldIFS - ;; - esac - if test -z "$func_to_host_pathlist_result" ; then - func_error "Could not determine the host path(s) corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This may break if $1 contains DOS-style drive - # specifications. The fix is not to complicate the expression - # below, but for the user to provide a working wine installation - # with winepath so that path translation in the cross-to-mingw - # case works properly. - lt_replace_pathsep_nix_to_dos="s|:|;|g" - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_replace_pathsep_nix_to_dos"` - fi - # Now, add the leading and trailing path separators back - case "$1" in - :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" - ;; - esac - case "$1" in - *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" - ;; - esac - ;; - esac - fi -} -# end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout @@ -3141,31 +4147,23 @@ func_emit_cwrapperexe_src () This wrapper executable should never be moved out of the build directory. If it is, it will not operate correctly. - - Currently, it simply execs the wrapper *script* "$SHELL $output", - but could eventually absorb all of the scripts functionality and - exec $objdir/$outputname directly. */ EOF cat <<"EOF" +#ifdef _MSC_VER +# define _CRT_SECURE_NO_DEPRECATE 1 +#endif #include #include #ifdef _MSC_VER # include # include # include -# define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include -# define HAVE_SETENV -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif # endif #endif #include @@ -3177,6 +4175,44 @@ int setenv (const char *, const char *, int); #include #include +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) @@ -3192,14 +4228,7 @@ int setenv (const char *, const char *, int); # define S_IXGRP 0 #endif -#ifdef _MSC_VER -# define S_IXUSR _S_IEXEC -# define stat _stat -# ifndef _INTPTR_T_DEFINED -# define intptr_t int -# endif -#endif - +/* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' @@ -3230,10 +4259,6 @@ int setenv (const char *, const char *, int); # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ -#ifdef __CYGWIN__ -# define FOPEN_WB "wb" -#endif - #ifndef FOPEN_WB # define FOPEN_WB "w" #endif @@ -3246,22 +4271,13 @@ int setenv (const char *, const char *, int); if (stale) { free ((void *) stale); stale = 0; } \ } while (0) -#undef LTWRAPPER_DEBUGPRINTF -#if defined DEBUGWRAPPER -# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args -static void -ltwrapper_debugprintf (const char *fmt, ...) -{ - va_list args; - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); -} +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; #else -# define LTWRAPPER_DEBUGPRINTF(args) +static int lt_debug = 0; #endif -const char *program_name = NULL; +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); @@ -3271,41 +4287,27 @@ char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); -void lt_fatal (const char *message, ...); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_opt_process_env_set (const char *arg); -void lt_opt_process_env_prepend (const char *arg); -void lt_opt_process_env_append (const char *arg); -int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); - -static const char *script_text_part1 = -EOF - - func_emit_wrapper_part1 yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ "/' -e 's/$/\\n"/' - echo ";" - cat <"))); + lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", + nonnull (lt_argv_zero)); for (i = 0; i < newargc; i++) { - LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", + i, nonnull (newargz[i])); } EOF @@ -3560,11 +4523,14 @@ EOF mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ + newargz = prepare_spawn (newargz); rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ - LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + lt_debugprintf (__FILE__, __LINE__, + "(main) failed to launch target \"%s\": %s\n", + lt_argv_zero, nonnull (strerror (errno))); return 127; } return rval; @@ -3586,7 +4552,7 @@ xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) - lt_fatal ("Memory exhausted"); + lt_fatal (__FILE__, __LINE__, "memory exhausted"); return p; } @@ -3620,8 +4586,8 @@ check_executable (const char *path) { struct stat st; - LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", - path ? (*path ? path : "EMPTY!") : "NULL!")); + lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", + nonempty (path)); if ((!path) || (!*path)) return 0; @@ -3638,8 +4604,8 @@ make_executable (const char *path) int rval = 0; struct stat st; - LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", - path ? (*path ? path : "EMPTY!") : "NULL!")); + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); if ((!path) || (!*path)) return 0; @@ -3665,8 +4631,8 @@ find_executable (const char *wrapper) int tmp_len; char *concat_name; - LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", - wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; @@ -3719,7 +4685,8 @@ find_executable (const char *wrapper) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); @@ -3744,7 +4711,8 @@ find_executable (const char *wrapper) } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); @@ -3770,8 +4738,9 @@ chase_symlinks (const char *pathspec) int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { - LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", - tmp_pathspec)); + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) @@ -3793,8 +4762,9 @@ chase_symlinks (const char *pathspec) } else { - char *errstr = strerror (errno); - lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); @@ -3807,7 +4777,8 @@ chase_symlinks (const char *pathspec) tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { - lt_fatal ("Could not follow symlinks for %s", pathspec); + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif @@ -3833,11 +4804,25 @@ strendzap (char *str, const char *pat) return str; } +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + static void -lt_error_core (int exit_status, const char *mode, +lt_error_core (int exit_status, const char *file, + int line, const char *mode, const char *message, va_list ap) { - fprintf (stderr, "%s: %s: ", program_name, mode); + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); @@ -3846,20 +4831,32 @@ lt_error_core (int exit_status, const char *mode, } void -lt_fatal (const char *message, ...) +lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + void lt_setenv (const char *name, const char *value) { - LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", - (name ? name : ""), - (value ? value : ""))); + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ @@ -3904,95 +4901,12 @@ lt_extend_str (const char *orig_value, const char *add, int to_end) return new_value; } -int -lt_split_name_value (const char *arg, char** name, char** value) -{ - const char *p; - int len; - if (!arg || !*arg) - return 1; - - p = strchr (arg, (int)'='); - - if (!p) - return 1; - - *value = xstrdup (++p); - - len = strlen (arg) - strlen (*value); - *name = XMALLOC (char, len); - strncpy (*name, arg, len-1); - (*name)[len - 1] = '\0'; - - return 0; -} - -void -lt_opt_process_env_set (const char *arg) -{ - char *name = NULL; - char *value = NULL; - - if (lt_split_name_value (arg, &name, &value) != 0) - { - XFREE (name); - XFREE (value); - lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); - } - - lt_setenv (name, value); - XFREE (name); - XFREE (value); -} - -void -lt_opt_process_env_prepend (const char *arg) -{ - char *name = NULL; - char *value = NULL; - char *new_value = NULL; - - if (lt_split_name_value (arg, &name, &value) != 0) - { - XFREE (name); - XFREE (value); - lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); - } - - new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - XFREE (name); - XFREE (value); -} - -void -lt_opt_process_env_append (const char *arg) -{ - char *name = NULL; - char *value = NULL; - char *new_value = NULL; - - if (lt_split_name_value (arg, &name, &value) != 0) - { - XFREE (name); - XFREE (value); - lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); - } - - new_value = lt_extend_str (getenv (name), value, 1); - lt_setenv (name, new_value); - XFREE (new_value); - XFREE (name); - XFREE (value); -} - void lt_update_exe_path (const char *name, const char *value) { - LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - (name ? name : ""), - (value ? value : ""))); + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); if (name && *name && value && *value) { @@ -4011,9 +4925,9 @@ lt_update_exe_path (const char *name, const char *value) void lt_update_lib_path (const char *name, const char *value) { - LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - (name ? name : ""), - (value ? value : ""))); + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); if (name && *name && value && *value) { @@ -4023,11 +4937,158 @@ lt_update_lib_path (const char *name, const char *value) } } +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} EOF } # end: func_emit_cwrapperexe_src +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + # func_mode_link arg... func_mode_link () { @@ -4072,6 +5133,7 @@ func_mode_link () new_inherited_linker_flags= avoid_version=no + bindir= dlfiles= dlprefiles= dlself=no @@ -4164,6 +5226,11 @@ func_mode_link () esac case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. @@ -4195,9 +5262,9 @@ func_mode_link () ;; *) if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" + func_append dlfiles " $arg" else - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $arg" fi prev= continue @@ -4221,7 +5288,7 @@ func_mode_link () *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; @@ -4240,7 +5307,7 @@ func_mode_link () moreargs= for fil in `cat "$save_arg"` do -# moreargs="$moreargs $fil" +# func_append moreargs " $fil" arg=$fil # A libtool-controlled object. @@ -4269,7 +5336,7 @@ func_mode_link () if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -4281,7 +5348,7 @@ func_mode_link () # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi @@ -4351,12 +5418,12 @@ func_mode_link () if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; - *) rpath="$rpath $arg" ;; + *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; + *) func_append xrpath " $arg" ;; esac fi prev= @@ -4368,28 +5435,28 @@ func_mode_link () continue ;; weak) - weak_libs="$weak_libs $arg" + func_append weak_libs " $arg" prev= continue ;; xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) - compiler_flags="$compiler_flags $qarg" + func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" @@ -4425,6 +5492,11 @@ func_mode_link () continue ;; + -bindir) + prev=bindir + continue + ;; + -dlopen) prev=dlfiles continue @@ -4475,15 +5547,16 @@ func_mode_link () ;; -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result - if test -z "$dir"; then + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -4495,24 +5568,30 @@ func_mode_link () ;; esac case "$deplibs " in - *" -L$dir "*) ;; + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; - *) dllsearchpath="$dllsearchpath:$dir";; + *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -4522,7 +5601,7 @@ func_mode_link () -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -4536,7 +5615,7 @@ func_mode_link () ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" + func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) @@ -4556,7 +5635,7 @@ func_mode_link () ;; esac fi - deplibs="$deplibs $arg" + func_append deplibs " $arg" continue ;; @@ -4568,21 +5647,22 @@ func_mode_link () # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; @@ -4649,13 +5729,17 @@ func_mode_link () # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac continue ;; @@ -4708,8 +5792,8 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" @@ -4724,9 +5808,9 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" @@ -4754,23 +5838,27 @@ func_mode_link () arg="$func_quote_for_eval_result" ;; - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -F/path gives path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # @file GCC response files + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" + func_append compiler_flags " $arg" continue ;; @@ -4782,7 +5870,7 @@ func_mode_link () *.$objext) # A standard object. - objs="$objs $arg" + func_append objs " $arg" ;; *.lo) @@ -4813,7 +5901,7 @@ func_mode_link () if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -4825,7 +5913,7 @@ func_mode_link () # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi @@ -4870,24 +5958,25 @@ func_mode_link () *.$libext) # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" + func_append deplibs " $arg" + func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. + func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" + func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $func_resolve_sysroot_result" prev= else - deplibs="$deplibs $arg" + func_append deplibs " $func_resolve_sysroot_result" fi continue ;; @@ -4925,7 +6014,7 @@ func_mode_link () if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi @@ -4934,6 +6023,8 @@ func_mode_link () func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" @@ -4954,12 +6045,12 @@ func_mode_link () # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - libs="$libs $deplib" + func_append libs " $deplib" done if test "$linkmode" = lib; then @@ -4972,9 +6063,9 @@ func_mode_link () if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac - pre_post_deps="$pre_post_deps $pre_post_dep" + func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= @@ -5041,17 +6132,19 @@ func_mode_link () for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= + func_resolve_sysroot "$lib" case $lib in - *.la) func_source "$lib" ;; + *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do - deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + func_basename "$deplib" + deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; + *) func_append deplibs " $deplib" ;; esac done done @@ -5067,16 +6160,17 @@ func_mode_link () lib= found=no case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - compiler_flags="$compiler_flags $deplib" + func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi @@ -5161,7 +6255,7 @@ func_mode_link () if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi @@ -5174,7 +6268,8 @@ func_mode_link () test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then @@ -5188,7 +6283,8 @@ func_mode_link () finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" @@ -5199,17 +6295,21 @@ func_mode_link () -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" - dir=$func_stripname_result + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; - *.la) lib="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" @@ -5227,7 +6327,7 @@ func_mode_link () match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi @@ -5237,15 +6337,15 @@ func_mode_link () ;; esac if test "$valid_a_lib" != yes; then - $ECHO + echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because the file extensions .$libext of this argument makes me believe" - $ECHO "*** that it is just a static archive that I should not use here." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" @@ -5272,11 +6372,11 @@ func_mode_link () if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. - newdlprefiles="$newdlprefiles $deplib" + func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - newdlfiles="$newdlfiles $deplib" + func_append newdlfiles " $deplib" fi fi continue @@ -5318,20 +6418,20 @@ func_mode_link () # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi - dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then @@ -5342,20 +6442,20 @@ func_mode_link () func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $deplib" done continue fi # $pass = conv @@ -5363,9 +6463,15 @@ func_mode_link () # Get the name of the library we link against. linklib= - for l in $old_library $library_names; do - linklib="$l" - done + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi @@ -5382,9 +6488,9 @@ func_mode_link () # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" + func_append dlprefiles " $lib $dependency_libs" else - newdlfiles="$newdlfiles $lib" + func_append newdlfiles " $lib" fi continue fi # $pass = dlopen @@ -5406,14 +6512,14 @@ func_mode_link () # Find the relevant object directory and library name. if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else - dir="$libdir" - absdir="$libdir" + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else @@ -5421,12 +6527,12 @@ func_mode_link () dir="$ladir" absdir="$abs_ladir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" @@ -5437,20 +6543,46 @@ func_mode_link () if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac fi # $pass = dlpreopen if test -z "$libdir"; then @@ -5468,7 +6600,7 @@ func_mode_link () if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" + func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no @@ -5481,7 +6613,8 @@ func_mode_link () for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? @@ -5492,12 +6625,12 @@ func_mode_link () # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... @@ -5512,7 +6645,7 @@ func_mode_link () # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; + *) func_append temp_rpath "$absdir:" ;; esac fi @@ -5524,7 +6657,7 @@ func_mode_link () *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -5533,7 +6666,7 @@ func_mode_link () *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -5558,12 +6691,12 @@ func_mode_link () case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" + func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" + func_append notinst_deplibs " $lib" need_relink=yes fi ;; @@ -5580,7 +6713,7 @@ func_mode_link () fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - $ECHO + echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else @@ -5598,7 +6731,7 @@ func_mode_link () *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -5607,7 +6740,7 @@ func_mode_link () *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -5661,7 +6794,7 @@ func_mode_link () linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$mode" != relink; then + if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= @@ -5683,9 +6816,9 @@ func_mode_link () if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then - $ECHO - $ECHO "*** And there doesn't seem to be a static archive available" - $ECHO "*** The link will probably fail, sorry" + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi @@ -5712,12 +6845,12 @@ func_mode_link () test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -5739,7 +6872,7 @@ func_mode_link () if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then @@ -5753,13 +6886,13 @@ func_mode_link () test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi - if test "$linkmode" = prog || test "$mode" = relink; then + if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= @@ -5773,7 +6906,7 @@ func_mode_link () elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then @@ -5790,7 +6923,7 @@ func_mode_link () if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -5825,21 +6958,21 @@ func_mode_link () # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. - $ECHO + echo $ECHO "*** Warning: This system can not link to static lib archive $lib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then - $ECHO "*** But as you try to build a module library, libtool will still create " - $ECHO "*** a static module, that should work as long as the dlopening application" - $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module @@ -5867,37 +7000,46 @@ func_mode_link () temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; + *) func_append xrpath " $temp_xrpath";; esac;; - *) temp_deplibs="$temp_deplibs $libdir";; + *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi - newlib_search_path="$newlib_search_path $absdir" + func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do + path= case $deplib in -L*) path="$deplib" ;; *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; @@ -5924,8 +7066,8 @@ func_mode_link () if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi @@ -5958,7 +7100,7 @@ func_mode_link () compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else - compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" @@ -5975,7 +7117,7 @@ func_mode_link () for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; + *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= @@ -6033,10 +7175,10 @@ func_mode_link () -L*) case " $tmp_libs " in *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" @@ -6052,7 +7194,7 @@ func_mode_link () ;; esac if test -n "$i" ; then - tmp_libs="$tmp_libs $i" + func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs @@ -6093,7 +7235,7 @@ func_mode_link () # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" - objs="$objs$old_deplibs" + func_append objs "$old_deplibs" ;; lib) @@ -6126,10 +7268,10 @@ func_mode_link () if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" + func_append libobjs " $objs" fi fi @@ -6188,13 +7330,14 @@ func_mode_link () # which has an extra 1 added just for fun # case $version_type in + # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; - freebsd-aout|freebsd-elf|sunos) + freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" @@ -6304,7 +7447,7 @@ func_mode_link () versuffix="$major.$revision" ;; - linux) + linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" @@ -6327,7 +7470,7 @@ func_mode_link () done # Make executables depend on our current version. - verstring="$verstring:${current}.0" + func_append verstring ":${current}.0" ;; qnx) @@ -6395,10 +7538,10 @@ func_mode_link () fi func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" + func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= - if test "$mode" != relink; then + if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= @@ -6414,7 +7557,7 @@ func_mode_link () continue fi fi - removelist="$removelist $p" + func_append removelist " $p" ;; *) ;; esac @@ -6425,27 +7568,28 @@ func_mode_link () # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" + func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do - # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` - # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` - # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then @@ -6459,7 +7603,7 @@ func_mode_link () for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; + *) func_append dlfiles " $lib" ;; esac done @@ -6469,19 +7613,19 @@ func_mode_link () for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; + *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" + func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. @@ -6498,7 +7642,7 @@ func_mode_link () *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" + func_append deplibs " -lc" fi ;; esac @@ -6547,7 +7691,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac @@ -6558,21 +7702,21 @@ EOF set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which I believe you do not have" - $ECHO "*** because a test_compile did reveal that the linker did not use it for" - $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which I believe you do not have" + echo "*** because a test_compile did reveal that the linker did not use it for" + echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi ;; *) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" ;; esac done @@ -6590,7 +7734,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac @@ -6601,29 +7745,29 @@ EOF set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because a test_compile did reveal that the linker did not use this one" - $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because a test_compile did reveal that the linker did not use this one" + echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning! Library $i is needed by this library but I was not able to" - $ECHO "*** make it link in! You will probably need to install it or some" - $ECHO "*** library that it depends on before this library will be fully" - $ECHO "*** functional. Installing it before continuing would be even better." + echo "*** make it link in! You will probably need to install it or some" + echo "*** library that it depends on before this library will be fully" + echo "*** functional. Installing it before continuing would be even better." fi ;; *) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" ;; esac done @@ -6640,15 +7784,27 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` + if test -n "$file_magic_glob"; then + libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` + else + libnameglob=$libname + fi + test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + if test "$want_nocaseglob" = yes; then + shopt -s nocaseglob + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | @@ -6665,13 +7821,13 @@ EOF potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -6680,12 +7836,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else @@ -6696,7 +7852,7 @@ EOF ;; *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. @@ -6712,7 +7868,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac @@ -6723,9 +7879,9 @@ EOF potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -6734,12 +7890,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else @@ -6750,32 +7906,32 @@ EOF ;; *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" - tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ - -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi - if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | - $GREP . >/dev/null; then - $ECHO + case $tmp_deplibs in + *[!\ \ ]*) + echo if test "X$deplibs_check_method" = "Xnone"; then - $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + echo "*** Warning: inter-library dependencies are not supported in this platform." else - $ECHO "*** Warning: inter-library dependencies are not known to be supported." + echo "*** Warning: inter-library dependencies are not known to be supported." fi - $ECHO "*** All declared inter-library dependencies are being dropped." + echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes - fi + ;; + esac ;; esac versuffix=$versuffix_save @@ -6787,23 +7943,23 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then - $ECHO - $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - $ECHO "*** a static module, that should work as long as the dlopening" - $ECHO "*** application is linked with the -dlopen flag." + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" @@ -6813,16 +7969,16 @@ EOF build_libtool_libs=no fi else - $ECHO "*** The inter-library dependencies that have been dropped here will be" - $ECHO "*** automatically added whenever a program is linked with this library" - $ECHO "*** or is declared to -dlopen it." + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then - $ECHO - $ECHO "*** Since this library must not contain undefined symbols," - $ECHO "*** because either the platform does not support them or" - $ECHO "*** it was explicitly requested with -no-undefined," - $ECHO "*** libtool will only create a static version of it." + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module @@ -6839,9 +7995,9 @@ EOF # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -6854,7 +8010,7 @@ EOF *) case " $deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -6864,10 +8020,10 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" @@ -6879,15 +8035,22 @@ EOF # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else @@ -6896,18 +8059,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" + func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi done @@ -6915,17 +8078,13 @@ EOF if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi @@ -6933,7 +8092,7 @@ EOF fi shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -6959,18 +8118,18 @@ EOF linknames= for link do - linknames="$linknames $link" + func_append linknames " $link" done # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" + func_append delfiles " $export_symbols" fi orig_export_symbols= @@ -7001,13 +8160,45 @@ EOF $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do + for cmd1 in $cmds; do IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. @@ -7029,7 +8220,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then @@ -7041,7 +8232,7 @@ EOF # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi @@ -7051,7 +8242,7 @@ EOF case " $convenience " in *" $test_deplib "*) ;; *) - tmp_deplibs="$tmp_deplibs $test_deplib" + func_append tmp_deplibs " $test_deplib" ;; esac done @@ -7071,21 +8262,21 @@ EOF test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" + func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi @@ -7130,7 +8321,8 @@ EOF save_libobjs=$libobjs fi save_output=$output - output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + func_basename "$output" + output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. @@ -7143,13 +8335,16 @@ EOF if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" - $ECHO 'INPUT (' > $output + echo 'INPUT (' > $output for obj in $save_libobjs do - $ECHO "$obj" >> $output + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output done - $ECHO ')' >> $output - delfiles="$delfiles $output" + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" @@ -7163,10 +8358,12 @@ EOF fi for obj do - $ECHO "$obj" >> $output + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." @@ -7190,17 +8387,19 @@ EOF # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext - objlist=$obj + objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result @@ -7210,11 +8409,12 @@ EOF # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi - delfiles="$delfiles $output" + func_append delfiles " $output" else output= @@ -7248,7 +8448,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -7269,7 +8469,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then @@ -7281,7 +8481,7 @@ EOF # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi @@ -7322,10 +8522,10 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi @@ -7341,7 +8541,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -7353,7 +8553,7 @@ EOF IFS="$save_ifs" # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -7434,18 +8634,21 @@ EOF if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' @@ -7505,8 +8708,8 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac @@ -7517,14 +8720,14 @@ EOF if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -7538,7 +8741,7 @@ EOF *) case " $compile_deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -7548,17 +8751,17 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. @@ -7566,7 +8769,7 @@ EOF # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done fi @@ -7585,18 +8788,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi case $host in @@ -7605,12 +8808,12 @@ EOF case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; - *) dllsearchpath="$dllsearchpath:$libdir";; + *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -7636,18 +8839,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + *) func_append finalize_perm_rpath " $libdir" ;; esac fi done @@ -7661,8 +8864,8 @@ EOF if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. - compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" @@ -7674,15 +8877,15 @@ EOF wrappers_required=yes case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; - *cegcc) - # Disable wrappers for cegcc, we are cross compiling anyway. - wrappers_required=no - ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no @@ -7691,13 +8894,19 @@ EOF esac if test "$wrappers_required" = no; then # Replace the output file specification. - compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' @@ -7720,7 +8929,7 @@ EOF # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -7728,7 +8937,7 @@ EOF # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -7738,11 +8947,18 @@ EOF # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + exit $EXIT_SUCCESS fi @@ -7757,7 +8973,7 @@ EOF if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then - relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= @@ -7769,13 +8985,19 @@ EOF fi # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + # Now create the wrapper script. func_verbose "creating $output" @@ -7793,18 +9015,7 @@ EOF fi done relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $ECHO for shipping. - if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -7884,7 +9095,7 @@ EOF else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" + func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" @@ -7892,10 +9103,10 @@ EOF if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. @@ -7906,10 +9117,10 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have @@ -7925,9 +9136,9 @@ EOF done | sort | sort -uc >/dev/null 2>&1); then : else - $ECHO "copying selected object files to avoid basename conflicts..." + echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= @@ -7951,18 +9162,30 @@ EOF esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" ;; - *) oldobjs="$oldobjs $obj" ;; + *) func_append oldobjs " $obj" ;; esac done fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." @@ -8036,7 +9259,7 @@ EOF done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi @@ -8056,12 +9279,23 @@ EOF *.la) func_basename "$deplib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" @@ -8075,9 +9309,9 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; - *) newdlfiles="$newdlfiles $lib" ;; + *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" @@ -8094,7 +9328,7 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done @@ -8106,7 +9340,7 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlfiles="$newdlfiles $abs" + func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= @@ -8115,15 +9349,33 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlprefiles="$newdlprefiles $abs" + func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; esac $ECHO > $output "\ # $outputname - a libtool library file @@ -8182,7 +9434,7 @@ relink_command=\"$relink_command\"" exit $EXIT_SUCCESS } -{ test "$mode" = link || test "$mode" = relink; } && +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} @@ -8202,9 +9454,9 @@ func_mode_uninstall () for arg do case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; esac done @@ -8213,24 +9465,23 @@ func_mode_uninstall () rmdirs= - origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then - objdir="$origobjdir" + odir="$objdir" else - objdir="$dir/$origobjdir" + odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" + test "$opt_mode" = uninstall && odir="$dir" - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; esac fi @@ -8256,18 +9507,17 @@ func_mode_uninstall () # Delete the libtool libraries and symlinks. for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" + func_append rmfiles " $odir/$n" done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$mode" in + case "$opt_mode" in clean) - case " $library_names " in - # " " in the beginning catches empty $dlname + case " $library_names " in *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then @@ -8295,19 +9545,19 @@ func_mode_uninstall () # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" + func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" + func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$mode" = clean ; then + if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) @@ -8317,7 +9567,7 @@ func_mode_uninstall () noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe - rmfiles="$rmfiles $file" + func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. @@ -8326,7 +9576,7 @@ func_mode_uninstall () func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename @@ -8334,12 +9584,12 @@ func_mode_uninstall () # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" + func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" + func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi @@ -8347,7 +9597,6 @@ func_mode_uninstall () esac func_show_eval "$RM $rmfiles" 'exit_status=1' done - objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do @@ -8359,16 +9608,16 @@ func_mode_uninstall () exit $exit_status } -{ test "$mode" = uninstall || test "$mode" = clean; } && +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} -test -z "$mode" && { +test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" diff --git a/macros/ltoptions.m4 b/macros/ltoptions.m4 index 34151a3..5d9acd8 100644 --- a/macros/ltoptions.m4 +++ b/macros/ltoptions.m4 @@ -1,13 +1,14 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 6 ltoptions.m4 +# serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) @@ -125,7 +126,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) @@ -133,13 +134,13 @@ case $host in esac test -z "$AS" && AS=as -_LT_DECL([], [AS], [0], [Assembler program])dnl +_LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], @@ -325,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], + [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], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) diff --git a/macros/ltversion.m4 b/macros/ltversion.m4 index b8e154f..07a8602 100644 --- a/macros/ltversion.m4 +++ b/macros/ltversion.m4 @@ -7,17 +7,17 @@ # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# Generated from ltversion.in. +# @configure_input@ -# serial 3012 ltversion.m4 +# serial 3337 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.2.6]) -m4_define([LT_PACKAGE_REVISION], [1.3012]) +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.6' -macro_revision='1.3012' +[macro_version='2.4.2' +macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/macros/lt~obsolete.m4 b/macros/lt~obsolete.m4 index 637bb20..c573da9 100644 --- a/macros/lt~obsolete.m4 +++ b/macros/lt~obsolete.m4 @@ -1,13 +1,13 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 4 lt~obsolete.m4 +# serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # @@ -77,7 +77,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) @@ -90,3 +89,10 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) -- 2.7.4