From 0327aee6a003bce6449f979cb5256a5a2afe4532 Mon Sep 17 00:00:00 2001 From: "Dr. James R. Maddison" Date: Thu, 28 Mar 2019 14:57:04 +0000 Subject: [PATCH 01/10] Use externally provided libspatialindex --- CMakeLists.txt | 57 +- COPYING | 10 +- doc/manual.tex | 13 +- spatialindex-1.8.5/AUTHORS | 14 - spatialindex-1.8.5/CMakeLists.txt | 240 - spatialindex-1.8.5/COPYING | 48 - spatialindex-1.8.5/ChangeLog | 656 - spatialindex-1.8.5/INSTALL | 231 - spatialindex-1.8.5/INSTALL.WIN | 28 - spatialindex-1.8.5/Makefile.am | 37 - spatialindex-1.8.5/Makefile.in | 942 - spatialindex-1.8.5/NEWS | 0 spatialindex-1.8.5/README | 10 - spatialindex-1.8.5/aclocal.m4 | 1154 - spatialindex-1.8.5/compile | 347 - spatialindex-1.8.5/config.guess | 1558 -- spatialindex-1.8.5/config.sub | 1791 -- spatialindex-1.8.5/configure | 17990 ---------------- spatialindex-1.8.5/configure.ac | 83 - spatialindex-1.8.5/depcomp | 522 - spatialindex-1.8.5/include/Makefile.am | 33 - spatialindex-1.8.5/include/Makefile.in | 582 - .../include/spatialindex/LineSegment.h | 108 - .../include/spatialindex/MVRTree.h | 94 - .../include/spatialindex/MovingPoint.h | 90 - .../include/spatialindex/MovingRegion.h | 175 - .../include/spatialindex/Point.h | 92 - .../include/spatialindex/RTree.h | 113 - .../include/spatialindex/Region.h | 111 - .../include/spatialindex/SpatialIndex.h | 266 - .../include/spatialindex/TPRTree.h | 90 - .../include/spatialindex/TimePoint.h | 100 - .../include/spatialindex/TimeRegion.h | 114 - .../include/spatialindex/Version.h | 48 - .../include/spatialindex/capi/BoundsQuery.h | 53 - .../include/spatialindex/capi/CountVisitor.h | 53 - .../include/spatialindex/capi/CustomStorage.h | 89 - .../include/spatialindex/capi/DataStream.h | 61 - .../include/spatialindex/capi/Error.h | 54 - .../include/spatialindex/capi/IdVisitor.h | 55 - .../include/spatialindex/capi/Index.h | 86 - .../include/spatialindex/capi/LeafQuery.h | 78 - .../include/spatialindex/capi/ObjVisitor.h | 56 - .../include/spatialindex/capi/Utility.h | 43 - .../include/spatialindex/capi/sidx_api.h | 366 - .../include/spatialindex/capi/sidx_config.h | 120 - .../include/spatialindex/capi/sidx_export.h | 44 - .../include/spatialindex/capi/sidx_impl.h | 46 - .../include/spatialindex/tools/PointerPool.h | 128 - .../include/spatialindex/tools/PoolPointer.h | 107 - .../include/spatialindex/tools/SmartPointer.h | 89 - .../include/spatialindex/tools/Tools.h | 512 - .../include/spatialindex/tools/rand48.h | 85 - spatialindex-1.8.5/install-sh | 322 - spatialindex-1.8.5/ltmain.sh | 9661 --------- spatialindex-1.8.5/m4/libtool.m4 | 7997 ------- spatialindex-1.8.5/m4/ltoptions.m4 | 384 - spatialindex-1.8.5/m4/ltsugar.m4 | 123 - spatialindex-1.8.5/m4/ltversion.m4 | 23 - spatialindex-1.8.5/m4/lt~obsolete.m4 | 98 - spatialindex-1.8.5/missing | 353 - spatialindex-1.8.5/mkinstalldirs | 150 - .../spatialindex-vc/spatialindex.vcproj | 960 - spatialindex-1.8.5/spatialindex.sln | 91 - spatialindex-1.8.5/src/CMakeLists.txt | 239 - spatialindex-1.8.5/src/Makefile.am | 5 - spatialindex-1.8.5/src/Makefile.in | 666 - spatialindex-1.8.5/src/capi/BoundsQuery.cc | 51 - spatialindex-1.8.5/src/capi/CountVisitor.cc | 57 - spatialindex-1.8.5/src/capi/CustomStorage.cc | 122 - spatialindex-1.8.5/src/capi/DataStream.cc | 118 - spatialindex-1.8.5/src/capi/Error.cc | 55 - spatialindex-1.8.5/src/capi/IdVisitor.cc | 59 - spatialindex-1.8.5/src/capi/Index.cc | 436 - spatialindex-1.8.5/src/capi/LeafQuery.cc | 132 - spatialindex-1.8.5/src/capi/Makefile.am | 14 - spatialindex-1.8.5/src/capi/Makefile.in | 601 - spatialindex-1.8.5/src/capi/ObjVisitor.cc | 66 - spatialindex-1.8.5/src/capi/Utility.cc | 240 - spatialindex-1.8.5/src/capi/sidx_api.cc | 3519 --- spatialindex-1.8.5/src/libspatialindex.pc.in | 12 - spatialindex-1.8.5/src/mvrtree/Index.cc | 442 - spatialindex-1.8.5/src/mvrtree/Index.h | 86 - spatialindex-1.8.5/src/mvrtree/Leaf.cc | 116 - spatialindex-1.8.5/src/mvrtree/Leaf.h | 59 - spatialindex-1.8.5/src/mvrtree/MVRTree.cc | 1365 -- spatialindex-1.8.5/src/mvrtree/MVRTree.h | 231 - spatialindex-1.8.5/src/mvrtree/Makefile.am | 4 - spatialindex-1.8.5/src/mvrtree/Makefile.in | 601 - spatialindex-1.8.5/src/mvrtree/Node.cc | 1525 -- spatialindex-1.8.5/src/mvrtree/Node.h | 195 - .../src/mvrtree/PointerPoolNode.h | 144 - spatialindex-1.8.5/src/mvrtree/Statistics.cc | 203 - spatialindex-1.8.5/src/mvrtree/Statistics.h | 110 - spatialindex-1.8.5/src/rtree/BulkLoader.cc | 471 - spatialindex-1.8.5/src/rtree/BulkLoader.h | 142 - spatialindex-1.8.5/src/rtree/Index.cc | 384 - spatialindex-1.8.5/src/rtree/Index.h | 84 - spatialindex-1.8.5/src/rtree/Leaf.cc | 151 - spatialindex-1.8.5/src/rtree/Leaf.h | 58 - spatialindex-1.8.5/src/rtree/Makefile.am | 4 - spatialindex-1.8.5/src/rtree/Makefile.in | 602 - spatialindex-1.8.5/src/rtree/Node.cc | 1087 - spatialindex-1.8.5/src/rtree/Node.h | 199 - .../src/rtree/PointerPoolNode.h | 150 - spatialindex-1.8.5/src/rtree/RTree.cc | 1543 -- spatialindex-1.8.5/src/rtree/RTree.h | 208 - spatialindex-1.8.5/src/rtree/Statistics.cc | 183 - spatialindex-1.8.5/src/rtree/Statistics.h | 104 - .../src/spatialindex/LineSegment.cc | 500 - .../src/spatialindex/Makefile.am | 4 - .../src/spatialindex/Makefile.in | 587 - .../src/spatialindex/MovingPoint.cc | 334 - .../src/spatialindex/MovingRegion.cc | 1242 -- spatialindex-1.8.5/src/spatialindex/Point.cc | 273 - spatialindex-1.8.5/src/spatialindex/Region.cc | 603 - .../src/spatialindex/SpatialIndexImpl.cc | 104 - .../src/spatialindex/TimePoint.cc | 308 - .../src/spatialindex/TimeRegion.cc | 430 - .../src/storagemanager/Buffer.cc | 159 - .../src/storagemanager/Buffer.h | 90 - .../src/storagemanager/DiskStorageManager.cc | 517 - .../src/storagemanager/DiskStorageManager.h | 69 - .../src/storagemanager/Makefile.am | 4 - .../src/storagemanager/Makefile.in | 600 - .../storagemanager/MemoryStorageManager.cc | 141 - .../src/storagemanager/MemoryStorageManager.h | 73 - .../storagemanager/RandomEvictionsBuffer.cc | 108 - .../storagemanager/RandomEvictionsBuffer.h | 53 - spatialindex-1.8.5/src/tools/Makefile.am | 8 - spatialindex-1.8.5/src/tools/Makefile.in | 582 - spatialindex-1.8.5/src/tools/Tools.cc | 1305 -- spatialindex-1.8.5/src/tools/rand48.cc | 150 - spatialindex-1.8.5/src/tprtree/Index.cc | 413 - spatialindex-1.8.5/src/tprtree/Index.h | 84 - spatialindex-1.8.5/src/tprtree/Leaf.cc | 148 - spatialindex-1.8.5/src/tprtree/Leaf.h | 58 - spatialindex-1.8.5/src/tprtree/Makefile.am | 4 - spatialindex-1.8.5/src/tprtree/Makefile.in | 601 - spatialindex-1.8.5/src/tprtree/Node.cc | 1260 -- spatialindex-1.8.5/src/tprtree/Node.h | 211 - .../src/tprtree/PointerPoolNode.h | 145 - spatialindex-1.8.5/src/tprtree/Statistics.cc | 183 - spatialindex-1.8.5/src/tprtree/Statistics.h | 104 - spatialindex-1.8.5/src/tprtree/TPRTree.cc | 1293 -- spatialindex-1.8.5/src/tprtree/TPRTree.h | 208 - spatialindex-1.8.5/test/CMakeLists.txt | 53 - spatialindex-1.8.5/test/Makefile.am | 2 - spatialindex-1.8.5/test/Makefile.in | 607 - .../test/geometry/Intersection.cc | 81 - spatialindex-1.8.5/test/geometry/Makefile.am | 5 - spatialindex-1.8.5/test/geometry/Makefile.in | 578 - spatialindex-1.8.5/test/mvrtree/Exhaustive.cc | 216 - spatialindex-1.8.5/test/mvrtree/Generator.cc | 186 - .../test/mvrtree/MVRTreeLoad.cc | 220 - .../test/mvrtree/MVRTreeQuery.cc | 279 - spatialindex-1.8.5/test/mvrtree/Makefile.am | 12 - spatialindex-1.8.5/test/mvrtree/Makefile.in | 611 - spatialindex-1.8.5/test/mvrtree/test1/run | 29 - spatialindex-1.8.5/test/mvrtree/test2/run | 22 - spatialindex-1.8.5/test/rtree/Exhaustive.cc | 206 - spatialindex-1.8.5/test/rtree/Generator.cc | 140 - spatialindex-1.8.5/test/rtree/Makefile.am | 13 - spatialindex-1.8.5/test/rtree/Makefile.in | 623 - .../test/rtree/RTreeBulkLoad.cc | 173 - spatialindex-1.8.5/test/rtree/RTreeLoad.cc | 220 - spatialindex-1.8.5/test/rtree/RTreeQuery.cc | 283 - spatialindex-1.8.5/test/rtree/test1/run | 29 - spatialindex-1.8.5/test/rtree/test2/run | 23 - spatialindex-1.8.5/test/rtree/test3/run | 30 - spatialindex-1.8.5/test/rtree/test4/run | 29 - spatialindex-1.8.5/test/tprtree/Exhaustive.cc | 264 - spatialindex-1.8.5/test/tprtree/Generator.cc | 105 - spatialindex-1.8.5/test/tprtree/Makefile.am | 11 - spatialindex-1.8.5/test/tprtree/Makefile.in | 630 - .../test/tprtree/RandomGenerator.cc | 183 - .../test/tprtree/RandomGenerator.h | 151 - .../test/tprtree/TPRTreeLoad.cc | 209 - .../test/tprtree/TPRTreeQuery.cc | 309 - spatialindex-1.8.5/test/tprtree/test1/run | 29 - spatialindex-1.8.5/test/tprtree/test2/run | 23 - src/R-Tree_Intersection_Finder_C++.cpp | 57 +- 182 files changed, 75 insertions(+), 86399 deletions(-) delete mode 100644 spatialindex-1.8.5/AUTHORS delete mode 100644 spatialindex-1.8.5/CMakeLists.txt delete mode 100644 spatialindex-1.8.5/COPYING delete mode 100644 spatialindex-1.8.5/ChangeLog delete mode 100644 spatialindex-1.8.5/INSTALL delete mode 100644 spatialindex-1.8.5/INSTALL.WIN delete mode 100644 spatialindex-1.8.5/Makefile.am delete mode 100644 spatialindex-1.8.5/Makefile.in delete mode 100644 spatialindex-1.8.5/NEWS delete mode 100644 spatialindex-1.8.5/README delete mode 100644 spatialindex-1.8.5/aclocal.m4 delete mode 100755 spatialindex-1.8.5/compile delete mode 100755 spatialindex-1.8.5/config.guess delete mode 100755 spatialindex-1.8.5/config.sub delete mode 100755 spatialindex-1.8.5/configure delete mode 100644 spatialindex-1.8.5/configure.ac delete mode 100644 spatialindex-1.8.5/depcomp delete mode 100644 spatialindex-1.8.5/include/Makefile.am delete mode 100644 spatialindex-1.8.5/include/Makefile.in delete mode 100644 spatialindex-1.8.5/include/spatialindex/LineSegment.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/MVRTree.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/MovingPoint.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/MovingRegion.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/Point.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/RTree.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/Region.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/SpatialIndex.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/TPRTree.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/TimePoint.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/TimeRegion.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/Version.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/DataStream.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/Error.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/Index.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/Utility.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/Tools.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/rand48.h delete mode 100755 spatialindex-1.8.5/install-sh delete mode 100644 spatialindex-1.8.5/ltmain.sh delete mode 100644 spatialindex-1.8.5/m4/libtool.m4 delete mode 100644 spatialindex-1.8.5/m4/ltoptions.m4 delete mode 100644 spatialindex-1.8.5/m4/ltsugar.m4 delete mode 100644 spatialindex-1.8.5/m4/ltversion.m4 delete mode 100644 spatialindex-1.8.5/m4/lt~obsolete.m4 delete mode 100644 spatialindex-1.8.5/missing delete mode 100755 spatialindex-1.8.5/mkinstalldirs delete mode 100755 spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj delete mode 100755 spatialindex-1.8.5/spatialindex.sln delete mode 100644 spatialindex-1.8.5/src/CMakeLists.txt delete mode 100644 spatialindex-1.8.5/src/Makefile.am delete mode 100644 spatialindex-1.8.5/src/Makefile.in delete mode 100644 spatialindex-1.8.5/src/capi/BoundsQuery.cc delete mode 100644 spatialindex-1.8.5/src/capi/CountVisitor.cc delete mode 100644 spatialindex-1.8.5/src/capi/CustomStorage.cc delete mode 100644 spatialindex-1.8.5/src/capi/DataStream.cc delete mode 100644 spatialindex-1.8.5/src/capi/Error.cc delete mode 100644 spatialindex-1.8.5/src/capi/IdVisitor.cc delete mode 100644 spatialindex-1.8.5/src/capi/Index.cc delete mode 100644 spatialindex-1.8.5/src/capi/LeafQuery.cc delete mode 100644 spatialindex-1.8.5/src/capi/Makefile.am delete mode 100644 spatialindex-1.8.5/src/capi/Makefile.in delete mode 100644 spatialindex-1.8.5/src/capi/ObjVisitor.cc delete mode 100644 spatialindex-1.8.5/src/capi/Utility.cc delete mode 100644 spatialindex-1.8.5/src/capi/sidx_api.cc delete mode 100644 spatialindex-1.8.5/src/libspatialindex.pc.in delete mode 100644 spatialindex-1.8.5/src/mvrtree/Index.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Index.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/Leaf.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Leaf.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/MVRTree.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/MVRTree.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/Makefile.am delete mode 100644 spatialindex-1.8.5/src/mvrtree/Makefile.in delete mode 100644 spatialindex-1.8.5/src/mvrtree/Node.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Node.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/Statistics.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Statistics.h delete mode 100644 spatialindex-1.8.5/src/rtree/BulkLoader.cc delete mode 100644 spatialindex-1.8.5/src/rtree/BulkLoader.h delete mode 100644 spatialindex-1.8.5/src/rtree/Index.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Index.h delete mode 100644 spatialindex-1.8.5/src/rtree/Leaf.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Leaf.h delete mode 100644 spatialindex-1.8.5/src/rtree/Makefile.am delete mode 100644 spatialindex-1.8.5/src/rtree/Makefile.in delete mode 100644 spatialindex-1.8.5/src/rtree/Node.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Node.h delete mode 100644 spatialindex-1.8.5/src/rtree/PointerPoolNode.h delete mode 100644 spatialindex-1.8.5/src/rtree/RTree.cc delete mode 100644 spatialindex-1.8.5/src/rtree/RTree.h delete mode 100644 spatialindex-1.8.5/src/rtree/Statistics.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Statistics.h delete mode 100644 spatialindex-1.8.5/src/spatialindex/LineSegment.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/Makefile.am delete mode 100644 spatialindex-1.8.5/src/spatialindex/Makefile.in delete mode 100644 spatialindex-1.8.5/src/spatialindex/MovingPoint.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/MovingRegion.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/Point.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/Region.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/TimePoint.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/TimeRegion.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/Buffer.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/Buffer.h delete mode 100644 spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h delete mode 100644 spatialindex-1.8.5/src/storagemanager/Makefile.am delete mode 100644 spatialindex-1.8.5/src/storagemanager/Makefile.in delete mode 100644 spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h delete mode 100644 spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h delete mode 100755 spatialindex-1.8.5/src/tools/Makefile.am delete mode 100644 spatialindex-1.8.5/src/tools/Makefile.in delete mode 100644 spatialindex-1.8.5/src/tools/Tools.cc delete mode 100644 spatialindex-1.8.5/src/tools/rand48.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Index.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Index.h delete mode 100644 spatialindex-1.8.5/src/tprtree/Leaf.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Leaf.h delete mode 100644 spatialindex-1.8.5/src/tprtree/Makefile.am delete mode 100644 spatialindex-1.8.5/src/tprtree/Makefile.in delete mode 100644 spatialindex-1.8.5/src/tprtree/Node.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Node.h delete mode 100644 spatialindex-1.8.5/src/tprtree/PointerPoolNode.h delete mode 100644 spatialindex-1.8.5/src/tprtree/Statistics.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Statistics.h delete mode 100644 spatialindex-1.8.5/src/tprtree/TPRTree.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/TPRTree.h delete mode 100644 spatialindex-1.8.5/test/CMakeLists.txt delete mode 100644 spatialindex-1.8.5/test/Makefile.am delete mode 100644 spatialindex-1.8.5/test/Makefile.in delete mode 100644 spatialindex-1.8.5/test/geometry/Intersection.cc delete mode 100644 spatialindex-1.8.5/test/geometry/Makefile.am delete mode 100644 spatialindex-1.8.5/test/geometry/Makefile.in delete mode 100644 spatialindex-1.8.5/test/mvrtree/Exhaustive.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/Generator.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/Makefile.am delete mode 100644 spatialindex-1.8.5/test/mvrtree/Makefile.in delete mode 100755 spatialindex-1.8.5/test/mvrtree/test1/run delete mode 100755 spatialindex-1.8.5/test/mvrtree/test2/run delete mode 100644 spatialindex-1.8.5/test/rtree/Exhaustive.cc delete mode 100644 spatialindex-1.8.5/test/rtree/Generator.cc delete mode 100644 spatialindex-1.8.5/test/rtree/Makefile.am delete mode 100644 spatialindex-1.8.5/test/rtree/Makefile.in delete mode 100644 spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc delete mode 100644 spatialindex-1.8.5/test/rtree/RTreeLoad.cc delete mode 100644 spatialindex-1.8.5/test/rtree/RTreeQuery.cc delete mode 100755 spatialindex-1.8.5/test/rtree/test1/run delete mode 100755 spatialindex-1.8.5/test/rtree/test2/run delete mode 100755 spatialindex-1.8.5/test/rtree/test3/run delete mode 100755 spatialindex-1.8.5/test/rtree/test4/run delete mode 100644 spatialindex-1.8.5/test/tprtree/Exhaustive.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/Generator.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/Makefile.am delete mode 100644 spatialindex-1.8.5/test/tprtree/Makefile.in delete mode 100644 spatialindex-1.8.5/test/tprtree/RandomGenerator.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/RandomGenerator.h delete mode 100644 spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc delete mode 100755 spatialindex-1.8.5/test/tprtree/test1/run delete mode 100755 spatialindex-1.8.5/test/tprtree/test2/run diff --git a/CMakeLists.txt b/CMakeLists.txt index 972f71f..f7c4d0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,6 +63,17 @@ if(LIBSUPERMESH_ENABLE_JUDY) include_directories(${JUDY_INCLUDE_DIR}) endif() +find_library(SPATIALINDEX_LIBRARY NAMES spatialindex) +if(SPATIALINDEX_LIBRARY STREQUAL SPATIALINDEX_LIBRARY-NOTFOUND) + message(FATAL_ERROR "spatialindex library not found") +endif() +list(APPEND link_libraries ${SPATIALINDEX_LIBRARY}) +find_path(SPATIALINDEX_INCLUDE_DIR spatialindex/SpatialIndex.h) +if(SPATIALINDEX_INCLUDE_DIR STREQUAL SPATIALINDEX_INCLUDE_DIR-NOTFOUND) + message(FATAL_ERROR "spatialindex header file not found") +endif() +include_directories(${SPATIALINDEX_INCLUDE_DIR}) + find_package(Backtrace) if(Backtrace_FOUND) set(link_libraries ${link_libraries} ${Backtrace_LIBRARIES}) @@ -152,52 +163,8 @@ message(STATUS "CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}") message(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}") message(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}") -include_directories(${LIBSUPERMESH_SOURCE_DIR}/spatialindex-1.8.5/include/) -include_directories(${LIBSUPERMESH_SOURCE_DIR}/spatialindex-1.8.5/src/) -add_subdirectory(spatialindex-1.8.5 EXCLUDE_FROM_ALL) -set(spatialindex_object_files - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Index.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/TPRTree.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Leaf.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Statistics.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Node.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/MemoryStorageManager.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/RandomEvictionsBuffer.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/Buffer.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/DiskStorageManager.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Index.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Leaf.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/MVRTree.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Statistics.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Node.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/SpatialIndexImpl.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/Point.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/MovingRegion.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/MovingPoint.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/TimeRegion.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/Region.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/LineSegment.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/TimePoint.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tools/Tools.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Index.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Leaf.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/RTree.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Statistics.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/BulkLoader.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Node.cc${CMAKE_CXX_OUTPUT_EXTENSION} -) -check_function_exists(srand48 HAVE_SRAND48) -if(NOT HAVE_SRAND48) - list(APPEND spatialindex_object_files - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tools/rand48.cc${CMAKE_CXX_OUTPUT_EXTENSION}) -endif() -foreach(spatialindex_object_file ${spatialindex_object_files}) - set_source_files_properties(${spatialindex_object_file} PROPERTIES GENERATED 1) -endforeach() - file(GLOB source_files ${LIBSUPERMESH_SOURCE_DIR}/src/*.F90 ${LIBSUPERMESH_SOURCE_DIR}/src/*.c ${LIBSUPERMESH_SOURCE_DIR}/src/*.cpp) -add_library(supermesh ${source_files} ${spatialindex_object_files}) -add_dependencies(supermesh spatialindex) +add_library(supermesh ${source_files}) set(test_main ${LIBSUPERMESH_SOURCE_DIR}/src/tests/test_main.cpp) file(GLOB unittest_files ${LIBSUPERMESH_SOURCE_DIR}/src/tests/*.F90) diff --git a/COPYING b/COPYING index 0d48496..a5e6683 100644 --- a/COPYING +++ b/COPYING @@ -1,5 +1,4 @@ -Except as noted below, libsupermesh is copyright (C) 2016-2017 The University of -Edinburgh. libsupermesh is available under the GNU Lesser General Public License +libsupermesh is available under the GNU Lesser General Public License version 2.1, which can be found in lgpl-2.1.txt. This library is free software; you can redistribute it and/or @@ -82,10 +81,9 @@ distribution. ################################################################################ -libsupermesh includes a modified version of libspatialindex 1.8.5 -(in spatialindex-1.8.5/). libsupermesh additionally uses modified versions of -code from libspatialindex -- see comments in -include/R-Tree_Intersection_Finder_C++.h and +libsupermesh previously included a modified version of libspatialindex 1.8.5. +libsupermesh additionally uses modified versions of code from libspatialindex -- +see comments in include/R-Tree_Intersection_Finder_C++.h and src/R-Tree_Intersection_Finder_C++.cpp. Further information regarding libspatialindex can be found in spatialindex-1.8.5/. libspatialindex 1.8.5 license information: diff --git a/doc/manual.tex b/doc/manual.tex index 75a718f..369a50a 100644 --- a/doc/manual.tex +++ b/doc/manual.tex @@ -2703,9 +2703,8 @@ \section{Copyright}\label{sect:copyright} \subsection{libsupermesh} -Except as noted below, libsupermesh is copyright \textcopyright\ 2016-2017 The -University of Edinburgh. libsupermesh is available under the GNU Lesser General -Public License version 2.1, which can be found in lgpl-2.1.txt. +libsupermesh is available under the GNU Lesser General Public License +version 2.1, which can be found in lgpl-2.1.txt. \begin{lstlisting}[language=] This library is free software; you can redistribute it and/or @@ -2796,11 +2795,9 @@ \subsection{TinyXML} \subsection{libspatialindex} -libsupermesh includes a modified version of -libspatialindex\footnote{\url{https://libspatialindex.github.io/}} 1.8.5 -(in spatialindex-1.8.5/). libsupermesh additionally uses modified versions of -code from libspatialindex -- see comments in \linebreak -include/R-Tree\_Intersection\_Finder\_C++.h and +libsupermesh previously included a modified version of libspatialindex 1.8.5. +libsupermesh additionally uses modified versions of code from libspatialindex -- +see comments in include/R-Tree\_Intersection\_Finder\_C++.h and src/R-Tree\_Intersection\_Finder\_C++.cpp. Further information regarding libspatialindex can be found in spatialindex-1.8.5/. libspatialindex 1.8.5 license information: diff --git a/spatialindex-1.8.5/AUTHORS b/spatialindex-1.8.5/AUTHORS deleted file mode 100644 index 0da3661..0000000 --- a/spatialindex-1.8.5/AUTHORS +++ /dev/null @@ -1,14 +0,0 @@ -Marios Hadjieleftheriou -- Main author -mhadji@gmail.com - -Howard Butler -- minor packaging, C API, and some Windows work -hobu.inc@gmail.com - -Leonard NorrgÄrd - CountVisitor in C API -leonard.norrgard@refactor.fi - -Matthias (nitro) - CustomStorage in C API -nitro@dr-code.org - -Norman Barker - flush(), index paging, C API improvements -norman.barker@gmail.com \ No newline at end of file diff --git a/spatialindex-1.8.5/CMakeLists.txt b/spatialindex-1.8.5/CMakeLists.txt deleted file mode 100644 index b46b0a0..0000000 --- a/spatialindex-1.8.5/CMakeLists.txt +++ /dev/null @@ -1,240 +0,0 @@ -# -# top-level CMake configuration file for PDAL -# -# (based originally on the libLAS files copyright Mateusz Loskot) - -cmake_minimum_required(VERSION 2.6.0) -project(spatialindex) - -#------------------------------------------------------------------------------ -# internal cmake settings -#------------------------------------------------------------------------------ - -set(CMAKE_COLOR_MAKEFILE ON) - -# Allow advanced users to generate Makefiles printing detailed commands -mark_as_advanced(CMAKE_VERBOSE_MAKEFILE) - -# Path to additional CMake modules -set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) - -if (CMAKE_MAJOR_VERSION GREATER 2) - cmake_policy(SET CMP0042 OLD) # osx rpath -endif() -#------------------------------------------------------------------------------ -# libspatialindex general settings -#------------------------------------------------------------------------------ - -SET(SIDX_VERSION_MAJOR "1") -SET(SIDX_VERSION_MINOR "8") -SET(SIDX_VERSION_PATCH "5") -SET(SIDX_LIB_VERSION "4.1.0") -SET(SIDX_LIB_SOVERSION "4") - - -set(SIDX_VERSION_STRING "${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERSION_PATCH}") - - -# Name of C++ library - -set(SIDX_LIB_NAME spatialindex) -set(SIDX_C_LIB_NAME spatialindex_c) - -if(WIN32) - if (MSVC) - if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11 OR MSVC12 OR MSVC13) - if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set( SIDX_LIB_NAME "spatialindex-64" ) - set( SIDX_C_LIB_NAME "spatialindex_c-64" ) - else( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set( SIDX_LIB_NAME "spatialindex-32" ) - set( SIDX_C_LIB_NAME "spatialindex_c-32" ) - endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - endif() - endif() -endif() - - -set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) - -include (CheckFunctionExists) - -check_function_exists(srand48 HAVE_SRAND48) -check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) -check_function_exists(memset HAVE_MEMSET) -check_function_exists(memcpy HAVE_MEMCPY) -check_function_exists(bcopy HAVE_BCOPY) - -INCLUDE (CheckIncludeFiles) -check_include_files(pthread.h HAVE_PTHREAD_H) - - -if (HAVE_SRAND48) - add_definitions(-DHAVE_SRAND48=1) -endif() - -if (HAVE_GETTIMEOFDAY) - add_definitions(-DHAVE_GETTIMEOFDAY=1) -endif() - -if (HAVE_BZERO) - add_definitions(-DHAVE_BZERO=1) -endif() - -if (HAVE_MEMSET) - add_definitions(-DHAVE_MEMSET=1) -endif() - -if (HAVE_MEMCPY) - add_definitions(-DHAVE_MEMCPY=1) -endif() - -if (HAVE_BCOPY) - add_definitions(-DHAVE_BCOPY=1) -endif() - -if (HAVE_PTHREAD_H) - add_definitions(-DHAVE_PTHREAD_H=1) -endif() - -#------------------------------------------------------------------------------ -# General build settings -#------------------------------------------------------------------------------ - -# note we default to debug mode -if(NOT MSVC_IDE) - if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING - "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel" FORCE) - endif() - message(STATUS "Setting libspatialindex build type - ${CMAKE_BUILD_TYPE}") -endif() - -set(SIDX_BUILD_TYPE ${CMAKE_BUILD_TYPE}) - -# TODO: Still testing the output paths --mloskot -set(SIDX_BUILD_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") - -# Output directory in which to build RUNTIME target files. -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SIDX_BUILD_OUTPUT_DIRECTORY}) - -# Output directory in which to build LIBRARY target files -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${SIDX_BUILD_OUTPUT_DIRECTORY}) - -# Output directory in which to build ARCHIVE target files. -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${SIDX_BUILD_OUTPUT_DIRECTORY}) - - -#------------------------------------------------------------------------------ -# Platform and compiler specific settings -#------------------------------------------------------------------------------ - -if(WIN32) - if (MSVC) - if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11 OR MSVC12 OR MSVC13) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - add_definitions(-D_CRT_NONSTDC_NO_WARNING) - add_definitions(-D_SCL_SECURE_NO_WARNINGS) - add_definitions(-DSPATIALINDEX_CREATE_DLL=1) - add_definitions(-DNOMINMAX) - - set(SIDX_COMPILER_MSVC 1) - endif() - - if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") - string(REGEX REPLACE "/W[0-4]" "/W4" - CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") - endif() - endif() - - set(CMAKE_INCLUDE_PATH c:/osgeo4w/include;$ENV{CMAKE_INCLUDE_PATH}) - set(CMAKE_LIBRARY_PATH c:/osgeo4w/lib;$ENV{CMAKE_LIBRARY_PATH}) - - set(SIDX_OS_WIN32 1) - -else() - # not WIN32 - - # Recommended C++ compilation flags - # -Weffc++ - set(SIDX_COMMON_CXX_FLAGS - "-pedantic -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wredundant-decls -Wno-long-long") - - if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SIDX_COMMON_CXX_FLAGS}") - if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -ansi") - endif() - - set(SIDX_COMPILER_GCC 1) - - elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER}" MATCHES "clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SIDX_COMMON_CXX_FLAGS}") - set(SIDX_COMPILER_CLANG 1) - endif() -endif(WIN32) - -if (APPLE) - set(SO_EXT dylib) - set(CMAKE_FIND_FRAMEWORK "LAST") -elseif(WIN32) - set(SO_EXT dll) -else() - set(SO_EXT so) -endif(APPLE) - - -#------------------------------------------------------------------------------ -# installation path settings -#------------------------------------------------------------------------------ - -if(WIN32) - set(DEFAULT_LIB_SUBDIR lib) - set(DEFAULT_DATA_SUBDIR .) - set(DEFAULT_INCLUDE_SUBDIR include) - - if (MSVC) - set(DEFAULT_BIN_SUBDIR bin) - else() - set(DEFAULT_BIN_SUBDIR .) - endif() -else() - # Common locations for Unix and Mac OS X - set(DEFAULT_BIN_SUBDIR bin) - set(DEFAULT_LIB_SUBDIR lib${LIB_SUFFIX}) - set(DEFAULT_DATA_SUBDIR share/spatialindex) - set(DEFAULT_INCLUDE_SUBDIR include) -endif() - -# Locations are changeable by user to customize layout of SIDX installation -# (default values are platform-specific) -set(SIDX_BIN_SUBDIR ${DEFAULT_BIN_SUBDIR} CACHE STRING - "Subdirectory where executables will be installed") -set(SIDX_LIB_SUBDIR ${DEFAULT_LIB_SUBDIR} CACHE STRING - "Subdirectory where libraries will be installed") -set(SIDX_INCLUDE_SUBDIR ${DEFAULT_INCLUDE_SUBDIR} CACHE STRING - "Subdirectory where header files will be installed") -set(SIDX_DATA_SUBDIR ${DEFAULT_DATA_SUBDIR} CACHE STRING - "Subdirectory where data will be installed") - -# Mark *_SUBDIR variables as advanced and dedicated to use by power-users only. -mark_as_advanced(SIDX_BIN_SUBDIR - SIDX_LIB_SUBDIR SIDX_INCLUDE_SUBDIR SIDX_DATA_SUBDIR) - -# Full paths for the installation -set(SIDX_BIN_DIR ${SIDX_BIN_SUBDIR}) -set(SIDX_LIB_DIR ${SIDX_LIB_SUBDIR}) -set(SIDX_INCLUDE_DIR ${SIDX_INCLUDE_SUBDIR}) -set(SIDX_DATA_DIR ${SIDX_DATA_SUBDIR}) - -#------------------------------------------------------------------------------ -# subdirectory controls -#------------------------------------------------------------------------------ - -add_subdirectory(src) -add_subdirectory(test) - diff --git a/spatialindex-1.8.5/COPYING b/spatialindex-1.8.5/COPYING deleted file mode 100644 index 9fae459..0000000 --- a/spatialindex-1.8.5/COPYING +++ /dev/null @@ -1,48 +0,0 @@ -Licensing History ------------------------------------------------------------------------------- - - -.. note:: - libspatialindex changed from a `LGPL`_ to a `MIT`_ license as of the 1.8.0 - release. For most situations, this should have no impact on the library's - use, but it should open it up for usage in situations that otherwise might - have been problematic. Versions of libspatialindex prior to 1.8.0 were - licensed LGPL 2.0, with the license description on this file. The codebase - has been been updated, with licensing information replaced in headers and - source files, to use the MIT license as of the 1.8.0+ release. - - This change was made to support the inclusion of software depending on - libspatialindex in static linking-only environments such as embedded systems - and Apple's iOS. libspatialindex versions prior to 1.8.0 will continue to - live on as LGPL software, and developers can continue to contribute to them - under terms of that license, but the main development effort, and ongoing - maintenance, releases, and bug applications, will move forward using the - new MIT license at http://github.com/libspatialindex/libspatialindex - -.. _`LGPL`: http://opensource.org/licenses/lgpl-2.1.php -.. _`MIT`: http://opensource.org/licenses/MIT - - - -License (MIT) ------------------------------------------------------------------------------- - -:: - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. diff --git a/spatialindex-1.8.5/ChangeLog b/spatialindex-1.8.5/ChangeLog deleted file mode 100644 index 9ab0d0a..0000000 --- a/spatialindex-1.8.5/ChangeLog +++ /dev/null @@ -1,656 +0,0 @@ -2014-10-31 - * Howard Butler CAPI: revert #40, which could cause inconsistent object lifetime behavior (23:53:04) - * Howard Butler missed a variable substitution on SIDX_LIB_VERSION (21:38:14) - -2014-09-29 - * Howard Butler Merge pull request #45 from sebastic/soversion (16:26:19) - * Bas Couwenberg Fix separate library VERSION and SOVERSION variables. (16:14:43) - * Howard Butler doc tweak (08:49:07) - * Howard Butler fix up library SOVERSION'ing and issue new release 1.8.4 #44 (08:45:00) - -2014-09-20 - * Howard Butler point to 1.8.3 release (16:41:15) - * Howard Butler increment and prepare for 1.8.3 release (16:27:48) - -2014-09-13 - * Howard Butler update ChangeLog (18:46:21) - -2014-09-11 - * Howard Butler Changelog update (10:57:08) - * Howard Butler clean up integer warning (10:56:53) - * Howard Butler Merge pull request #42 from libspatialindex/issues/42-automake-exports (10:54:58) - * Howard Butler Add sidx_export to Makefile.am #42 (10:54:07) - -2014-08-27 - * Howard Butler Merge pull request #41 from cloudant/capi_mvrtree (10:20:03) - -2014-08-26 - * Norman Barker fixed typo in MVRIntersects_Count (17:18:32) - * Norman Barker added MVR index type to the C API (17:16:03) - -2014-08-03 - * Howard Butler fix up Release name (14:14:35) - -2014-07-28 - * Howard Butler unused parameters (10:04:59) - * Howard Butler clean up C API for numResults being a uint64_t when it is only possible to specify uint32_t of nResults (09:53:36) - * Howard Butler more C API warning cleanups (09:50:55) - * Howard Butler leaf node counts are uint32_t, not size_t (09:34:41) - * Howard Butler silence condition expression warning 4127 on msvc (09:20:58) - * Howard Butler unreferenced parameter cleanup (09:13:36) - * Howard Butler nuke assignment and empty constructor of C API Index class (09:13:01) - * Howard Butler children count is uint32_t (09:11:04) - * Howard Butler clean up LeafQuery visitor id management (09:09:20) - * Howard Butler clean up more unused parameters (08:37:24) - * Howard Butler fix mismatched type warning (using uint32_t as an id instead of SpatialIndex::id_type (08:37:15) - * Howard Butler remove unused and potentially problematic throw specification for DataStream (08:28:49) - * Howard Butler export all C API stuff to the DLL (08:23:49) - -2014-07-27 - * Howard Butler more unreferenced parameter cleanups (23:37:25) - * Howard Butler screw 20ad010a1b55a4437b73c805270837c294b57251 and MSVC's dumb C4127 warning (23:36:15) - * Howard Butler more unreferenced parameter warnings (23:34:20) - * Howard Butler use ;; to denote looping forever to silence C4127 warning on MSVC (23:34:11) - * Howard Butler support MSVC 2012 and 2013 (23:30:59) - * Howard Butler big unreferenced variable cleanup (23:30:35) - * Howard Butler clean up some unreferenced parameters warnings (23:17:14) - * Howard Butler Merge branch 'master' of github.com:libspatialindex/libspatialindex (23:03:10) - * Howard Butler Merge pull request #40 from libspatialindex/issues/40-capi-property-copying (23:03:04) - * Howard Butler clean up file open mode (23:02:48) - * Howard Butler bump versions to 1.8.2 in preparation for release (22:59:49) - * Howard Butler Update ChangeLog in preparation for release (22:59:21) - * Howard Butler add Norman to AUTHORS (22:57:12) - * Howard Butler Implement a fix for #40 to maintain pointers to IndexProperty references rather than copying (18:15:38) - -2014-07-22 - * Howard Butler only do policy check for CMAKE > 2.x (11:25:02) - * Howard Butler turn off osx rpath cmake complaint (11:05:29) - -2014-07-14 - * Howard Butler more cmake quoting #27 (16:07:21) - * Howard Butler fix up unfixed LGPL file from test suite (16:07:04) - -2014-07-12 - * Howard Butler add BUILD_WITH_INSTALL_RPATH target property for OSX (23:59:03) - * Howard Butler CMake config quoting #27 (23:50:05) - * Howard Butler FSF postal adress update #5 (23:38:24) - * Howard Butler support wide character as possible tools::Variant type -- doesn't work yet though (23:32:19) - * Howard Butler add VT_PWCHAR to support wide character pointer for the Variant type (23:31:15) - * Howard Butler add MSVC 2013 and 2014 defns (23:27:45) - * Howard Butler fix redundant checks in destructor #28 (23:25:39) - * Howard Butler Remove LDFLAGS from Libs for pkg-config #23 (23:24:32) - -2014-05-12 - * Howard Butler Merge pull request #38 from cloudant/c_tpr (10:22:16) - -2014-05-10 - * Norman Barker added temporal function to capi (16:49:28) - -2014-05-08 - * Howard Butler Merge pull request #37 from cloudant/paging (13:48:51) - -2014-05-07 - * Norman Barker added paging to all indexes (19:11:58) - -2014-03-13 - * Howard Butler turn off the unused m_rwLock for now (21:15:39) - * Howard Butler switch to int64_t instead of uint64_t when checking result counts (21:15:14) - * Howard Butler add newline to end of file (21:07:45) - -2014-02-13 - * Howard Butler Merge pull request #32 from cloudant/empty_index (19:00:32) - * Howard Butler Merge pull request #33 from mlt/nominmax (19:00:07) - -2014-02-12 - * Mikhail Titov Prevent min/max from windef.h interference (15:09:53) - -2014-02-11 - * Norman Barker Added support for empty index files (17:46:14) - -2013-09-09 - * Howard Butler update download location for new release (12:07:03) - -2013-08-21 - * Howard Butler Merge pull request #26 from cloudant/skip_results (15:32:33) - -2013-08-19 - * Norman Barker made files protected variables (21:37:25) - * Norman Barker added paging and flushing (21:35:32) - -2013-07-29 - * Norman Barker Added error handling to the C API (20:52:47) - -2013-07-25 - * Norman Barker Added Result Set Limit so that the number of items can be controlled. (17:58:54) - -2013-06-26 - * Howard Butler fixups for MSVC2008 compilation (14:17:28) - * Howard Butler updates for v1.8.1 release (13:51:45) - * Howard Butler Merge branch 'master' of github.com:libspatialindex/libspatialindex (13:44:32) - * Howard Butler increment versions in preparation for 1.8.1 release (13:43:28) - * Howard Butler Merge pull request #22 from libspatialindex/issues/22-lgpl-fixups (13:40:35) - * Howard Butler update licenses for #22 (13:39:34) - * Howard Butler Merge branch 'libspatialindex-issues/19-mingw64' (13:26:44) - -2013-06-04 - * Mateusz Loskot Fix redefinition of integer types for Visual C++ (09:46:51) - -2013-05-31 - * Mateusz Loskot Add Visual C++ 11.0 support to CMake build (09:23:22) - -2013-03-04 - * Howard Butler apply Theun's patch for Makefile.am #19 (11:09:25) - -2013-02-28 - * Howard Butler first pass at fixing issue for Theuns #19 (10:54:56) - -2012-12-28 - * Howard Butler fix up link to missing file (09:05:56) - -2012-12-20 - * chrisnatali refactored as suggested by maintainer (11:01:44) - -2012-12-10 - * chrisnatali Forgot the contains case when checking region-segment intersection (14:38:13) - -2012-12-07 - * chrisnatali exposed SegmentIntersects functions in capi, fixed test (17:22:08) - -2012-12-06 - * chrisnatali Updated LineSegment to LineSegment and LineSegment to Region intersection methods and tests. Need to fix LineSegment to Region (17:03:03) - * chrisnatali Added GeomUtil and simple tests for segment intersection (14:40:22) - -2012-12-12 - * Howard Butler update download links (22:20:57) - * Howard Butler makefile.vc no longer used -- use cmake build instead (21:48:48) - * Howard Butler more release process notes (21:42:30) - * Howard Butler bring ChangeLog up to date for 1.8.0 release (21:42:20) - * Howard Butler increment release date (21:42:07) - * Howard Butler doc updates for 1.8.0 (21:40:50) - * Howard Butler doc updates for 1.8.0 (21:40:35) - * Howard Butler increment version in preparation for 1.8.0 release (19:54:32) - * Howard Butler increment SO_VERSION to 3:0:0 due to adding flush() to C and C++ APIs (19:54:12) - -2012-11-16 - * Howard Butler define pthread when we have it (11:34:50) - * Howard Butler SharedLock was renamed to LockGuard - fix up patch for #15 (11:15:13) - -2012-11-15 - * Howard Butler Merge branch 'containsWhatQuery' (15:17:18) - -2012-11-12 - * Howard Butler link to libspatialindex.org (11:02:13) - -2012-11-04 - * Howard Butler point to http://libspatialindex.org as our new URL (14:10:54) - * Howard Butler update to point to http://libspatialindex.github.com (14:06:00) - * Howard Butler try again (13:54:58) - * Howard Butler adapt a patch for #15 to be able to incorporate a more efficient containsWhatQuery method (12:43:28) - * Howard Butler update versions to 1.8.0 in prep for upcoming release (12:31:13) - * Howard Butler update versions to 1.8.0 in prep for upcoming release (12:31:03) - * Howard Butler update main page to try to get github includes working (11:03:21) - * Howard Butler use CMake if you want windows makefiles builds (11:02:30) - * Howard Butler update AUTHORS with links to Mattias and Leonard (11:00:53) - -2012-10-25 - * Howard Butler update licensing of base library to MIT, update docs accordingly (14:06:08) - * Howard Butler update licensing of C API (12:18:19) - * Howard Butler use local imports for public within-tree public includes #14 (10:49:20) - * Howard Butler adapt a patch to fix #12 -- allow cross-compilation on ANDROID (10:22:46) - * Howard Butler Merge pull request #8 from booo/master (10:03:27) - -2012-07-14 - * Marios Hadjieleftheriou Reverted to using pthread mutex and exlusively lock all queries, since fine grain locking using spinlocks was too slow. (09:57:39) - * Marios Hadjieleftheriou Reverted to using pthread mutex for all queries, since fine grain locking using spinlocks was too slow. (09:52:34) - -2012-07-10 - * Howard Butler attempt to use sched_yield for instances where pthread_yield doesn't exist (osx) -- please check this marios (15:54:01) - * Howard Butler put #ifdef guards around LockGuard which is only implemented for pthread for now (15:52:32) - * Howard Butler add check for pthread (15:52:09) - * Howard Butler be explicit about which overloads should be used to silence the warning about implementation hiding (15:51:32) - -2012-07-09 - * Marios Hadjieleftheriou Added SpinLock to fix multi-threaded support bug. Removed silly non atomic m_rwLock when pthreads is not found. (10:00:41) - -2012-04-17 - * Howard Butler make sure _c library gets soversion and that we install in include/spatialindex instead of install/libspatialindex (15:36:27) - -2012-04-09 - * booo src/CMakeLists.txt: fix issue #6 (16:28:50) - * booo Merge branch 'master' of https://github.com/libspatialindex/libspatialindex (16:26:48) - -2012-04-03 - * Marios Hadjieleftheriou Added flush() in IStorageManger interface. (13:10:45) - -2012-03-03 - * booo autogen.sh: check if libtoolize exists (08:03:59) - -2012-02-16 - * Marios Hadjieleftheriou replace bzero with memset (09:18:13) - -2012-02-07 - * Howard Butler add bit depth prefix to library name output (18:19:48) - -2011-12-29 - * Howard Butler add explicit links to download (08:20:41) - -2011-12-09 - * Howard Butler add back (copy) of README to placate automake (20:16:38) - * Howard Butler increment versions to 1.7.1 in preparation for release (20:11:06) - * Howard Butler rename so github renders it (20:08:51) - -2011-12-06 - * Howard Butler increment soversion for both cmake and autoconf builds (12:32:52) - -2011-10-19 - * Howard Butler update permissions for #3 (12:41:36) - * Howard Butler apply variation of patch in #4 (12:36:34) - * Howard Butler update packaging script for #7 (12:33:25) - -2011-10-14 - * Howard Butler update ChangeLog (12:44:43) - * Howard Butler oops, need line separators (12:44:38) - * Howard Butler update ChangeLog (12:43:43) - * Howard Butler distribut test running scripts too (12:43:33) - * Howard Butler update ChangeLog (12:34:57) - * Howard Butler newline (12:34:48) - * Howard Butler update ChangeLog (12:31:54) - * Howard Butler update release date (12:31:43) - * Howard Butler update ChangeLog again (12:15:57) - * Howard Butler fixes to be able to make things work on msvc 10 (12:12:54) - * Howard Butler only redefine c++0x types if we're <= msvc_ver 1500 (12:12:36) - * Howard Butler add definition to make sure we export symbols in windows land (12:11:51) - * Howard Butler namespace usings and such to satisfy msvc 10 (11:49:40) - * Howard Butler more ignores (11:49:24) - * Howard Butler check for msvc 10 (11:40:45) - * Howard Butler update ChangeLog (11:26:39) - * Howard Butler missing reference to file (11:20:14) - * Howard Butler missing reference to file (11:19:02) - * Howard Butler this file is now gone (11:17:10) - * Howard Butler add pkg-config script for libspatialindex -- autoconf build only for now (11:01:17) - * Howard Butler typo (10:28:04) - * Howard Butler move Makefile.am up (10:23:23) - * Howard Butler start fixing up automake include structure (10:20:16) - * Howard Butler include was still busted (10:06:05) - * Howard Butler fix include path (10:04:08) - * Howard Butler add function detection to cmake config (09:25:08) - * Howard Butler point to doxygen output (09:14:18) - * Howard Butler more doc rearranging (08:53:17) - * Howard Butler add doxygen configuration -- run doxygen docs/doxygen/doxygen.conf from the top level directory to get output (08:38:07) - * Howard Butler more ignore (08:37:39) - * Howard Butler more ignores (08:36:45) - -2011-10-13 - * Howard Butler a little proposed whitespace normalization -- my terminal isn't 250 characters long :) (21:18:10) - * Howard Butler remove SpatialIndexImpl.h, which didn't seem to be used to hide the implementation and was contributing to relative include spaghetti (21:14:01) - * Howard Butler #include file deck chair rearrangement (20:54:22) - * Howard Butler #include file deck chair rearrangement (20:49:45) - * Howard Butler don't add -ansi to clang compiles (16:31:05) - * Howard Butler unsigned values can never be <0, no need to test for this (16:30:50) - * Howard Butler clean up some warnings that clang found (16:25:05) - * Howard Butler unsigned values can never be <0, no need to test for this (16:24:46) - -2011-10-11 - * Howard Butler regressiontest directory changed names (11:33:56) - * Howard Butler rename regressiontest directory to test/ directory for added clarity. maybe next release we can have these test be auto-run with 'make test' (11:20:47) - * Howard Butler check for an existing srand48, and if we have it, don't use our local one (11:03:21) - * Howard Butler CMake for regressiontests (11:02:45) - -2011-10-10 - * Howard Butler start organizing docs (23:01:48) - * Howard Butler update CMakeLists.txt when releasing too (23:01:37) - * Howard Butler c/p fix (23:01:23) - * Howard Butler add dummy file (22:38:19) - * Howard Butler makefile for sphinx (22:37:20) - * Howard Butler more cmake config (22:31:04) - * Howard Butler ignore more (22:31:00) - * Howard Butler clean up warning (22:30:22) - -2011-10-09 - * Howard Butler add cmake config (22:59:20) - * Howard Butler ignore cmake stuff (22:58:56) - -2011-10-06 - * Howard Butler attempt 2 on #1 to fix rand in stdlib on newer gcc's (14:32:42) - * Howard Butler a fix for #1 because gcc 4.5.2 appears to have these defined in stdlib.h (13:41:09) - -2011-09-26 - * Howard Butler add documentation for http://libspatialindex.github.com (16:10:17) - -2011-09-25 - * Howard Butler increment versions in preparation for release (20:44:57) - -2011-07-15 - * Howard Butler use int64_t for IDs instead of uint64_t's (12:12:48) - * Howard Butler clean up warnings (10:55:15) - * Howard Butler initialize variables to 0's before we use them (10:51:50) - * Howard Butler fix up initialization order (10:48:07) - * Howard Butler use -pedantic for compilation (10:42:11) - * Howard Butler add .gitignore (10:40:44) - -2011-05-18 - * Marios Hadjieleftheriou (10:20:08) - -2011-03-01 - * Marios Hadjieleftheriou (08:50:59) - -2011-01-10 - * Marios Hadjieleftheriou (09:53:08) - -2010-12-04 - * Howard Butler bump version in prep for 1.6.1 release (15:22:32) - -2010-11-22 - * Sean Gillies Fix test of length value (13:53:16) - * Howard Butler whitespace normalization (13:23:02) - * Sean Gillies Add up deltas for multidimensional input (13:00:24) - * Sean Gillies Add up deltas for multidimensional input (12:49:10) - * Howard Butler revert r193 (12:46:06) - * Howard Butler we should set isPoint to true if we pass our epsilon test -- this didn't work before (10:02:47) - -2010-10-14 - * Marios Hadjieleftheriou Removed nextUnifromLongDouble. It was incorrect (08:18:23) - -2010-10-13 - * Marios Hadjieleftheriou Added nextUniformLongDouble (10:10:35) - -2010-09-16 - * Howard Butler fix #25 and include visual studio files in the release (08:56:14) - * Howard Butler bump versions in preparation for release (08:53:22) - * Howard Butler bump versions in preparation for release (08:52:38) - -2010-06-19 - * Howard Butler add Matthias' CustomStorage backend for C API (15:34:19) - -2010-04-21 - * Howard Butler Add Marios' pagesize diatribe to the docs (13:50:02) - -2010-04-12 - * Howard Butler update ChangeLog (14:56:52) - * Marios Hadjieleftheriou (12:17:47) - * Marios Hadjieleftheriou Fixed rtree/BulkLoader infinit loop bug (12:07:13) - -2010-03-31 - * Howard Butler format and layout normalization (10:33:43) - -2010-03-30 - * Howard Butler ensure that we instantiate the ivOut with at least the ivIn so we have a properly constructed Tools::Interval #16 (15:18:40) - -2010-03-05 - * Howard Butler add doc describing how to release (08:19:51) - -2010-03-04 - * Howard Butler propsets to ignore test output: (20:56:08) - * Howard Butler use subdir-objects for automake and rename the make dist output to spatialindex-src (20:53:18) - * Howard Butler increment version info in preparation for release (20:52:47) - * Howard Butler update for release (19:59:41) - * Howard Butler add CountVisitor to the CAPI to provide a cumulation of the number of hits that land within a query (10:33:28) - -2010-03-03 - * Howard Butler use uint64_t for result counts instead of uint32_t in C API (15:55:09) - -2009-12-28 - * Howard Butler fix up for gcc 4.4 (20:35:01) - -2009-12-04 - * Marios Hadjieleftheriou (15:57:15) - * Marios Hadjieleftheriou Fixed Region::touchesRegion member function bug. (12:46:19) - -2009-11-05 - * Howard Butler don't thrown an error when -DDEBUG is on and we initialize an infinite Region (10:26:45) - -2009-11-02 - * Howard Butler pass in a reference for the query bounds (21:10:46) - * Howard Butler try to do no harm when calling Index_Free on something that's null (21:04:49) - * Howard Butler pass in a reference for the query bounds (21:00:54) - * Howard Butler copy the array using memcpy because we can't free() something created with new (20:15:41) - * Howard Butler put the data in a newly malloc'd array to match our std::free call of Index_Delete (19:48:00) - * Howard Butler make sure to delete our shape when we're done (15:32:57) - * Howard Butler get dimension from the Region, no need to fetch from index properties (15:32:26) - * Howard Butler make sure we clean up the bounds and region (14:53:30) - * Howard Butler only #include where needed, and not in the global Tools.h file (14:08:16) - -2009-10-30 - * Howard Butler remove and from Tools.h and include them seperately in each file that needs them (12:09:14) - * Howard Butler define to denote we're C API (11:37:11) - * Howard Butler add a newline (10:03:47) - -2009-10-21 - * Howard Butler make sure we use new/delete instead of new/free (21:42:21) - * Howard Butler remove namespace pollution of Tools:: into the globally include'd header SpatialIndex.h (12:35:24) - -2009-10-20 - * Howard Butler bump versions in preparation for release (10:24:18) - -2009-10-19 - * Howard Butler add SIDX_Version prototype (15:31:14) - * Howard Butler ltmain.sh doesn't belong in svn (15:23:59) - * Howard Butler Makefile.in's don't belong in svn (15:23:48) - * Howard Butler C API compilation fix (13:50:42) - * Howard Butler tmpname fixes so we compile on msvc2003 (13:50:31) - * Howard Butler don't define a variable to "" or cl will complain (13:29:17) - -2009-10-08 - * Howard Butler bleaf and bindex switched around in createLevel call (14:32:03) - -2009-09-17 - * Howard Butler more leaf querying code (15:40:25) - -2009-09-16 - * Howard Butler add beginnings of leaf querying to C API (13:45:57) - -2009-09-15 - * Howard Butler remove the duplicate and unnecessary Item construct that was masking the already existing IData interface (22:34:14) - -2009-08-31 - * Howard Butler support building the c api (10:32:06) - -2009-08-24 - * Howard Butler fix issue with uint32_t by copying macros from Tools.h (08:25:53) - -2009-08-19 - * Howard Butler try to ensure -lstdc++ is linked (15:47:58) - * Howard Butler ignores (14:56:31) - * Howard Butler add C API (not currently built on windows) (11:37:50) - * Howard Butler ignore propset (10:25:06) - * Howard Butler propsets to ignore test results (10:24:15) - -2009-08-18 - * Howard Butler locking for Tools::PropertySet (commented out though because it doesn't work (13:07:34) - -2009-08-14 - * Howard Butler comment out PropertySet locking for now (12:41:31) - * Howard Butler use HAVE_PTHREAD_H for #ifdef, make Tools::PropertySet threadsafe for read/write (10:19:40) - -2009-08-13 - * Marios Hadjieleftheriou (14:10:02) - * Marios Hadjieleftheriou (10:42:43) - * Marios Hadjieleftheriou 1. Replace size_t with uint32_t to fix 64/32 bit compatibility issues 2. Fixed memory bug related to data array and bulk loading for RTree. (10:24:35) - -2009-08-10 - * Howard Butler remove #define interface, use class (08:35:22) - -2009-08-05 - * Howard Butler osgeo4w packaging (20:11:54) - * Howard Butler don't redefine interface if it is already defined (/me scowls at windows (15:21:47) - * Howard Butler comment out record deletion entirely (14:27:33) - * Howard Butler guard against invalid delete (12:58:43) - -2009-07-30 - * Howard Butler bump version to 1.4.0 in prep for release, add a windows docs to the dist (13:48:52) - * Howard Butler Add a CheckFilesExists(Tools::PropertySet&) method instead of the cheap way we were checking for existence before. This takes into account the file extensions and only returns true if both files exist (11:57:21) - * Howard Butler move the warning about 4251 down into _MSC_VER (11:56:37) - -2009-07-29 - * Howard Butler new changelog (22:10:27) - * Howard Butler update for new layout. make sure to build dll appropriately (21:32:41) - * Howard Butler turn off warning 4251 (16:24:23) - * Howard Butler fix #15 and provide a way to determine the library version at compile time (15:57:26) - * Howard Butler add back makefile.vc (15:50:19) - -2009-07-22 - * Howard Butler a note about the debugging lint that is incorrect when the bounds are infinity (14:29:35) - * Howard Butler make sure to #include to satisfy gcc 4.3+ (14:24:28) - * Marios Hadjieleftheriou (10:23:22) - * Marios Hadjieleftheriou (10:18:42) - -2009-07-21 - * Marios Hadjieleftheriou (08:11:09) - -2009-07-20 - * Howard Butler attempt to fix #8 and allow users to specify extensions for the dat and idx files of the diskstorage manager (15:32:50) - * Howard Butler make sure to update existing values in setProperties instead of assuming it doesn't exist in the map (12:35:36) - * Marios Hadjieleftheriou (10:01:52) - -2009-07-19 - * Marios Hadjieleftheriou (09:51:46) - -2009-07-18 - * Marios Hadjieleftheriou (20:26:54) - * Marios Hadjieleftheriou (20:15:51) - * Marios Hadjieleftheriou (20:13:28) - * Marios Hadjieleftheriou (20:09:59) - * Marios Hadjieleftheriou (20:02:29) - * Marios Hadjieleftheriou (17:52:03) - * Marios Hadjieleftheriou (17:19:51) - * Marios Hadjieleftheriou (17:19:07) - -2009-07-15 - * Howard Butler apply Willem's patch for #14 (09:39:07) - -2009-07-06 - * Howard Butler more descriptive and separate exception descriptions for FillFactor inconsistencies (17:23:39) - * Howard Butler silence warnings about windows compiler complaints on non-windows systems (09:38:20) - -2009-05-28 - * Howard Butler rename dlls to not have lib* in front of them (12:52:06) - * Howard Butler A much improved windows makefile based in libLAS' (11:31:33) - * Howard Butler On MSVC, just about every class complains about 4250, inheritance by dominance. We'll just shut that up for now. (11:31:04) - -2009-05-14 - * Howard Butler apply Patrick Mézard's patch for the inverted use of mktemp on windows #13 (13:26:54) - * Howard Butler Fix #12, add time.h so msvc9 works (13:21:20) - -2009-05-04 - * Howard Butler apply the patch for #11 - cstring and limits includes so gcc 4.3+ works (12:10:20) - -2008-05-30 - * Marios Hadjieleftheriou (14:42:57) - -2008-05-23 - * Marios Hadjieleftheriou (13:27:25) - * Marios Hadjieleftheriou (12:55:19) - * Marios Hadjieleftheriou (12:28:17) - -2008-05-18 - * Marios Hadjieleftheriou (07:35:58) - -2008-04-30 - * Howard Butler propset to ignore aclocal.m4 (00:39:52) - * Howard Butler aclocal.m4 is autogenerated. removing (00:39:18) - * Howard Butler set svn:ignore properties for autogenerated files and automake cruft (00:35:53) - * Howard Butler delete Makefile.in's from source tree. Use autogen.sh to remake them if building from svn source yourself (00:27:52) - * Howard Butler add rand48.h to dist target (00:26:18) - -2008-04-29 - * Marios Hadjieleftheriou (14:47:25) - * Marios Hadjieleftheriou (13:17:22) - * Marios Hadjieleftheriou (13:06:31) - * Marios Hadjieleftheriou (13:03:50) - * Marios Hadjieleftheriou (11:36:51) - * Marios Hadjieleftheriou (11:36:38) - * Marios Hadjieleftheriou (11:36:22) - * Marios Hadjieleftheriou Fixex malloc memory leak. (10:40:31) - * Marios Hadjieleftheriou Fixed malloc memory leak (10:40:11) - -2008-02-26 - * Howard Butler oops. Add missing file (10:15:43) - * Howard Butler oops. Add missing file (10:14:56) - -2008-01-25 - * Howard Butler Initial push of windows patches (13:43:36) - -2008-01-23 - * Marios Hadjieleftheriou (10:25:52) - -2008-01-21 - * Marios Hadjieleftheriou (08:19:44) - -2008-01-19 - * Howard Butler bump version to 1.3 (14:51:44) - * Howard Butler Add an auto-generated ChangeLog (12:42:27) - * Howard Butler add myself and some notes (12:37:39) - * Howard Butler update to ReST (12:36:26) - * Howard Butler update ReST (12:09:45) - * Howard Butler update ReST (12:09:16) - * Howard Butler update ReST (12:03:40) - * Howard Butler update ReST (12:02:48) - * Howard Butler update ReST (12:02:10) - * Howard Butler update ReST (12:01:58) - * Howard Butler update ReST (11:59:42) - * Howard Butler update ReST (11:59:10) - * Howard Butler update ReST (11:58:53) - * Howard Butler update ReST (11:58:13) - * Howard Butler update ReST (11:56:33) - * Howard Butler update ReST (11:55:11) - * Howard Butler update ReST (11:29:26) - * Howard Butler update to ReST (11:26:06) - * Howard Butler set mimetype to reStructured text so Trac will render it for us in the browser (11:02:56) - -2008-01-17 - * Howard Butler add internal headers to the _SOURCES targets so they get included in make dist (17:34:01) - * Howard Butler add autogen.sh to simplify auto stuff (11:06:18) - * Howard Butler move debian packaging stuff out of trunk (11:04:16) - -2008-01-15 - * Howard Butler add nmake makefile (13:33:39) - -2007-12-07 - * Kenneth Christiansen Wrong names (14:44:52) - * Kenneth Christiansen Fixed rules file (13:58:13) - * Kenneth Christiansen Updates to the control file (packaging) Removal of files that shouldn't be in SVN (12:10:46) - -2007-11-30 - * Marios Hadjieleftheriou (12:04:00) - * Sean Gillies Version info to 1:0:0 (10:50:02) - -2007-11-29 - * Marios Hadjieleftheriou (16:26:44) - * Marios Hadjieleftheriou (15:54:08) - * Marios Hadjieleftheriou (15:48:42) - * Sean Gillies Add debian directory created by dh_make (12:00:13) - -2007-11-28 - * Howard Butler use -version-info instead of -release (22:05:27) - * Howard Butler include Makefile.in's (18:59:56) - * Howard Butler use .'s to separate version info and don't do -no-undefined (18:55:06) - * Howard Butler tweak formatting (18:19:42) - * Sean Gillies Add version-info to Makefile.am (18:11:46) - * Howard Butler finish incorporating -ltools (17:54:30) - * Howard Butler more progress on automake for includes directories... close, but not quite (16:48:19) - * Howard Butler Add automake files for includes (16:38:55) - * Howard Butler start incorporating -ltools into the tree (15:03:45) - -2007-08-30 - * Marios Hadjieleftheriou README should be INSTALL, and INSTALL should be README (10:16:33) - * Marios Hadjieleftheriou README should be INSTALL, and INSTALL should be README (10:15:49) - * Marios Hadjieleftheriou README file should be INSTALL, and INSTALL should be README (10:13:34) - -2007-08-01 - * Howard Butler revert r9 (23:37:29) - * Howard Butler revert r10 (23:37:03) - * Howard Butler revert r11 (23:36:42) - * Howard Butler revert r12 (23:36:19) - * Howard Butler revert r13 (23:35:52) - * Howard Butler add strings.h (23:34:57) - * Howard Butler add strings.h (23:27:45) - * Howard Butler add strings.h (23:26:36) - * Howard Butler add strings.h (23:25:26) - * Howard Butler include (21:23:28) - * Howard Butler include in DiskStorageManager (this is not available on Solaris by default) (21:21:34) - * Howard Butler add data and queries for tests (15:49:33) - * Howard Butler add Marios' latest updates (15:48:13) - * Howard Butler oops, don't include zip files (15:40:50) - * Howard Butler add 1.1.1 version of library (15:37:49) - * Howard Butler basic layout (15:32:49) - diff --git a/spatialindex-1.8.5/INSTALL b/spatialindex-1.8.5/INSTALL deleted file mode 100644 index 095b1eb..0000000 --- a/spatialindex-1.8.5/INSTALL +++ /dev/null @@ -1,231 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free -Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - -By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PREFIX', the package will -use PREFIX as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/spatialindex-1.8.5/INSTALL.WIN b/spatialindex-1.8.5/INSTALL.WIN deleted file mode 100644 index 52649de..0000000 --- a/spatialindex-1.8.5/INSTALL.WIN +++ /dev/null @@ -1,28 +0,0 @@ -Visual Studio 2005: -You have to open the spatialindex.sln solution from the IDE and build. -Unfortunatelly, vcbuild.exe does not work as expected, hence you cannot -build the DLL from the command line. - -Visutal Studio 2008: -Either use the IDE or use vcbuild to compile from the command line: - -To create 32bit DLL: -1. Open a Visual Studio command prompt (or open any shell - and run vcvars32.bat). - -2a. Release build: - Run vcbuild.exe /useenv spatialindex.sln "Release|Win32" -2b. Debug build: - Run vcbuild.exe /useenv spatialindex.sln "Debug|Win32" - -To create 64bit DLL: -1. Open a Visual Studio x64 command prompt (or open any shell - and run vcvarsall.bat x64). - -2a. Release build: - Run vcbuild.exe /useenv spatialindex.sln "Release|x64" -2b. Debug build: - Run vcbuild.exe /useenv spatialindex.sln "Debug|x64" - -Enjoy! - diff --git a/spatialindex-1.8.5/Makefile.am b/spatialindex-1.8.5/Makefile.am deleted file mode 100644 index f788e69..0000000 --- a/spatialindex-1.8.5/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = src . test include - -ACLOCAL_AMFLAGS= -I m4 -lib_LTLIBRARIES = libspatialindex.la libspatialindex_c.la - -libspatialindex_la_SOURCES = -libspatialindex_la_LIBADD = \ - src/spatialindex/liblibrary.la \ - src/storagemanager/libstoragemanager.la \ - src/rtree/librtree.la \ - src/mvrtree/libmvrtree.la \ - src/tprtree/libtprtree.la \ - src/tools/libtools.la - -libspatialindex_c_la_SOURCES = -libspatialindex_c_la_LIBADD = \ - libspatialindex.la \ - src/capi/libsidxc.la - -libspatialindex_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ -libspatialindex_c_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ - -EXTRA_DIST = INSTALL.WIN \ - spatialindex.sln \ - spatialindex-vc/spatialindex.vcproj \ - CMakeLists.txt \ - src/CMakeLists.txt \ - test/CMakeLists.txt \ - test/mvrtree/test1/run \ - test/mvrtree/test2/run \ - test/rtree/test1/run \ - test/rtree/test2/run \ - test/rtree/test3/run \ - test/rtree/test4/run \ - test/tprtree/test1/run \ - test/tprtree/test2/run diff --git a/spatialindex-1.8.5/Makefile.in b/spatialindex-1.8.5/Makefile.in deleted file mode 100644 index c2e915c..0000000 --- a/spatialindex-1.8.5/Makefile.in +++ /dev/null @@ -1,942 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \ - COPYING compile config.guess config.sub depcomp install-sh \ - missing ltmain.sh -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libspatialindex_la_DEPENDENCIES = src/spatialindex/liblibrary.la \ - src/storagemanager/libstoragemanager.la src/rtree/librtree.la \ - src/mvrtree/libmvrtree.la src/tprtree/libtprtree.la \ - src/tools/libtools.la -am_libspatialindex_la_OBJECTS = -libspatialindex_la_OBJECTS = $(am_libspatialindex_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libspatialindex_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libspatialindex_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -libspatialindex_c_la_DEPENDENCIES = libspatialindex.la \ - src/capi/libsidxc.la -am_libspatialindex_c_la_OBJECTS = -libspatialindex_c_la_OBJECTS = $(am_libspatialindex_c_la_OBJECTS) -libspatialindex_c_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libspatialindex_c_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libspatialindex_la_SOURCES) \ - $(libspatialindex_c_la_SOURCES) -DIST_SOURCES = $(libspatialindex_la_SOURCES) \ - $(libspatialindex_c_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-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 -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 -GZIP_ENV = --best -DIST_TARGETS = dist-bzip2 dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = src . test include -ACLOCAL_AMFLAGS = -I m4 -lib_LTLIBRARIES = libspatialindex.la libspatialindex_c.la -libspatialindex_la_SOURCES = -libspatialindex_la_LIBADD = \ - src/spatialindex/liblibrary.la \ - src/storagemanager/libstoragemanager.la \ - src/rtree/librtree.la \ - src/mvrtree/libmvrtree.la \ - src/tprtree/libtprtree.la \ - src/tools/libtools.la - -libspatialindex_c_la_SOURCES = -libspatialindex_c_la_LIBADD = \ - libspatialindex.la \ - src/capi/libsidxc.la - -libspatialindex_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ -libspatialindex_c_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ -EXTRA_DIST = INSTALL.WIN \ - spatialindex.sln \ - spatialindex-vc/spatialindex.vcproj \ - CMakeLists.txt \ - src/CMakeLists.txt \ - test/CMakeLists.txt \ - test/mvrtree/test1/run \ - test/mvrtree/test2/run \ - test/rtree/test1/run \ - test/rtree/test2/run \ - test/rtree/test3/run \ - test/rtree/test4/run \ - test/tprtree/test1/run \ - test/tprtree/test2/run - -all: all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - 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)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libspatialindex.la: $(libspatialindex_la_OBJECTS) $(libspatialindex_la_DEPENDENCIES) $(EXTRA_libspatialindex_la_DEPENDENCIES) - $(AM_V_CCLD)$(libspatialindex_la_LINK) -rpath $(libdir) $(libspatialindex_la_OBJECTS) $(libspatialindex_la_LIBADD) $(LIBS) - -libspatialindex_c.la: $(libspatialindex_c_la_OBJECTS) $(libspatialindex_c_la_DEPENDENCIES) $(EXTRA_libspatialindex_c_la_DEPENDENCIES) - $(AM_V_CCLD)$(libspatialindex_c_la_LINK) -rpath $(libdir) $(libspatialindex_c_la_OBJECTS) $(libspatialindex_c_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libLTLIBRARIES clean-libtool cscope cscopelist-am ctags \ - ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ - dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-libLTLIBRARIES \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/NEWS b/spatialindex-1.8.5/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/spatialindex-1.8.5/README b/spatialindex-1.8.5/README deleted file mode 100644 index 67c4401..0000000 --- a/spatialindex-1.8.5/README +++ /dev/null @@ -1,10 +0,0 @@ -***************************************************************************** - libspatialindex -***************************************************************************** - -:Author: Marios Hadjieleftheriou -:Contact: mhadji@gmail.com -:Revision: 1.8.4 -:Date: 09/24/2014 - -See http://libspatialindex.org for full documentation. diff --git a/spatialindex-1.8.5/aclocal.m4 b/spatialindex-1.8.5/aclocal.m4 deleted file mode 100644 index 690af89..0000000 --- a/spatialindex-1.8.5/aclocal.m4 +++ /dev/null @@ -1,1154 +0,0 @@ -# generated automatically by aclocal 1.14.1 -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 2002-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' -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.14.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_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.14.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - 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_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) diff --git a/spatialindex-1.8.5/compile b/spatialindex-1.8.5/compile deleted file mode 100755 index 531136b..0000000 --- a/spatialindex-1.8.5/compile +++ /dev/null @@ -1,347 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2012-10-14.11; # UTC - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# 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. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/spatialindex-1.8.5/config.guess b/spatialindex-1.8.5/config.guess deleted file mode 100755 index b79252d..0000000 --- a/spatialindex-1.8.5/config.guess +++ /dev/null @@ -1,1558 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. - -timestamp='2013-06-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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# 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. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches with a ChangeLog entry to config-patches@gnu.org. - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/spatialindex-1.8.5/config.sub b/spatialindex-1.8.5/config.sub deleted file mode 100755 index 9633db7..0000000 --- a/spatialindex-1.8.5/config.sub +++ /dev/null @@ -1,1791 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. - -timestamp='2013-08-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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# 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. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches with a ChangeLog entry to config-patches@gnu.org. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2013 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - 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 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or1k-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/spatialindex-1.8.5/configure b/spatialindex-1.8.5/configure deleted file mode 100755 index b6de1f5..0000000 --- a/spatialindex-1.8.5/configure +++ /dev/null @@ -1,17990 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for spatialindex 1.8.5. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -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 -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and mhadji@gmail.com -$0: about your system, including any error possibly output -$0: before this message. Then install a modern shell, or -$0: manually run the script under such a shell if you do -$0: have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='spatialindex' -PACKAGE_TARNAME='spatialindex-src' -PACKAGE_VERSION='1.8.5' -PACKAGE_STRING='spatialindex 1.8.5' -PACKAGE_BUGREPORT='mhadji@gmail.com' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -RAND_IS_CONFIG_FALSE -RAND_IS_CONFIG_TRUE -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -am__untar -am__tar -AMTAR -am__leading_dot -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -AWK -RANLIB -STRIP -ac_ct_AR -AR -DLLTOOL -OBJDUMP -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -ac_ct_CC -CFLAGS -CC -host_os -host_vendor -host_cpu -host -LIBTOOL -SET_MAKE -LN_S -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -CXXCPP -OBJEXT -EXEEXT -ac_ct_CXX -CPPFLAGS -LDFLAGS -CXXFLAGS -CXX -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_dependency_tracking -enable_silent_rules -enable_debug -' - ac_precious_vars='build_alias -host_alias -target_alias -CXX -CXXFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCC -CXXCPP -CC -CFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures spatialindex 1.8.5 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root - [DATAROOTDIR/doc/spatialindex-src] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of spatialindex 1.8.5:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-debug=no/yes turn on debugging default=$debug_default - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --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). - -Some influential environment variables: - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXXCPP C++ preprocessor - CC C compiler command - CFLAGS C compiler flags - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -spatialindex configure 1.8.5 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to mhadji@gmail.com ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel -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 spatialindex $as_me 1.8.5, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - - - -debug_default="no" - -CFLAGS="-Wall -Wno-long-long -pedantic $CFLAGS" -CXXFLAGS="-Wall -Wno-long-long -pedantic -std=c++98 $CXXFLAGS" - -# Checks for programs. -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 as_fn_executable_p "$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 as_fn_executable_p "$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 - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C++ compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $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 - -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 - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.2' -macro_revision='1.3337' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# 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 - - - - - - - - - - - - - - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $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 -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $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_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $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_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - 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 - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $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 -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $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 - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$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 -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $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_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$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_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $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 - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$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_c_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_c_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_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$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_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -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 "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $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 -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $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_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $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_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $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 - DUMPBIN=$ac_ct_DUMPBIN - 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" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$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%"$_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $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 : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $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 -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $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_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $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_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="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 - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # 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 - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -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 - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - 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 -done - done -IFS=$as_save_IFS - -fi -fi -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; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $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_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - 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 -done - done -IFS=$as_save_IFS - -fi -fi -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_DLLTOOL" = x; then - DLLTOOL="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 - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -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 - 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_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - 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 -done - done -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; } -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 "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 -{ $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_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="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 -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - 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 - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $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 -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $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_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $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_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - 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 - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$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 -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -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'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # 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};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - 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 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 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 - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$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 - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $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; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${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; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - 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; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - 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; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*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 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - 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" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $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 as_fn_executable_p "$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 as_fn_executable_p "$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*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $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 -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $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_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $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_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - 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 - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $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 -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $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_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $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_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - 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 - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $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 -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $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_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $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_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - 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 - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $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 -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $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_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $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_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - 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 - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $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 -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $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_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $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_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - 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 - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -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 : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -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' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -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 -{ $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; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_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_c_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_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_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_c_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 \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -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 - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - 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; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $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. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "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~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "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 $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # 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") || (\$ 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 - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - 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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "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' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$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' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - 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*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - 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 - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - 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_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $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 - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $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) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - 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" -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" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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; } -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 - (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 - (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 - 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 - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; 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 - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # 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 - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # 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;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -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= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -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); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -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); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - if test -n "$CXX" && ( test "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' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - 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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "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' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$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. - archive_expsym_cmds_CXX="\$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' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # 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*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - 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 - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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 $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 - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$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 $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 $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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - 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 - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $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. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$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") || (\$ 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*) - 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 - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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; } -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 - (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 - (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 - 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 - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; 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 - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # 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 - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # 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;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -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= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -am__api_version='1.14' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $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 as_fn_executable_p "$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 -{ $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_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="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 -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - 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 - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='spatialindex-src' - VERSION='1.8.5' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -depcc="$CC" 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_CC_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_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -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 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $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 - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - -# Checks for header files. -for ac_header in fcntl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" -if test "x$ac_cv_header_fcntl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FCNTL_H 1 -_ACEOF - -else - as_fn_error $? "cannot find fcntl.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF - -else - as_fn_error $? "cannot find unistd.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/types.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_TYPES_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/types.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/stat.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_stat_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_STAT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/stat.h, bailing out" "$LINENO" 5 -fi - -done - - -for ac_header in pthread.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_H 1 -_ACEOF - -#ifndef ANDROID -LIBS="$LIBS -lpthread" -#endif -fi - -done - - -for ac_header in sys/resource.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_resource_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_RESOURCE_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/resource.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/time.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_TIME_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/time.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find stdint.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in features.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default" -if test "x$ac_cv_header_features_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FEATURES_H 1 -_ACEOF - -fi - -done - - -#MH_CXX_HEADER_TOOLS - -LIBS="$LIBS" - -# Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; -else - enable_debug=$debug_default -fi - - -if test "x$enable_debug" = "xyes"; then - CXXFLAGS="$CXXFLAGS -g -DDEBUG" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking wether debug information is enabled... yes" >&5 -$as_echo "checking wether debug information is enabled... yes" >&6; } -else - CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking wether debug information is enabled... no" >&5 -$as_echo "checking wether debug information is enabled... no" >&6; } -fi - -# Checks for library functions. -for ac_func in gettimeofday memset memcpy bcopy srand48 -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - if test "x$HAVE_SRAND48" = xtrue; then - RAND_IS_CONFIG_TRUE= - RAND_IS_CONFIG_FALSE='#' -else - RAND_IS_CONFIG_TRUE='#' - RAND_IS_CONFIG_FALSE= -fi - - -ac_config_files="$ac_config_files Makefile include/Makefile src/Makefile src/libspatialindex.pc src/capi/Makefile src/spatialindex/Makefile src/storagemanager/Makefile src/rtree/Makefile src/mvrtree/Makefile src/tprtree/Makefile src/tools/Makefile test/Makefile test/geometry/Makefile test/rtree/Makefile test/mvrtree/Makefile test/tprtree/Makefile" - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__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 -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${RAND_IS_CONFIG_TRUE}" && test -z "${RAND_IS_CONFIG_FALSE}"; then - as_fn_error $? "conditional \"RAND_IS_CONFIG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by spatialindex $as_me 1.8.5, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -spatialindex config.status 1.8.5 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -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"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -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 SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/libspatialindex.pc") CONFIG_FILES="$CONFIG_FILES src/libspatialindex.pc" ;; - "src/capi/Makefile") CONFIG_FILES="$CONFIG_FILES src/capi/Makefile" ;; - "src/spatialindex/Makefile") CONFIG_FILES="$CONFIG_FILES src/spatialindex/Makefile" ;; - "src/storagemanager/Makefile") CONFIG_FILES="$CONFIG_FILES src/storagemanager/Makefile" ;; - "src/rtree/Makefile") CONFIG_FILES="$CONFIG_FILES src/rtree/Makefile" ;; - "src/mvrtree/Makefile") CONFIG_FILES="$CONFIG_FILES src/mvrtree/Makefile" ;; - "src/tprtree/Makefile") CONFIG_FILES="$CONFIG_FILES src/tprtree/Makefile" ;; - "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;; - "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; - "test/geometry/Makefile") CONFIG_FILES="$CONFIG_FILES test/geometry/Makefile" ;; - "test/rtree/Makefile") CONFIG_FILES="$CONFIG_FILES test/rtree/Makefile" ;; - "test/mvrtree/Makefile") CONFIG_FILES="$CONFIG_FILES test/mvrtree/Makefile" ;; - "test/tprtree/Makefile") CONFIG_FILES="$CONFIG_FILES test/tprtree/Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# 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, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -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 - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - 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" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - diff --git a/spatialindex-1.8.5/configure.ac b/spatialindex-1.8.5/configure.ac deleted file mode 100644 index 3ce074d..0000000 --- a/spatialindex-1.8.5/configure.ac +++ /dev/null @@ -1,83 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) - -m4_define([sidx_version_major], [1]) -m4_define([sidx_version_minor], [8]) -m4_define([sidx_version_micro], [5]) -m4_define([sidx_version], - [sidx_version_major.sidx_version_minor.sidx_version_micro]) - -AC_INIT([spatialindex], [sidx_version], [mhadji@gmail.com], [spatialindex-src]) -AC_CANONICAL_BUILD -AC_CONFIG_MACRO_DIR([m4]) - -debug_default="no" - -CFLAGS="-Wall -Wno-long-long -pedantic $CFLAGS" -CXXFLAGS="-Wall -Wno-long-long -pedantic -std=c++98 $CXXFLAGS" - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CXXCPP -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_PROG_LIBTOOL -AM_INIT_AUTOMAKE([dist-bzip2 subdir-objects]) - -# Checks for header files. -AC_CHECK_HEADERS(fcntl.h,, [AC_MSG_ERROR([cannot find fcntl.h, bailing out])]) -AC_CHECK_HEADERS(unistd.h,, [AC_MSG_ERROR([cannot find unistd.h, bailing out])]) -AC_CHECK_HEADERS(sys/types.h,, [AC_MSG_ERROR([cannot find sys/types.h, bailing out])]) -AC_CHECK_HEADERS(sys/stat.h,, [AC_MSG_ERROR([cannot find sys/stat.h, bailing out])]) - -AC_CHECK_HEADERS(pthread.h, [ -#ifndef ANDROID -LIBS="$LIBS -lpthread" -#endif]) - -AC_CHECK_HEADERS(sys/resource.h,, [AC_MSG_ERROR([cannot find sys/resource.h, bailing out])]) -AC_CHECK_HEADERS(sys/time.h,, [AC_MSG_ERROR([cannot find sys/time.h, bailing out])]) -AC_CHECK_HEADERS(stdint.h,, [AC_MSG_ERROR([cannot find stdint.h, bailing out])]) -AC_CHECK_HEADERS(features.h) - -#MH_CXX_HEADER_TOOLS - -LIBS="$LIBS" - -AC_ARG_ENABLE(debug, [ --enable-debug=[no/yes] turn on debugging [default=$debug_default]],, enable_debug=$debug_default) - -if test "x$enable_debug" = "xyes"; then - CXXFLAGS="$CXXFLAGS -g -DDEBUG" - AC_MSG_RESULT(checking wether debug information is enabled... yes) -else - CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" - AC_MSG_RESULT(checking wether debug information is enabled... no) -fi - -# Checks for library functions. -AC_CHECK_FUNCS([gettimeofday memset memcpy bcopy srand48]) - -AM_CONDITIONAL([RAND_IS_CONFIG], [test "x$HAVE_SRAND48" = xtrue]) - -AC_CONFIG_FILES([ Makefile - include/Makefile - src/Makefile - src/libspatialindex.pc - src/capi/Makefile - src/spatialindex/Makefile - src/storagemanager/Makefile - src/rtree/Makefile - src/mvrtree/Makefile - src/tprtree/Makefile - src/tools/Makefile - test/Makefile - test/geometry/Makefile - test/rtree/Makefile - test/mvrtree/Makefile - test/tprtree/Makefile]) - -AC_OUTPUT - diff --git a/spatialindex-1.8.5/depcomp b/spatialindex-1.8.5/depcomp deleted file mode 100644 index 11e2d3b..0000000 --- a/spatialindex-1.8.5/depcomp +++ /dev/null @@ -1,522 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2004-05-31.23 - -# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit 0 - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit 0 - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - stat=$? - - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - outname="$stripped.o" - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # Dependencies are output in .lo.d with libtool 1.4. - # With libtool 1.5 they are output both in $dir.libs/$base.o.d - # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the - # latter, because the former will be cleaned when $dir.libs is - # erased. - tmpdepfile1="$dir.libs/$base.lo.d" - tmpdepfile2="$dir$base.o.d" - tmpdepfile3="$dir.libs/$base.d" - "$@" -Wc,-MD - else - tmpdepfile1="$dir$base.o.d" - tmpdepfile2="$dir$base.d" - tmpdepfile3="$dir$base.d" - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - elif test -f "$tmpdepfile2"; then - tmpdepfile="$tmpdepfile2" - else - tmpdepfile="$tmpdepfile3" - fi - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/include/Makefile.am b/spatialindex-1.8.5/include/Makefile.am deleted file mode 100644 index d71812b..0000000 --- a/spatialindex-1.8.5/include/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -spatialindexdir = $(includedir) - -nobase_spatialindex_HEADERS = spatialindex/SpatialIndex.h \ - spatialindex/RTree.h \ - spatialindex/MVRTree.h \ - spatialindex/TPRTree.h \ - spatialindex/Point.h \ - spatialindex/Region.h \ - spatialindex/LineSegment.h \ - spatialindex/TimePoint.h \ - spatialindex/TimeRegion.h \ - spatialindex/MovingPoint.h \ - spatialindex/MovingRegion.h \ - spatialindex/Version.h \ - spatialindex/capi/BoundsQuery.h \ - spatialindex/capi/CountVisitor.h \ - spatialindex/capi/CustomStorage.h \ - spatialindex/capi/DataStream.h \ - spatialindex/capi/Error.h \ - spatialindex/capi/IdVisitor.h \ - spatialindex/capi/Index.h \ - spatialindex/capi/LeafQuery.h \ - spatialindex/capi/ObjVisitor.h \ - spatialindex/capi/sidx_api.h \ - spatialindex/capi/sidx_export.h \ - spatialindex/capi/sidx_config.h \ - spatialindex/capi/sidx_impl.h \ - spatialindex/capi/Utility.h \ - spatialindex/tools/PointerPool.h \ - spatialindex/tools/PoolPointer.h \ - spatialindex/tools/rand48.h \ - spatialindex/tools/SmartPointer.h \ - spatialindex/tools/Tools.h diff --git a/spatialindex-1.8.5/include/Makefile.in b/spatialindex-1.8.5/include/Makefile.in deleted file mode 100644 index d4fdc99..0000000 --- a/spatialindex-1.8.5/include/Makefile.in +++ /dev/null @@ -1,582 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(nobase_spatialindex_HEADERS) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(spatialindexdir)" -HEADERS = $(nobase_spatialindex_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -spatialindexdir = $(includedir) -nobase_spatialindex_HEADERS = spatialindex/SpatialIndex.h \ - spatialindex/RTree.h \ - spatialindex/MVRTree.h \ - spatialindex/TPRTree.h \ - spatialindex/Point.h \ - spatialindex/Region.h \ - spatialindex/LineSegment.h \ - spatialindex/TimePoint.h \ - spatialindex/TimeRegion.h \ - spatialindex/MovingPoint.h \ - spatialindex/MovingRegion.h \ - spatialindex/Version.h \ - spatialindex/capi/BoundsQuery.h \ - spatialindex/capi/CountVisitor.h \ - spatialindex/capi/CustomStorage.h \ - spatialindex/capi/DataStream.h \ - spatialindex/capi/Error.h \ - spatialindex/capi/IdVisitor.h \ - spatialindex/capi/Index.h \ - spatialindex/capi/LeafQuery.h \ - spatialindex/capi/ObjVisitor.h \ - spatialindex/capi/sidx_api.h \ - spatialindex/capi/sidx_export.h \ - spatialindex/capi/sidx_config.h \ - spatialindex/capi/sidx_impl.h \ - spatialindex/capi/Utility.h \ - spatialindex/tools/PointerPool.h \ - spatialindex/tools/PoolPointer.h \ - spatialindex/tools/rand48.h \ - spatialindex/tools/SmartPointer.h \ - spatialindex/tools/Tools.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-nobase_spatialindexHEADERS: $(nobase_spatialindex_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nobase_spatialindex_HEADERS)'; test -n "$(spatialindexdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(spatialindexdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(spatialindexdir)" || exit 1; \ - fi; \ - $(am__nobase_list) | while read dir files; do \ - xfiles=; for file in $$files; do \ - if test -f "$$file"; then xfiles="$$xfiles $$file"; \ - else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ - test -z "$$xfiles" || { \ - test "x$$dir" = x. || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(spatialindexdir)/$$dir'"; \ - $(MKDIR_P) "$(DESTDIR)$(spatialindexdir)/$$dir"; }; \ - echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(spatialindexdir)/$$dir'"; \ - $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(spatialindexdir)/$$dir" || exit $$?; }; \ - done - -uninstall-nobase_spatialindexHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nobase_spatialindex_HEADERS)'; test -n "$(spatialindexdir)" || list=; \ - $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - dir='$(DESTDIR)$(spatialindexdir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(spatialindexdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-nobase_spatialindexHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-nobase_spatialindexHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man \ - install-nobase_spatialindexHEADERS install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-nobase_spatialindexHEADERS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/include/spatialindex/LineSegment.h b/spatialindex-1.8.5/include/spatialindex/LineSegment.h deleted file mode 100644 index 86c77a9..0000000 --- a/spatialindex-1.8.5/include/spatialindex/LineSegment.h +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL LineSegment : public libsupermesh::Tools::IObject, public virtual IShape - { - public: - LineSegment(); - LineSegment(const double* startPoint, const double* endPoint, uint32_t dimension); - LineSegment(const Point& startPoint, const Point& endPoint); - LineSegment(const LineSegment& l); - virtual ~LineSegment(); - - virtual LineSegment& operator=(const LineSegment& p); - virtual bool operator==(const LineSegment& p) const; - - // - // IObject interface - // - virtual LineSegment* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - // - // IShape interface - // - virtual bool intersectsShape(const IShape& in) const; - virtual bool containsShape(const IShape& in) const; - virtual bool touchesShape(const IShape& in) const; - virtual void getCenter(Point& out) const; - virtual uint32_t getDimension() const; - virtual void getMBR(Region& out) const; - virtual double getArea() const; - virtual double getMinimumDistance(const IShape& in) const; - - virtual bool intersectsLineSegment(const LineSegment& l) const; - virtual bool intersectsRegion(const Region& p) const; - virtual double getMinimumDistance(const Point& p) const; - //virtual double getMinimumDistance(const Region& r) const; - virtual double getRelativeMinimumDistance(const Point& p) const; - virtual double getRelativeMaximumDistance(const Region& r) const; - virtual double getAngleOfPerpendicularRay(); - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - uint32_t m_dimension; - double* m_pStartPoint; - double* m_pEndPoint; - - friend class Region; - friend class Point; - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const LineSegment& pt); - - protected: - - //some helpers for intersects methods - static double doubleAreaTriangle(const Point& a, const Point& b, const Point& c); - static bool leftOf(const Point& a, const Point& b, const Point& c); - static bool collinear(const Point& a, const Point& b, const Point& c); - static bool between(const Point& a, const Point& b, const Point& c); - static bool between(double a, double b, double c); - static bool intersectsProper(const Point& a, const Point& b, const Point& c, const Point& d); - static bool intersects(const Point& a, const Point& b, const Point& c, const Point& d); - - }; // LineSegment - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const LineSegment& pt); -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/MVRTree.h b/spatialindex-1.8.5/include/spatialindex/MVRTree.h deleted file mode 100644 index 150ff5c..0000000 --- a/spatialindex-1.8.5/include/spatialindex/MVRTree.h +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - SIDX_DLL enum MVRTreeVariant - { - RV_LINEAR = 0x0, - RV_QUADRATIC, - RV_RSTAR - }; - - SIDX_DLL enum PersistenObjectIdentifier - { - PersistentIndex = 0x1, - PersistentLeaf = 0x2 - }; - - SIDX_DLL enum RangeQueryType - { - ContainmentQuery = 0x1, - IntersectionQuery = 0x2 - }; - - class SIDX_DLL Data : public IData, public libsupermesh::Tools::ISerializable - { - public: - Data(uint32_t len, byte* pData, TimeRegion& r, id_type id); - virtual ~Data(); - - virtual Data* clone(); - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - virtual void getData(uint32_t& len, byte** data) const; - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - id_type m_id; - TimeRegion m_region; - byte* m_pData; - uint32_t m_dataLength; - }; // Data - - SIDX_DLL ISpatialIndex* returnMVRTree(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL ISpatialIndex* createNewMVRTree( - IStorageManager& in, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - MVRTreeVariant rv, - id_type& out_indexIdentifier - ); - SIDX_DLL ISpatialIndex* loadMVRTree( - IStorageManager& in, - id_type indexIdentifier - ); - } -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/MovingPoint.h b/spatialindex-1.8.5/include/spatialindex/MovingPoint.h deleted file mode 100644 index 2cc005c..0000000 --- a/spatialindex-1.8.5/include/spatialindex/MovingPoint.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL MovingPoint : public TimePoint, public IEvolvingShape - { - public: - MovingPoint(); - MovingPoint(const double* pCoords, const double* pVCoords, const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - MovingPoint(const double* pCoords, const double* pVCoords, double tStart, double tEnd, uint32_t dimension); - MovingPoint(const Point& p, const Point& vp, const libsupermesh::Tools::IInterval& ti); - MovingPoint(const Point& p, const Point& vp, double tStart, double tEnd); - MovingPoint(const MovingPoint& p); - virtual ~MovingPoint(); - - virtual MovingPoint& operator=(const MovingPoint& p); - virtual bool operator==(const MovingPoint& p) const; - - virtual double getCoord(uint32_t index, double t) const; - virtual double getProjectedCoord(uint32_t index, double t) const; - virtual double getVCoord(uint32_t index) const; - virtual void getPointAtTime(double t, Point& out) const; - - // - // IObject interface - // - virtual MovingPoint* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // IEvolvingShape interface - // - virtual void getVMBR(Region& out) const; - virtual void getMBRAtTime(double t, Region& out) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - private: - void initialize( - const double* pCoords, const double* pVCoords, - double tStart, double tEnd, uint32_t dimension); - - public: - double* m_pVCoords; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingPoint& pt); - }; // MovingPoint - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingPoint& pt); -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/MovingRegion.h b/spatialindex-1.8.5/include/spatialindex/MovingRegion.h deleted file mode 100644 index 6494832..0000000 --- a/spatialindex-1.8.5/include/spatialindex/MovingRegion.h +++ /dev/null @@ -1,175 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL MovingRegion : public TimeRegion, public IEvolvingShape - { - using Region::getLow; - using Region::getHigh; - using TimeRegion::intersectsRegionInTime; - using TimeRegion::containsRegionInTime; - using TimeRegion::combineRegionInTime; - using TimeRegion::getCombinedRegionInTime; - using TimeRegion::containsPointInTime; - - public: - MovingRegion(); - MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension); - MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - const libsupermesh::Tools::IInterval& ti); - MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - double tStart, double tEnd); - MovingRegion(const Region& mbr, const Region& vbr, const libsupermesh::Tools::IInterval& ivI); - MovingRegion(const Region& mbr, const Region& vbr, double tStart, double tEnd); - MovingRegion(const MovingPoint& low, const MovingPoint& high); - MovingRegion(const MovingRegion& in); - virtual ~MovingRegion(); - - virtual MovingRegion& operator=(const MovingRegion& r); - virtual bool operator==(const MovingRegion&) const; - - bool isShrinking() const; - - virtual double getLow(uint32_t index, double t) const; - virtual double getHigh(uint32_t index, double t) const; - virtual double getExtrapolatedLow(uint32_t index, double t) const; - virtual double getExtrapolatedHigh(uint32_t index, double t) const; - virtual double getVLow(uint32_t index) const; - virtual double getVHigh(uint32_t index) const; - - virtual bool intersectsRegionInTime(const MovingRegion& r) const; - virtual bool intersectsRegionInTime(const MovingRegion& r, libsupermesh::Tools::IInterval& out) const; - virtual bool intersectsRegionInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r, libsupermesh::Tools::IInterval& ret) const; - virtual bool containsRegionInTime(const MovingRegion& r) const; - virtual bool containsRegionInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r) const; - virtual bool containsRegionAfterTime(double t, const MovingRegion& r) const; - - virtual double getProjectedSurfaceAreaInTime() const; - virtual double getProjectedSurfaceAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - - virtual double getCenterDistanceInTime(const MovingRegion& r) const; - virtual double getCenterDistanceInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r) const; - - virtual bool intersectsRegionAtTime(double t, const MovingRegion& r) const; - virtual bool containsRegionAtTime(double t, const MovingRegion& r) const; - - virtual bool intersectsPointInTime(const MovingPoint& p) const; - virtual bool intersectsPointInTime(const MovingPoint& p, libsupermesh::Tools::IInterval& out) const; - virtual bool intersectsPointInTime(const libsupermesh::Tools::IInterval& ivI, const MovingPoint& p, libsupermesh::Tools::IInterval& out) const; - virtual bool containsPointInTime(const MovingPoint& p) const; - virtual bool containsPointInTime(const libsupermesh::Tools::IInterval& ivI, const MovingPoint& p) const; - - //virtual bool intersectsPointAtTime(double t, const MovingRegion& in) const; - //virtual bool containsPointAtTime(double t, const MovingRegion& in) const; - - virtual void combineRegionInTime(const MovingRegion& r); - virtual void combineRegionAfterTime(double t, const MovingRegion& r); - virtual void getCombinedRegionInTime(MovingRegion& out, const MovingRegion& in) const; - virtual void getCombinedRegionAfterTime(double t, MovingRegion& out, const MovingRegion& in) const; - - virtual double getIntersectingAreaInTime(const MovingRegion& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r) const; - - // - // IObject interface - // - virtual MovingRegion* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // IEvolvingShape interface - // - virtual void getVMBR(Region& out) const; - virtual void getMBRAtTime(double t, Region& out) const; - - // - // ITimeShape interface - // - virtual double getAreaInTime() const; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - private: - void initialize( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension); - - public: - class CrossPoint - { - public: - double m_t; - uint32_t m_dimension; - uint32_t m_boundary; - const MovingRegion* m_to; - - struct ascending: public std::binary_function - { - bool operator()(const CrossPoint& __x, const CrossPoint& __y) const { return __x.m_t > __y.m_t; } - }; - }; // CrossPoint - - public: - double* m_pVLow; - double* m_pVHigh; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingRegion& r); - }; // MovingRegion - - typedef libsupermesh::Tools::PoolPointer MovingRegionPtr; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingRegion& r); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/Point.h b/spatialindex-1.8.5/include/spatialindex/Point.h deleted file mode 100644 index dfdf4c8..0000000 --- a/spatialindex-1.8.5/include/spatialindex/Point.h +++ /dev/null @@ -1,92 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "tools/Tools.h" - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL Point : public libsupermesh::Tools::IObject, public virtual IShape - { - public: - Point(); - Point(const double* pCoords, uint32_t dimension); - Point(const Point& p); - virtual ~Point(); - - virtual Point& operator=(const Point& p); - virtual bool operator==(const Point& p) const; - - // - // IObject interface - // - virtual Point* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - // - // IShape interface - // - virtual bool intersectsShape(const IShape& in) const; - virtual bool containsShape(const IShape& in) const; - virtual bool touchesShape(const IShape& in) const; - virtual void getCenter(Point& out) const; - virtual uint32_t getDimension() const; - virtual void getMBR(Region& out) const; - virtual double getArea() const; - virtual double getMinimumDistance(const IShape& in) const; - - virtual double getMinimumDistance(const Point& p) const; - - virtual double getCoordinate(uint32_t index) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - uint32_t m_dimension; - double* m_pCoords; - - friend class Region; - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const Point& pt); - }; // Point - - typedef libsupermesh::Tools::PoolPointer PointPtr; - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const Point& pt); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/RTree.h b/spatialindex-1.8.5/include/spatialindex/RTree.h deleted file mode 100644 index 5349343..0000000 --- a/spatialindex-1.8.5/include/spatialindex/RTree.h +++ /dev/null @@ -1,113 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - SIDX_DLL enum RTreeVariant - { - RV_LINEAR = 0x0, - RV_QUADRATIC, - RV_RSTAR - }; - - SIDX_DLL enum BulkLoadMethod - { - BLM_STR = 0x0 - }; - - SIDX_DLL enum PersistenObjectIdentifier - { - PersistentIndex = 0x1, - PersistentLeaf = 0x2 - }; - - SIDX_DLL enum RangeQueryType - { - ContainmentQuery = 0x1, - IntersectionQuery = 0x2 - }; - - class SIDX_DLL Data : public IData, public libsupermesh::Tools::ISerializable - { - public: - Data(uint32_t len, byte* pData, Region& r, id_type id); - virtual ~Data(); - - virtual Data* clone(); - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - virtual void getData(uint32_t& len, byte** data) const; - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - id_type m_id; - Region m_region; - byte* m_pData; - uint32_t m_dataLength; - }; // Data - - SIDX_DLL ISpatialIndex* returnRTree(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL ISpatialIndex* createNewRTree( - IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - RTreeVariant rv, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - RTreeVariant rv, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - IStorageManager& sm, - libsupermesh::Tools::PropertySet& ps, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* loadRTree(IStorageManager& in, id_type indexIdentifier); - } -} } diff --git a/spatialindex-1.8.5/include/spatialindex/Region.h b/spatialindex-1.8.5/include/spatialindex/Region.h deleted file mode 100644 index aa9551c..0000000 --- a/spatialindex-1.8.5/include/spatialindex/Region.h +++ /dev/null @@ -1,111 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL Region : public libsupermesh::Tools::IObject, public virtual IShape - { - public: - Region(); - Region(const double* pLow, const double* pHigh, uint32_t dimension); - Region(const Point& low, const Point& high); - Region(const Region& in); - virtual ~Region(); - - virtual Region& operator=(const Region& r); - virtual bool operator==(const Region&) const; - - // - // IObject interface - // - virtual Region* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - // - // IShape interface - // - virtual bool intersectsShape(const IShape& in) const; - virtual bool containsShape(const IShape& in) const; - virtual bool touchesShape(const IShape& in) const; - virtual void getCenter(Point& out) const; - virtual uint32_t getDimension() const; - virtual void getMBR(Region& out) const; - virtual double getArea() const; - virtual double getMinimumDistance(const IShape& in) const; - - virtual bool intersectsRegion(const Region& in) const; - virtual bool containsRegion(const Region& in) const; - virtual bool touchesRegion(const Region& in) const; - virtual double getMinimumDistance(const Region& in) const; - - virtual bool intersectsLineSegment(const LineSegment& in) const; - - virtual bool containsPoint(const Point& in) const; - virtual bool touchesPoint(const Point& in) const; - virtual double getMinimumDistance(const Point& in) const; - - virtual Region getIntersectingRegion(const Region& r) const; - virtual double getIntersectingArea(const Region& in) const; - virtual double getMargin() const; - - virtual void combineRegion(const Region& in); - virtual void combinePoint(const Point& in); - virtual void getCombinedRegion(Region& out, const Region& in) const; - - virtual double getLow(uint32_t index) const; - virtual double getHigh(uint32_t index) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - private: - void initialize(const double* pLow, const double* pHigh, uint32_t dimension); - - public: - uint32_t m_dimension; - double* m_pLow; - double* m_pHigh; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const Region& r); - }; // Region - - typedef libsupermesh::Tools::PoolPointer RegionPtr; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const Region& r); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/SpatialIndex.h b/spatialindex-1.8.5/include/spatialindex/SpatialIndex.h deleted file mode 100644 index 3188e98..0000000 --- a/spatialindex-1.8.5/include/spatialindex/SpatialIndex.h +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "tools/Tools.h" - -#ifndef M_PI_2 -#define M_PI_2 1.57079632679489661922 -#endif - -namespace libsupermesh { namespace SpatialIndex -{ - class Point; - class LineSegment; - class Region; - - - typedef int64_t id_type; - - SIDX_DLL enum CommandType - { - CT_NODEREAD = 0x0, - CT_NODEDELETE, - CT_NODEWRITE - }; - - class SIDX_DLL InvalidPageException : public libsupermesh::Tools::Exception - { - public: - InvalidPageException(id_type id); - virtual ~InvalidPageException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // InvalidPageException - - // - // Interfaces - // - - class SIDX_DLL IShape : public libsupermesh::Tools::ISerializable - { - public: - virtual bool intersectsShape(const IShape& in) const = 0; - virtual bool containsShape(const IShape& in) const = 0; - virtual bool touchesShape(const IShape& in) const = 0; - virtual void getCenter(Point& out) const = 0; - virtual uint32_t getDimension() const = 0; - virtual void getMBR(Region& out) const = 0; - virtual double getArea() const = 0; - virtual double getMinimumDistance(const IShape& in) const = 0; - virtual ~IShape() {} - }; // IShape - - class SIDX_DLL ITimeShape : public libsupermesh::Tools::IInterval - { - public: - virtual bool intersectsShapeInTime(const ITimeShape& in) const = 0; - virtual bool intersectsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const = 0; - virtual bool containsShapeInTime(const ITimeShape& in) const = 0; - virtual bool containsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const = 0; - virtual bool touchesShapeInTime(const ITimeShape& in) const = 0; - virtual bool touchesShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const = 0; - virtual double getAreaInTime() const = 0; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const = 0; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const = 0; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const = 0; - virtual ~ITimeShape() {} - }; // ITimeShape - - class SIDX_DLL IEvolvingShape - { - public: - virtual void getVMBR(Region& out) const = 0; - virtual void getMBRAtTime(double t, Region& out) const = 0; - virtual ~IEvolvingShape() {} - }; // IEvolvingShape - - class SIDX_DLL IEntry : public libsupermesh::Tools::IObject - { - public: - virtual id_type getIdentifier() const = 0; - virtual void getShape(IShape** out) const = 0; - virtual ~IEntry() {} - }; // IEntry - - class SIDX_DLL INode : public IEntry, public libsupermesh::Tools::ISerializable - { - public: - virtual uint32_t getChildrenCount() const = 0; - virtual id_type getChildIdentifier(uint32_t index) const = 0; - virtual void getChildData(uint32_t index, uint32_t& len, byte** data) const = 0; - virtual void getChildShape(uint32_t index, IShape** out) const = 0; - virtual uint32_t getLevel() const = 0; - virtual bool isIndex() const = 0; - virtual bool isLeaf() const = 0; - virtual ~INode() {} - }; // INode - - class SIDX_DLL IData : public IEntry - { - public: - virtual void getData(uint32_t& len, byte** data) const = 0; - virtual ~IData() {} - }; // IData - - class SIDX_DLL IDataStream : public libsupermesh::Tools::IObjectStream - { - public: - virtual IData* getNext() = 0; - virtual ~IDataStream() {} - }; // IDataStream - - class SIDX_DLL ICommand - { - public: - virtual void execute(const INode& in) = 0; - virtual ~ICommand() {} - }; // ICommand - - class SIDX_DLL INearestNeighborComparator - { - public: - virtual double getMinimumDistance(const IShape& query, const IShape& entry) = 0; - virtual double getMinimumDistance(const IShape& query, const IData& data) = 0; - virtual ~INearestNeighborComparator() {} - }; // INearestNeighborComparator - - class SIDX_DLL IStorageManager - { - public: - virtual void loadByteArray(const id_type id, uint32_t& len, byte** data) = 0; - virtual void storeByteArray(id_type& id, const uint32_t len, const byte* const data) = 0; - virtual void deleteByteArray(const id_type id) = 0; - virtual void flush() = 0; - virtual ~IStorageManager() {} - }; // IStorageManager - - class SIDX_DLL IVisitor - { - public: - virtual void visitNode(const INode& in) = 0; - virtual void visitData(const IData& in) = 0; - virtual void visitData(std::vector& v) = 0; - virtual ~IVisitor() {} - }; // IVisitor - - class SIDX_DLL IQueryStrategy - { - public: - virtual void getNextEntry(const IEntry& previouslyFetched, id_type& nextEntryToFetch, bool& bFetchNextEntry) = 0; - virtual ~IQueryStrategy() {} - }; // IQueryStrategy - - class SIDX_DLL IStatistics - { - public: - virtual uint64_t getReads() const = 0; - virtual uint64_t getWrites() const = 0; - virtual uint32_t getNumberOfNodes() const = 0; - virtual uint64_t getNumberOfData() const = 0; - virtual ~IStatistics() {} - }; // IStatistics - - class SIDX_DLL ISpatialIndex - { - public: - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type shapeIdentifier) = 0; - virtual bool deleteData(const IShape& shape, id_type shapeIdentifier) = 0; - virtual void containsWhatQuery(const IShape& query, IVisitor& v) = 0; - virtual void intersectsWithQuery(const IShape& query, IVisitor& v) = 0; - virtual void pointLocationQuery(const Point& query, IVisitor& v) = 0; - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator& nnc) = 0; - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) = 0; - virtual void selfJoinQuery(const IShape& s, IVisitor& v) = 0; - virtual void queryStrategy(IQueryStrategy& qs) = 0; - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const = 0; - virtual void addCommand(ICommand* in, CommandType ct) = 0; - virtual bool isIndexValid() = 0; - virtual void getStatistics(IStatistics** out) const = 0; - virtual ~ISpatialIndex() {} - - }; // ISpatialIndex - - namespace StorageManager - { - SIDX_DLL enum StorageManagerConstants - { - EmptyPage = -0x1, - NewPage = -0x1 - }; - - class SIDX_DLL IBuffer : public IStorageManager - { - public: - virtual uint64_t getHits() = 0; - virtual void clear() = 0; - virtual ~IBuffer() {} - }; // IBuffer - - SIDX_DLL IStorageManager* returnMemoryStorageManager(libsupermesh::Tools::PropertySet& in); - SIDX_DLL IStorageManager* createNewMemoryStorageManager(); - - SIDX_DLL IStorageManager* returnDiskStorageManager(libsupermesh::Tools::PropertySet& in); - SIDX_DLL IStorageManager* createNewDiskStorageManager(std::string& baseName, uint32_t pageSize); - SIDX_DLL IStorageManager* loadDiskStorageManager(std::string& baseName); - - SIDX_DLL IBuffer* returnRandomEvictionsBuffer(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL IBuffer* createNewRandomEvictionsBuffer(IStorageManager& in, uint32_t capacity, bool bWriteThrough); - } - - // - // Global functions - // - SIDX_DLL std::ostream& operator<<(std::ostream&, const ISpatialIndex&); - SIDX_DLL std::ostream& operator<<(std::ostream&, const IStatistics&); -} } - -#include "Point.h" -#include "Region.h" -#include "LineSegment.h" -#include "TimePoint.h" -#include "TimeRegion.h" -#include "MovingPoint.h" -#include "MovingRegion.h" -#include "RTree.h" -#include "MVRTree.h" -#include "TPRTree.h" -#include "Version.h" - - -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer RegionPtr; -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer PointPtr; -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer TimeRegionPtr; -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer MovingRegionPtr; diff --git a/spatialindex-1.8.5/include/spatialindex/TPRTree.h b/spatialindex-1.8.5/include/spatialindex/TPRTree.h deleted file mode 100644 index 7b43f00..0000000 --- a/spatialindex-1.8.5/include/spatialindex/TPRTree.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - SIDX_DLL enum TPRTreeVariant - { - TPRV_RSTAR = 0x2 - }; - - SIDX_DLL enum PersistenObjectIdentifier - { - PersistentIndex = 0x1, - PersistentLeaf = 0x2 - }; - - SIDX_DLL enum RangeQueryType - { - ContainmentQuery = 0x1, - IntersectionQuery = 0x2 - }; - - class SIDX_DLL Data : public IData, public libsupermesh::Tools::ISerializable - { - public: - Data(uint32_t len, byte* pData, MovingRegion& r, id_type id); - virtual ~Data(); - - virtual Data* clone(); - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - virtual void getData(uint32_t& len, byte** data) const; - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - id_type m_id; - MovingRegion m_region; - byte* m_pData; - uint32_t m_dataLength; - }; // Data - - SIDX_DLL ISpatialIndex* returnTPRTree(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL ISpatialIndex* createNewTPRTree( - IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - TPRTreeVariant rv, - double horizon, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* loadTPRTree(IStorageManager& in, id_type indexIdentifier); - } -} } diff --git a/spatialindex-1.8.5/include/spatialindex/TimePoint.h b/spatialindex-1.8.5/include/spatialindex/TimePoint.h deleted file mode 100644 index 700c457..0000000 --- a/spatialindex-1.8.5/include/spatialindex/TimePoint.h +++ /dev/null @@ -1,100 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL TimePoint : public Point, public ITimeShape - { - public: - TimePoint(); - TimePoint(const double* pCoords, const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - TimePoint(const double* pCoords, double tStart, double tEnd, uint32_t dimension); - TimePoint(const Point& p, const libsupermesh::Tools::IInterval& ti); - TimePoint(const Point& p, double tStart, double tEnd); - TimePoint(const TimePoint& p); - virtual ~TimePoint(); - - virtual TimePoint& operator=(const TimePoint& p); - virtual bool operator==(const TimePoint& p) const; - - // - // IObject interface - // - virtual TimePoint* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // ITimeShape interface - // - virtual bool intersectsShapeInTime(const ITimeShape& in) const; - virtual bool intersectsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool containsShapeInTime(const ITimeShape& in) const; - virtual bool containsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool touchesShapeInTime(const ITimeShape& in) const; - virtual bool touchesShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual double getAreaInTime() const; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const; - - // - // IInterval interface - // - virtual libsupermesh::Tools::IInterval& operator=(const libsupermesh::Tools::IInterval&); - virtual double getLowerBound() const; - virtual double getUpperBound() const; - virtual void setBounds(double, double); - virtual bool intersectsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual bool intersectsInterval(libsupermesh::Tools::IntervalType t, const double start, const double end) const; - virtual bool containsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual libsupermesh::Tools::IntervalType getIntervalType() const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - double m_startTime; - double m_endTime; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimePoint& pt); - }; // TimePoint - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimePoint& pt); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/TimeRegion.h b/spatialindex-1.8.5/include/spatialindex/TimeRegion.h deleted file mode 100644 index 5681b91..0000000 --- a/spatialindex-1.8.5/include/spatialindex/TimeRegion.h +++ /dev/null @@ -1,114 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL TimeRegion : public Region, public ITimeShape - { - public: - TimeRegion(); - TimeRegion(const double* pLow, const double* pHigh, const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - TimeRegion(const double* pLow, const double* pHigh, double tStart, double tEnd, uint32_t dimension); - TimeRegion(const Point& low, const Point& high, const libsupermesh::Tools::IInterval& ti); - TimeRegion(const Point& low, const Point& high, double tStart, double tEnd); - TimeRegion(const Region& in, const libsupermesh::Tools::IInterval& ti); - TimeRegion(const Region& in, double tStart, double tEnd); - TimeRegion(const TimePoint& low, const TimePoint& high); - TimeRegion(const TimeRegion& in); - virtual ~TimeRegion(); - - virtual TimeRegion& operator=(const TimeRegion& r); - virtual bool operator==(const TimeRegion&) const; - - virtual bool intersectsRegionInTime(const TimeRegion& in) const; - virtual bool containsRegionInTime(const TimeRegion& in) const; - virtual bool touchesRegionInTime(const TimeRegion& in) const; - - virtual bool containsPointInTime(const TimePoint& in) const; - virtual bool touchesPointInTime(const TimePoint& in) const; - - virtual void combineRegionInTime(const TimeRegion& in); - virtual void getCombinedRegionInTime(TimeRegion& out, const TimeRegion& in) const; - - // - // IObject interface - // - virtual TimeRegion* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // ITimeShape interface - // - virtual bool intersectsShapeInTime(const ITimeShape& in) const; - virtual bool intersectsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool containsShapeInTime(const ITimeShape& in) const; - virtual bool containsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool touchesShapeInTime(const ITimeShape& in) const; - virtual bool touchesShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual double getAreaInTime() const; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const; - - // - // IInterval interface - // - virtual libsupermesh::Tools::IInterval& operator=(const libsupermesh::Tools::IInterval&); - virtual double getLowerBound() const; - virtual double getUpperBound() const; - virtual void setBounds(double, double); - virtual bool intersectsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual bool intersectsInterval(libsupermesh::Tools::IntervalType t, const double start, const double end) const; - virtual bool containsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual libsupermesh::Tools::IntervalType getIntervalType() const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - double m_startTime; - double m_endTime; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimeRegion& r); - }; // TimeRegion - - typedef libsupermesh::Tools::PoolPointer TimeRegionPtr; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimeRegion& r); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/Version.h b/spatialindex-1.8.5/include/spatialindex/Version.h deleted file mode 100644 index b937e65..0000000 --- a/spatialindex-1.8.5/include/spatialindex/Version.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#pragma once - -#ifndef SIDX_VERSION_MAJOR -#define SIDX_VERSION_MAJOR 1 -#define SIDX_VERSION_MINOR 8 -#define SIDX_VERSION_REV 5 -#define SIDX_VERSION_BUILD 0 -#endif - -#ifndef SIDX_VERSION_NUM -#define SIDX_VERSION_NUM (SIDX_VERSION_MAJOR*1000+SIDX_VERSION_MINOR*100+SIDX_VERSION_REV*10+SIDX_VERSION_BUILD) -#endif - -#ifndef SIDX_RELEASE_DATE -#define SIDX_RELEASE_DATE 20141101 -#endif - -#ifndef SIDX_RELEASE_NAME -#define SIDX_RELEASE_NAME "1.8.5" -#endif - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h b/spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h deleted file mode 100644 index 34589d4..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the bounds query. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL BoundsQuery : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - libsupermesh::SpatialIndex::Region* m_bounds; - -public: - - BoundsQuery(); - ~BoundsQuery() { if (m_bounds != 0) delete m_bounds; } - void getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type& nextEntry, - bool& hasNext); - - libsupermesh::SpatialIndex::Region* GetBounds() const { return m_bounds; } -}; - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h b/spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h deleted file mode 100644 index 4866dc9..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the count visitor. - * Author: Leonard NorrgÄrd, leonard.norrgard@refactor.fi - ****************************************************************************** - * Copyright (c) 2010, Leonard NorrgÄrd - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL CountVisitor : public libsupermesh::SpatialIndex::IVisitor -{ -private: - uint64_t nResults; - -public: - - CountVisitor(); - ~CountVisitor(); - - uint64_t GetResultCount() const { return nResults; } - - void visitNode(const libsupermesh::SpatialIndex::INode& n); - void visitData(const libsupermesh::SpatialIndex::IData& d); - void visitData(std::vector& v); -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h b/spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h deleted file mode 100644 index ebf174f..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h +++ /dev/null @@ -1,89 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the custom storage manager. - * Author: Matthias (nitro), nitro@dr-code.org - ****************************************************************************** - * Copyright (c) 2010, Matthias (nitro) - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - struct SIDX_DLL CustomStorageManagerCallbacks - { - CustomStorageManagerCallbacks() - : context(0) - , createCallback(0) - , destroyCallback(0) - , loadByteArrayCallback(0) - , storeByteArrayCallback(0) - , deleteByteArrayCallback(0) - {} - - void* context; - void (*createCallback)( const void* context, int* errorCode ); - void (*destroyCallback)( const void* context, int* errorCode ); - void (*flushCallback)( const void* context, int* errorCode ); - void (*loadByteArrayCallback)( const void* context, const id_type page, uint32_t* len, byte** data, int* errorCode ); - void (*storeByteArrayCallback)( const void* context, id_type* page, const uint32_t len, const byte* const data, int* errorCode ); - void (*deleteByteArrayCallback)( const void* context, const id_type page, int* errorCode ); - }; - - class SIDX_DLL CustomStorageManager : public libsupermesh::SpatialIndex::IStorageManager - { - public: - // I'd like this to be an enum, but casting between enums and ints is not nice - static const int NoError = 0; - static const int InvalidPageError = 1; - static const int IllegalStateError = 2; - - CustomStorageManager(libsupermesh::Tools::PropertySet&); - - virtual ~CustomStorageManager(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - private: - CustomStorageManagerCallbacks callbacks; - - inline void processErrorCode(int errorCode, const id_type page); - }; // CustomStorageManager - - // factory function - IStorageManager* returnCustomStorageManager(libsupermesh::Tools::PropertySet& in); - } -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/DataStream.h b/spatialindex-1.8.5/include/spatialindex/capi/DataStream.h deleted file mode 100644 index f6a0e5b..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/DataStream.h +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: Declarations to support stream loading via C API - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL DataStream : public libsupermesh::SpatialIndex::IDataStream -{ -public: - DataStream(int (*readNext)(libsupermesh::SpatialIndex::id_type* id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength)); - ~DataStream(); - - libsupermesh::SpatialIndex::IData* getNext(); - bool hasNext(); - - uint32_t size(); - void rewind(); - -protected: - libsupermesh::SpatialIndex::RTree::Data* m_pNext; - libsupermesh::SpatialIndex::id_type m_id; - -private: - int (*iterfunct)(libsupermesh::SpatialIndex::id_type *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength); - - bool readData(); - bool m_bDoneReading; - -}; - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/Error.h b/spatialindex-1.8.5/include/spatialindex/capi/Error.h deleted file mode 100644 index e8cc647..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/Error.h +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the error object. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL Error -{ -public: - - Error(int code, std::string const& message, std::string const& method); - - /// Copy constructor. - Error(Error const& other); - - /// Assignment operator. - Error& operator=(Error const& rhs); - - int GetCode() const { return m_code; } - const char* GetMessage() const { return m_message.c_str(); } - const char* GetMethod() const { return m_method.c_str(); } - -private: - - int m_code; - std::string m_message; - std::string m_method; -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h b/spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h deleted file mode 100644 index 40ea89a..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement a query ids only. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL IdVisitor : public libsupermesh::SpatialIndex::IVisitor -{ -private: - std::vector m_vector; - uint64_t nResults; - -public: - - IdVisitor(); - ~IdVisitor(); - - uint64_t GetResultCount() const { return nResults; } - std::vector& GetResults() { return m_vector; } - - void visitNode(const libsupermesh::SpatialIndex::INode& n); - void visitData(const libsupermesh::SpatialIndex::IData& d); - void visitData(std::vector& v); -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/Index.h b/spatialindex-1.8.5/include/spatialindex/capi/Index.h deleted file mode 100644 index 28ea1fe..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/Index.h +++ /dev/null @@ -1,86 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the wrapper. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL Index -{ - -public: - Index(const libsupermesh::Tools::PropertySet& poProperties); - Index(const libsupermesh::Tools::PropertySet& poProperties, int (*readNext)(libsupermesh::SpatialIndex::id_type *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength)); - ~Index(); - - const libsupermesh::Tools::PropertySet GetProperties() { index().getIndexProperties(m_properties); return m_properties;} - - bool insertFeature(uint64_t id, double *min, double *max); - - RTIndexType GetIndexType(); - void SetIndexType(RTIndexType v); - - RTStorageType GetIndexStorage(); - void SetIndexStorage(RTStorageType v); - - RTIndexVariant GetIndexVariant(); - void SetIndexVariant(RTStorageType v); - - int64_t GetResultSetOffset(); - void SetResultSetOffset(int64_t v); - - int64_t GetResultSetLimit(); - void SetResultSetLimit(int64_t v); - - void flush(); - - libsupermesh::SpatialIndex::ISpatialIndex& index() {return *m_rtree;} - libsupermesh::SpatialIndex::StorageManager::IBuffer& buffer() {return *m_buffer;} - -private: - - Index& operator=(const Index&); - Index(); - - void Initialize(); - libsupermesh::SpatialIndex::IStorageManager* m_storage; - libsupermesh::SpatialIndex::StorageManager::IBuffer* m_buffer; - libsupermesh::SpatialIndex::ISpatialIndex* m_rtree; - - libsupermesh::Tools::PropertySet m_properties; - - void Setup(); - libsupermesh::SpatialIndex::IStorageManager* CreateStorage(); - libsupermesh::SpatialIndex::StorageManager::IBuffer* CreateIndexBuffer(libsupermesh::SpatialIndex::IStorageManager& storage); - libsupermesh::SpatialIndex::ISpatialIndex* CreateIndex(); -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h b/spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h deleted file mode 100644 index b7ee8ab..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h +++ /dev/null @@ -1,78 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement a query of the index's leaves. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class LeafQueryResult; - -class SIDX_DLL LeafQuery : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - std::queue m_ids; - std::vector m_results; -public: - - LeafQuery(); - ~LeafQuery() { } - void getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type& nextEntry, - bool& hasNext); - std::vector const& GetResults() const {return m_results;} -}; - -class SIDX_DLL LeafQueryResult -{ -private: - std::vector ids; - libsupermesh::SpatialIndex::Region* bounds; - libsupermesh::SpatialIndex::id_type m_id; - LeafQueryResult(); -public: - LeafQueryResult(libsupermesh::SpatialIndex::id_type id) : bounds(0), m_id(id){} - ~LeafQueryResult() {if (bounds!=0) delete bounds;} - - /// Copy constructor. - LeafQueryResult(LeafQueryResult const& other); - - /// Assignment operator. - LeafQueryResult& operator=(LeafQueryResult const& rhs); - - std::vector const& GetIDs() const; - void SetIDs(std::vector& v); - const libsupermesh::SpatialIndex::Region* GetBounds() const; - void SetBounds(const libsupermesh::SpatialIndex::Region* b); - libsupermesh::SpatialIndex::id_type getIdentifier() const {return m_id;} - void setIdentifier(uint32_t v) {m_id = v;} -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h b/spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h deleted file mode 100644 index f654cd1..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h +++ /dev/null @@ -1,56 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the object visitor. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL ObjVisitor : public libsupermesh::SpatialIndex::IVisitor -{ -private: - std::vector m_vector; - uint64_t nResults; - -public: - - ObjVisitor(); - ~ObjVisitor(); - - uint64_t GetResultCount() const { return nResults; } - std::vector& GetResults() { return m_vector; } - - void visitNode(const libsupermesh::SpatialIndex::INode& n); - void visitData(const libsupermesh::SpatialIndex::IData& d); - void visitData(std::vector& v); -}; - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/Utility.h b/spatialindex-1.8.5/include/spatialindex/capi/Utility.h deleted file mode 100644 index 1388d59..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/Utility.h +++ /dev/null @@ -1,43 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include "ObjVisitor.h" -#include "IdVisitor.h" -#include "sidx_export.h" - -#pragma once - -SIDX_DLL libsupermesh::Tools::PropertySet* GetDefaults(); - -SIDX_DLL void Page_ResultSet_Ids(IdVisitor& visitor, int64_t** ids, int64_t nStart, int64_t nResultLimit, uint64_t* nResults); -SIDX_DLL void Page_ResultSet_Obj(ObjVisitor& visitor, IndexItemH** items, int64_t nStart, int64_t nResultLimit, uint64_t* nResults); diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h deleted file mode 100644 index a912a9e..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h +++ /dev/null @@ -1,366 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C API. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#ifndef SIDX_API_H_INCLUDED -#define SIDX_API_H_INCLUDED - -#define SIDX_C_API 1 - -#include "sidx_config.h" - -IDX_C_START - -SIDX_DLL IndexH Index_Create(IndexPropertyH properties); - -SIDX_DLL IndexH Index_CreateWithStream( IndexPropertyH properties, - int (*readNext)(int64_t *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, size_t *nDataLength) - ); - -SIDX_DLL void Index_Destroy(IndexH index); -SIDX_DLL IndexPropertyH Index_GetProperties(IndexH index); - -SIDX_DLL RTError Index_DeleteData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension); - -SIDX_C_DLL RTError Index_DeleteTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension - ); - -SIDX_C_DLL RTError Index_DeleteMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension - ); - -SIDX_DLL RTError Index_InsertData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension, - const uint8_t* pData, - size_t nDataLength); - -SIDX_C_DLL RTError Index_InsertTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - size_t nDataLength); - -SIDX_C_DLL RTError Index_InsertMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - size_t nDataLength); - -SIDX_DLL uint32_t Index_IsValid(IndexH index); - -SIDX_C_DLL RTError Index_TPIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_DLL RTError Index_Intersects_obj( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_DLL RTError Index_Intersects_id( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults); - -SIDX_DLL RTError Index_Intersects_count( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_DLL RTError Index_NearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_DLL RTError Index_NearestNeighbors_id( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** items, - uint64_t* nResults); - -SIDX_DLL RTError Index_GetBounds( IndexH index, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension); - - -SIDX_C_DLL RTError Index_GetLeaves( IndexH index, - uint32_t* nLeafNodes, - uint32_t** nLeafSizes, - int64_t** nLeafIDs, - int64_t*** nLeafChildIDs, - double*** pppdMin, - double*** pppdMax, - uint32_t* nDimension); - -SIDX_DLL RTError Index_SetResultSetOffset(IndexH index, int64_t value); -SIDX_DLL int64_t Index_GetResultSetOffset(IndexH index); - -SIDX_DLL RTError Index_SetResultSetLimit(IndexH index, int64_t value); -SIDX_DLL int64_t Index_GetResultSetLimit(IndexH index); - -SIDX_DLL void Index_DestroyObjResults(IndexItemH* results, uint32_t nResults); -SIDX_DLL void Index_ClearBuffer(IndexH index); -SIDX_DLL void Index_Free(void* object); -SIDX_DLL void Index_Flush(IndexH index); - -SIDX_DLL void IndexItem_Destroy(IndexItemH item); -SIDX_DLL int64_t IndexItem_GetID(IndexItemH item); - -SIDX_DLL RTError IndexItem_GetData(IndexItemH item, uint8_t** data, uint64_t* length); - -SIDX_DLL RTError IndexItem_GetBounds( IndexItemH item, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension); - -SIDX_DLL IndexPropertyH IndexProperty_Create(); -SIDX_DLL void IndexProperty_Destroy(IndexPropertyH hProp); - -SIDX_DLL RTError IndexProperty_SetIndexType(IndexPropertyH iprop, RTIndexType value); -SIDX_DLL RTIndexType IndexProperty_GetIndexType(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetDimension(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetDimension(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexVariant(IndexPropertyH iprop, RTIndexVariant value); -SIDX_DLL RTIndexVariant IndexProperty_GetIndexVariant(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexStorage(IndexPropertyH iprop, RTStorageType value); -SIDX_DLL RTStorageType IndexProperty_GetIndexStorage(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetPagesize(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetPagesize(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetIndexCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetLeafCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetLeafCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetLeafPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetLeafPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetIndexPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetRegionPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetRegionPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetPointPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetPointPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetBufferingCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetBufferingCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetEnsureTightMBRs(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetEnsureTightMBRs(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetOverwrite(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetOverwrite(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetNearMinimumOverlapFactor(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetNearMinimumOverlapFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetWriteThrough(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetWriteThrough(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFillFactor(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetFillFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetSplitDistributionFactor(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetSplitDistributionFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetTPRHorizon(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetTPRHorizon(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetReinsertFactor(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetReinsertFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFileName(IndexPropertyH iprop, const char* value); -SIDX_DLL char* IndexProperty_GetFileName(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFileNameExtensionDat(IndexPropertyH iprop, const char* value); -SIDX_DLL char* IndexProperty_GetFileNameExtensionDat(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFileNameExtensionIdx(IndexPropertyH iprop, const char* value); -SIDX_DLL char* IndexProperty_GetFileNameExtensionIdx(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetCustomStorageCallbacksSize(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetCustomStorageCallbacksSize(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetCustomStorageCallbacks(IndexPropertyH iprop, const void* value); -SIDX_DLL void* IndexProperty_GetCustomStorageCallbacks(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexID(IndexPropertyH iprop, int64_t value); -SIDX_DLL int64_t IndexProperty_GetIndexID(IndexPropertyH iprop); - -SIDX_C_DLL void* SIDX_NewBuffer(size_t bytes); -SIDX_C_DLL void SIDX_DeleteBuffer(void* buffer); - -SIDX_DLL RTError IndexProperty_SetResultSetLimit(IndexPropertyH iprop, uint64_t value); -SIDX_DLL uint64_t IndexProperty_GetResultSetLimit(IndexPropertyH iprop); - -SIDX_C_DLL char* SIDX_Version(); - -SIDX_C_DLL char* Error_GetLastErrorMsg(void); - -IDX_C_END - -#endif diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h deleted file mode 100644 index e082ab1..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C API configuration - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#ifndef SIDX_CONFIG_H_INCLUDED -#define SIDX_CONFIG_H_INCLUDED - - - -#ifdef _MSC_VER - -#if _MSC_VER <= 1500 - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; -#endif - - #include - #define STRDUP _strdup - #include - #include - -#else - - #include - #define SIDX_THREAD __thread - #include - #define STRDUP strdup -#endif - -#include - -#include "sidx_export.h" - -class Item; -class Index; - -typedef enum -{ - RT_None = 0, - RT_Debug = 1, - RT_Warning = 2, - RT_Failure = 3, - RT_Fatal = 4 -} RTError; - -typedef enum -{ - RT_RTree = 0, - RT_MVRTree = 1, - RT_TPRTree = 2, - RT_InvalidIndexType = -99 -} RTIndexType; - -typedef enum -{ - RT_Memory = 0, - RT_Disk = 1, - RT_Custom = 2, - RT_InvalidStorageType = -99 -} RTStorageType; - -typedef enum -{ - RT_Linear = 0, - RT_Quadratic = 1, - RT_Star = 2, - RT_InvalidIndexVariant = -99 -} RTIndexVariant; - - -#ifdef __cplusplus -# define IDX_C_START extern "C" { -# define IDX_C_END } -#else -# define IDX_C_START -# define IDX_C_END -#endif - -typedef Index *IndexH; -typedef libsupermesh::SpatialIndex::IData *IndexItemH; -typedef libsupermesh::Tools::PropertySet *IndexPropertyH; - - - -#endif diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h deleted file mode 100644 index b6c84f1..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h +++ /dev/null @@ -1,44 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2014, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#pragma once - -#ifndef SIDX_C_DLL -#if defined(_MSC_VER) -# define SIDX_C_DLL __declspec(dllexport) -# define SIDX_DLL __declspec(dllexport) -#else -# if defined(USE_GCC_VISIBILITY_FLAG) -# define SIDX_C_DLL __attribute__ ((visibility("default"))) -# define SIDX_DLL __attribute__ ((visibility("default"))) -# else -# define SIDX_C_DLL -# define SIDX_DLL -# endif -#endif -#endif diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h deleted file mode 100644 index a52c565..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include -#include -#include -#include - -#include "sidx_config.h" -#include "Utility.h" -#include "ObjVisitor.h" -#include "IdVisitor.h" -#include "CountVisitor.h" -#include "BoundsQuery.h" -#include "LeafQuery.h" -#include "Error.h" -#include "DataStream.h" -#include "Index.h" -#include "CustomStorage.h" diff --git a/spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h b/spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h deleted file mode 100644 index 71726b2..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h +++ /dev/null @@ -1,128 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "PoolPointer.h" - -namespace libsupermesh { namespace Tools -{ - template class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - X* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - X* p = 0; - - if (! m_pool.empty()) - { - p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - m_hits++; - #endif - } - else - { - p = new X(); - #ifndef NDEBUG - m_pointerCount++; - m_misses++; - #endif - } - - return PoolPointer(p, this); - } - - void release(X* p) - { - if (m_pool.size() < m_capacity) - { - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - private: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h b/spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h deleted file mode 100644 index 20e693e..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h +++ /dev/null @@ -1,107 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "PointerPool.h" - -namespace libsupermesh { namespace Tools -{ - template class PointerPool; - - template class PoolPointer - { - public: - explicit PoolPointer(X* p = 0) : m_pointer(p), m_pPool(0) { m_prev = m_next = this; } - explicit PoolPointer(X* p, PointerPool* pPool) throw() : m_pointer(p), m_pPool(pPool) { m_prev = m_next = this; } - ~PoolPointer() { release(); } - PoolPointer(const PoolPointer& p) throw() { acquire(p); } - PoolPointer& operator=(const PoolPointer& p) - { - if (this != &p) - { - release(); - acquire(p); - } - return *this; - } - - X& operator*() const throw() { return *m_pointer; } - X* operator->() const throw() { return m_pointer; } - X* get() const throw() { return m_pointer; } - bool unique() const throw() { return m_prev ? m_prev == this : true; } - void relinquish() throw() - { - m_pPool = 0; - m_pointer = 0; - release(); - } - - private: - X* m_pointer; - mutable const PoolPointer* m_prev; - mutable const PoolPointer* m_next; - PointerPool* m_pPool; - - void acquire(const PoolPointer& p) throw() - { - m_pPool = p.m_pPool; - m_pointer = p.m_pointer; - m_next = p.m_next; - m_next->m_prev = this; - m_prev = &p; - #ifndef mutable - p.m_next = this; - #else - (const_cast*>(&p))->m_next = this; - #endif - } - - void release() - { - if (unique()) - { - if (m_pPool != 0) m_pPool->release(m_pointer); - else delete m_pointer; - } - else - { - m_prev->m_next = m_next; - m_next->m_prev = m_prev; - m_prev = m_next = 0; - } - m_pointer = 0; - m_pPool = 0; - } - }; -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h b/spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h deleted file mode 100644 index 3e37d89..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h +++ /dev/null @@ -1,89 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace Tools -{ - template class SmartPointer - { - public: - explicit SmartPointer(X* p = 0) throw() : m_pointer(p) { m_prev = m_next = this; } - ~SmartPointer() { release(); } - SmartPointer(const SmartPointer& p) throw() { acquire(p); } - SmartPointer& operator=(const SmartPointer& p) - { - if (this != &p) - { - release(); - acquire(p); - } - return *this; - } - - X& operator*() const throw() { return *m_pointer; } - X* operator->() const throw() { return m_pointer; } - X* get() const throw() { return m_pointer; } - bool unique() const throw() { return m_prev ? m_prev == this : true; } - - private: - X* m_pointer; - mutable const SmartPointer* m_prev; - mutable const SmartPointer* m_next; - - void acquire(const SmartPointer& p) throw() - { - m_pointer = p.m_pointer; - m_next = p.m_next; - m_next->m_prev = this; - m_prev = &p; - #ifndef mutable - p.m_next = this; - #else - (const_cast*>(&p))->m_next = this; - #endif - } - - void release() - { - if (unique()) delete m_pointer; - else - { - m_prev->m_next = m_next; - m_next->m_prev = m_prev; - m_prev = m_next = 0; - } - m_pointer = 0; - } - }; -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/tools/Tools.h b/spatialindex-1.8.5/include/spatialindex/tools/Tools.h deleted file mode 100644 index 98a4917..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/Tools.h +++ /dev/null @@ -1,512 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - - -#if (defined _WIN32 || defined _WIN64 || defined WIN32 || defined WIN64) && !defined __GNUC__ - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; - -// Nuke this annoying warning. See http://www.unknownroad.com/rtfm/VisualStudio/warningC4251.html -#pragma warning( disable: 4251 ) - -#else - #include -#endif - -#if (defined _WIN32 || defined _WIN64 || defined WIN32 || defined WIN64) && !defined __GNUC__ - #ifdef SPATIALINDEX_CREATE_DLL - #define SIDX_DLL __declspec(dllexport) - #else - #define SIDX_DLL __declspec(dllimport) - #endif -#else - #define SIDX_DLL -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if HAVE_PTHREAD_H - #include -#endif - -#include "SmartPointer.h" -#include "PointerPool.h" -#include "PoolPointer.h" - -typedef uint8_t byte; - -namespace libsupermesh { namespace Tools -{ - SIDX_DLL enum IntervalType - { - IT_RIGHTOPEN = 0x0, - IT_LEFTOPEN, - IT_OPEN, - IT_CLOSED - }; - - SIDX_DLL enum VariantType - { - VT_LONG = 0x0, - VT_BYTE, - VT_SHORT, - VT_FLOAT, - VT_DOUBLE, - VT_CHAR, - VT_USHORT, - VT_ULONG, - VT_INT, - VT_UINT, - VT_BOOL, - VT_PCHAR, - VT_PVOID, - VT_EMPTY, - VT_LONGLONG, - VT_ULONGLONG, - VT_PWCHAR - }; - - SIDX_DLL enum FileMode - { - APPEND = 0x0, - CREATE - }; - - // - // Exceptions - // - class SIDX_DLL Exception - { - public: - virtual std::string what() = 0; - virtual ~Exception() {} - }; - - class SIDX_DLL IndexOutOfBoundsException : public Exception - { - public: - IndexOutOfBoundsException(size_t i); - virtual ~IndexOutOfBoundsException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // IndexOutOfBoundsException - - class SIDX_DLL IllegalArgumentException : public Exception - { - public: - IllegalArgumentException(std::string s); - virtual ~IllegalArgumentException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // IllegalArgumentException - - class SIDX_DLL IllegalStateException : public Exception - { - public: - IllegalStateException(std::string s); - virtual ~IllegalStateException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // IllegalStateException - - class SIDX_DLL EndOfStreamException : public Exception - { - public: - EndOfStreamException(std::string s); - virtual ~EndOfStreamException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // EndOfStreamException - - class SIDX_DLL ResourceLockedException : public Exception - { - public: - ResourceLockedException(std::string s); - virtual ~ResourceLockedException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // ResourceLockedException - - class SIDX_DLL NotSupportedException : public Exception - { - public: - NotSupportedException(std::string s); - virtual ~NotSupportedException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // NotSupportedException - - // - // Interfaces - // - class SIDX_DLL IInterval - { - public: - virtual ~IInterval() {} - - virtual double getLowerBound() const = 0; - virtual double getUpperBound() const = 0; - virtual void setBounds(double, double) = 0; - virtual bool intersectsInterval(const IInterval&) const = 0; - virtual bool intersectsInterval(IntervalType type, const double start, const double end) const = 0; - virtual bool containsInterval(const IInterval&) const = 0; - virtual IntervalType getIntervalType() const = 0; - }; // IInterval - - class SIDX_DLL IObject - { - public: - virtual ~IObject() {} - - virtual IObject* clone() = 0; - // return a new object that is an exact copy of this one. - // IMPORTANT: do not return the this pointer! - }; // IObject - - class SIDX_DLL ISerializable - { - public: - virtual ~ISerializable() {} - - virtual uint32_t getByteArraySize() = 0; - // returns the size of the required byte array. - virtual void loadFromByteArray(const byte* data) = 0; - // load this object using the byte array. - virtual void storeToByteArray(byte** data, uint32_t& length) = 0; - // store this object in the byte array. - }; - - class SIDX_DLL IComparable - { - public: - virtual ~IComparable() {} - - virtual bool operator<(const IComparable& o) const = 0; - virtual bool operator>(const IComparable& o) const = 0; - virtual bool operator==(const IComparable& o) const = 0; - }; //IComparable - - class SIDX_DLL IObjectComparator - { - public: - virtual ~IObjectComparator() {} - - virtual int compare(IObject* o1, IObject* o2) = 0; - }; // IObjectComparator - - class SIDX_DLL IObjectStream - { - public: - virtual ~IObjectStream() {} - - virtual IObject* getNext() = 0; - // returns a pointer to the next entry in the - // stream or 0 at the end of the stream. - - virtual bool hasNext() = 0; - // returns true if there are more items in the stream. - - virtual uint32_t size() = 0; - // returns the total number of entries available in the stream. - - virtual void rewind() = 0; - // sets the stream pointer to the first entry, if possible. - }; // IObjectStream - - // - // Classes & Functions - // - - class SIDX_DLL Variant - { - public: - Variant(); - - VariantType m_varType; - - union - { - int16_t iVal; // VT_SHORT - int32_t lVal; // VT_LONG - int64_t llVal; // VT_LONGLONG - byte bVal; // VT_BYTE - float fltVal; // VT_FLOAT - double dblVal; // VT_DOUBLE - char cVal; // VT_CHAR - uint16_t uiVal; // VT_USHORT - uint32_t ulVal; // VT_ULONG - uint64_t ullVal; // VT_ULONGLONG - bool blVal; // VT_BOOL - char* pcVal; // VT_PCHAR - void* pvVal; // VT_PVOID - wchar_t* pwcVal; - } m_val; - }; // Variant - - class SIDX_DLL PropertySet; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const libsupermesh::Tools::PropertySet& p); - - class SIDX_DLL PropertySet : public ISerializable - { - public: - PropertySet(); - PropertySet(const byte* data); - virtual ~PropertySet(); - - Variant getProperty(std::string property) const; - void setProperty(std::string property, Variant const& v); - void removeProperty(std::string property); - - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - private: - std::map m_propertySet; -// #ifdef HAVE_PTHREAD_H -// pthread_rwlock_t m_rwLock; -// #else -// bool m_rwLock; -// #endif - friend SIDX_DLL std::ostream& libsupermesh::Tools::operator<<(std::ostream& os, const libsupermesh::Tools::PropertySet& p); - }; // PropertySet - - // does not support degenerate intervals. - class SIDX_DLL Interval : public IInterval - { - public: - Interval(); - Interval(IntervalType, double, double); - Interval(double, double); - Interval(const Interval&); - virtual ~Interval() {} - virtual IInterval& operator=(const IInterval&); - - virtual bool operator==(const Interval&) const; - virtual bool operator!=(const Interval&) const; - virtual double getLowerBound() const; - virtual double getUpperBound() const; - virtual void setBounds(double, double); - virtual bool intersectsInterval(const IInterval&) const; - virtual bool intersectsInterval(IntervalType type, const double start, const double end) const; - virtual bool containsInterval(const IInterval&) const; - virtual IntervalType getIntervalType() const; - - IntervalType m_type; - double m_low; - double m_high; - }; // Interval - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const libsupermesh::Tools::Interval& iv); - - class SIDX_DLL Random - { - public: - Random(); - Random(uint32_t seed, uint16_t xsubi0); - virtual ~Random(); - - int32_t nextUniformLong(); - // returns a uniformly distributed long. - uint32_t nextUniformUnsignedLong(); - // returns a uniformly distributed unsigned long. - int32_t nextUniformLong(int32_t low, int32_t high); - // returns a uniformly distributed long in the range [low, high). - uint32_t nextUniformUnsignedLong(uint32_t low, uint32_t high); - // returns a uniformly distributed unsigned long in the range [low, high). - int64_t nextUniformLongLong(); - // returns a uniformly distributed long long. - uint64_t nextUniformUnsignedLongLong(); - // returns a uniformly distributed unsigned long long. - int64_t nextUniformLongLong(int64_t low, int64_t high); - // returns a uniformly distributed unsigned long long in the range [low, high). - uint64_t nextUniformUnsignedLongLong(uint64_t low, uint64_t high); - // returns a uniformly distributed unsigned long long in the range [low, high). - int16_t nextUniformShort(); - // returns a uniformly distributed short. - uint16_t nextUniformUnsignedShort(); - // returns a uniformly distributed unsigned short. - double nextUniformDouble(); - // returns a uniformly distributed double in the range [0, 1). - double nextUniformDouble(double low, double high); - // returns a uniformly distributed double in the range [low, high). - - bool flipCoin(); - - private: - void initDrand(uint32_t seed, uint16_t xsubi0); - - uint16_t* m_pBuffer; - }; // Random - - #if HAVE_PTHREAD_H - class SIDX_DLL LockGuard - { - public: - LockGuard(pthread_mutex_t* pLock); - ~LockGuard(); - - private: - pthread_mutex_t* m_pLock; - }; // LockGuard - #endif - - class SIDX_DLL BufferedFile - { - public: - BufferedFile(uint32_t u32BufferSize = 16384); - virtual ~BufferedFile(); - - virtual void close(); - virtual bool eof(); - virtual void rewind() = 0; - virtual void seek(std::fstream::off_type offset) = 0; - - protected: - std::fstream m_file; - char* m_buffer; - uint32_t m_u32BufferSize; - bool m_bEOF; - }; - - class SIDX_DLL BufferedFileReader : public BufferedFile - { - public: - BufferedFileReader(); - BufferedFileReader(const std::string& sFileName, uint32_t u32BufferSize = 32768); - virtual ~BufferedFileReader(); - - virtual void open(const std::string& sFileName); - virtual void rewind(); - virtual void seek(std::fstream::off_type offset); - - virtual uint8_t readUInt8(); - virtual uint16_t readUInt16(); - virtual uint32_t readUInt32(); - virtual uint64_t readUInt64(); - virtual float readFloat(); - virtual double readDouble(); - virtual bool readBoolean(); - virtual std::string readString(); - virtual void readBytes(uint32_t u32Len, byte** pData); - }; - - class SIDX_DLL BufferedFileWriter : public BufferedFile - { - public: - BufferedFileWriter(); - BufferedFileWriter(const std::string& sFileName, FileMode mode = CREATE, uint32_t u32BufferSize = 32768); - virtual ~BufferedFileWriter(); - - virtual void open(const std::string& sFileName, FileMode mode = CREATE); - virtual void rewind(); - virtual void seek(std::fstream::off_type offset); - - virtual void write(uint8_t i); - virtual void write(uint16_t i); - virtual void write(uint32_t i); - virtual void write(uint64_t i); - virtual void write(float i); - virtual void write(double i); - virtual void write(bool b); - virtual void write(const std::string& s); - virtual void write(uint32_t u32Len, byte* pData); - }; - - class SIDX_DLL TemporaryFile - { - public: - TemporaryFile(); - virtual ~TemporaryFile(); - - void rewindForReading(); - void rewindForWriting(); - bool eof(); - std::string getFileName() const; - - uint8_t readUInt8(); - uint16_t readUInt16(); - uint32_t readUInt32(); - uint64_t readUInt64(); - float readFloat(); - double readDouble(); - std::string readString(); - void readBytes(uint32_t u32Len, byte** pData); - - void write(uint8_t i); - void write(uint16_t i); - void write(uint32_t i); - void write(uint64_t i); - void write(float i); - void write(double i); - void write(const std::string& s); - void write(uint32_t u32Len, byte* pData); - - private: - std::string m_sFile; - BufferedFile* m_pFile; - }; -} } diff --git a/spatialindex-1.8.5/include/spatialindex/tools/rand48.h b/spatialindex-1.8.5/include/spatialindex/tools/rand48.h deleted file mode 100644 index f9cf2bb..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/rand48.h +++ /dev/null @@ -1,85 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2011, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#pragma once - -/* Only define this stuff if we're not ANDROID */ -#ifndef ANDROID - -#ifndef HAVE_SRAND48 - -#if HAVE_FEATURES_H -#include -#ifndef __THROW -/* copy-pasted from sys/cdefs.h */ -/* GCC can always grok prototypes. For C++ programs we add throw() -to help it optimize the function calls. But this works only with -gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions -as non-throwing using a function attribute since programs can use -the -fexceptions options for C code as well. */ -# if !defined __cplusplus && __GNUC_PREREQ (3, 3) -# define __THROW __attribute__ ((__nothrow__)) -# define __NTH(fct) __attribute__ ((__nothrow__)) fct -# else -# if defined __cplusplus && __GNUC_PREREQ (2,8) -# define __THROW throw () -# define __NTH(fct) fct throw () -# else -# define __THROW -# define __NTH(fct) fct -# endif -# endif - -#endif -#else -# define __THROW -# define __NTH(fct) fct -#endif - -extern void srand48(long int seed) __THROW; - -extern unsigned short *seed48(unsigned short xseed[3]) __THROW; - -extern long nrand48(unsigned short xseed[3]) __THROW; - -extern long mrand48(void) __THROW; - -extern long lrand48(void) __THROW; - -extern void lcong48(unsigned short p[7]) __THROW; - -extern long jrand48(unsigned short xseed[3]) __THROW; - -extern double erand48(unsigned short xseed[3]) __THROW; - -extern double drand48(void) __THROW; - -#endif - -/* Only define this stuff if we're not ANDROID */ -#endif \ No newline at end of file diff --git a/spatialindex-1.8.5/install-sh b/spatialindex-1.8.5/install-sh deleted file mode 100755 index dd97db7..0000000 --- a/spatialindex-1.8.5/install-sh +++ /dev/null @@ -1,322 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2004-09-10.20 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= -dstarg= -no_target_directory= - -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -c) shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit 0;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; - - --version) echo "$0 $scriptversion"; exit 0;; - - *) # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - test -n "$dir_arg$dstarg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done - break;; - esac -done - -if test -z "$1"; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src ;; - esac - - if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi - else - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dstarg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dstarg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 - exit 1 - fi - dst=$dst/`basename "$src"` - fi - fi - - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - - # Make sure that the destination directory exists. - - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit - fi - pathcomp=$pathcomp/ - done - fi - - if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - - else - dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Copy the file name to the temp name. - $doit $cpprog "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - } - } - fi || { (exit 1); exit; } -done - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/ltmain.sh b/spatialindex-1.8.5/ltmain.sh deleted file mode 100644 index a356aca..0000000 --- a/spatialindex-1.8.5/ltmain.sh +++ /dev/null @@ -1,9661 +0,0 @@ - -# 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, 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. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --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 -# -# 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.4.2 Debian-2.4.2-1.7ubuntu1 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" -TIMESTAMP="" -package_revision=1.3337 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -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. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - 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"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -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: -# 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 () -{ - # 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 -} - -# 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 - - # 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: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# 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='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. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# 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: ${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: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - 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 () -{ - $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/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - 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'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# 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=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/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. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# 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 - - -# 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 - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --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" - ;; - --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: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # 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*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # 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 - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - 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 -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# 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. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - 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 "* | " $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. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - 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 "* | " $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. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </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 () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - 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 - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -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. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -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)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -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) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -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. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# 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... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - 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" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - 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. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - 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 "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 "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - 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= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # 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 - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - 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" && \ - func_fatal_help "you must specify an install program" - - 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" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - 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" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - 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 "$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 - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - 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 - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # 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 $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -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. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - 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 - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - 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 || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - 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 "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # 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 (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 /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_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 -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - 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 - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - 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 [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=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# 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 - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - 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 () -{ -" - 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 \"\$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'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - 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 - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - 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 "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - 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 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#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) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -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_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_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - 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); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - 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); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - 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) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -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 *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - 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) -{ - 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 */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_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 () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - 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]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # 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 "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # 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|--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|-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 "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # 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 "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - 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" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # 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*|@*|-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" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - 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. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - 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" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) - libs="$deplibs %DEPLIBS%" - test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" - ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.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 - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-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 - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - 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 "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - 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" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - 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 - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; 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="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - 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 - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - 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" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - 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 - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - 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" - 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 - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - 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 - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - 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 - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - 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 "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - # 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|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - 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= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - 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 "$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 - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) 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* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </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 | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$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 - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - 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 " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - 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 "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - 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 - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # 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 "$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 - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval "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 - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - 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" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # 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. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - 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 "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # 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 - 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 - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - 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\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - 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 - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - 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" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - 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..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - 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" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - 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 - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - 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 "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # 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 - 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 - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - 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 - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - 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 "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - 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 "$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 $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - 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 " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - 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. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - 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 - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - 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}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$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 - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$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" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) 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..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - 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" - 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" - ;; - -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" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - 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) - # 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 -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - 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 - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -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 \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/spatialindex-1.8.5/m4/libtool.m4 b/spatialindex-1.8.5/m4/libtool.m4 deleted file mode 100644 index d7c043f..0000000 --- a/spatialindex-1.8.5/m4/libtool.m4 +++ /dev/null @@ -1,7997 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 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 -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -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 -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -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]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -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 -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_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 -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_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' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# 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 "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$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)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -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 \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_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 -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -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) 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." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# 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. -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 - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -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)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _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], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(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)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -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 -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&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 - fi - 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 - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [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' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - 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 - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - 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}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _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 -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], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# 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], -[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 - # 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*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -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" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_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], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$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 - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*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*) - 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" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -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], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_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 - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&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 "$_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 - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - 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>&AS_MESSAGE_LOG_FD - $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 - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -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); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&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 "$_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 - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -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], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; 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 - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -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}' - ;; - 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 - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - 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 - - # 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;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_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], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -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], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -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 - -_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"]) -_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 - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -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 "$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" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_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:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&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:$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" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -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' - -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* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - 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, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -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 -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -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'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # 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};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if 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 - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 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 - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_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_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# 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], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_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 - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # 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. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - 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++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - 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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *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)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - 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' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_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 - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _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 - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - 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,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - 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,' - ;; - *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' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _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_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. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -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. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -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 -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -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") || (\$ 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*) - 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 - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - 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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - 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 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - 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(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/;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' - # 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 $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - 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 - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _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 | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - 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' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _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; 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 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$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~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - 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)='${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 $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _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 - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _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 - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _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' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _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 - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # 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") || (\$ 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 - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _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 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' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _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' - 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' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - 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*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - 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 - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _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 - ;; - - hpux9*) - if test "$GCC" = yes; then - _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 - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - 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_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - 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 $pic_flag ${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}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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 - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _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. - # 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" && 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' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _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(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" && 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" && 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' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - 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} $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" && 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 "-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' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _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 $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $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 -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _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' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _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' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_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 - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_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_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_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 -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_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_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## 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_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _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], -[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 -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_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_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_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 - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _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_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_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' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _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 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' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _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' - 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' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - 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) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - 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)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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 $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 - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _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 $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 $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _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' - ;; - irix5* | irix6*) - 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" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_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 $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 - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *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 | 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 | 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 | 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 | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _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' - ;; - esac - - _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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$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~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _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; 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='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _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=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - 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" && 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" && 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 "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`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" && 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 $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 - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - 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' - _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)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_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 $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 $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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -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 -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - 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(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - 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' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -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 -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# 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)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_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 - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _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. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - 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 - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _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_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)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_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_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_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 - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # 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_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - 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_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_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)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_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_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_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 - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # 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_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# 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=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ 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_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 -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_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= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -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], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_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 -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - 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 -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _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_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##*/}"]) - - _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}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _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"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _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"]) - - # 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 - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _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 - ;; - *-*-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 -]) -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/spatialindex-1.8.5/m4/ltoptions.m4 b/spatialindex-1.8.5/m4/ltoptions.m4 deleted file mode 100644 index 5d9acd8..0000000 --- a/spatialindex-1.8.5/m4/ltoptions.m4 +++ /dev/null @@ -1,384 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# 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 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])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# 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@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [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]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/spatialindex-1.8.5/m4/ltsugar.m4 b/spatialindex-1.8.5/m4/ltsugar.m4 deleted file mode 100644 index 9000a05..0000000 --- a/spatialindex-1.8.5/m4/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 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 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/spatialindex-1.8.5/m4/ltversion.m4 b/spatialindex-1.8.5/m4/ltversion.m4 deleted file mode 100644 index 07a8602..0000000 --- a/spatialindex-1.8.5/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 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. - -# @configure_input@ - -# serial 3337 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) - -AC_DEFUN([LTVERSION_VERSION], -[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/spatialindex-1.8.5/m4/lt~obsolete.m4 b/spatialindex-1.8.5/m4/lt~obsolete.m4 deleted file mode 100644 index c573da9..0000000 --- a/spatialindex-1.8.5/m4/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# 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 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# 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.) -# -# 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])]) diff --git a/spatialindex-1.8.5/missing b/spatialindex-1.8.5/missing deleted file mode 100644 index 64b5f90..0000000 --- a/spatialindex-1.8.5/missing +++ /dev/null @@ -1,353 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2004-09-07.08 - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 -# Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Send bug reports to ." - exit 0 - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit 0 - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). -case "$1" in - lex|yacc) - # Not GNU programs, they don't have --version. - ;; - - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/mkinstalldirs b/spatialindex-1.8.5/mkinstalldirs deleted file mode 100755 index 6fbe5e1..0000000 --- a/spatialindex-1.8.5/mkinstalldirs +++ /dev/null @@ -1,150 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2004-02-15.20 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit 0 - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj b/spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj deleted file mode 100755 index 42b100f..0000000 --- a/spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj +++ /dev/null @@ -1,960 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spatialindex-1.8.5/spatialindex.sln b/spatialindex-1.8.5/spatialindex.sln deleted file mode 100755 index c0f1d60..0000000 --- a/spatialindex-1.8.5/spatialindex.sln +++ /dev/null @@ -1,91 +0,0 @@ -ï»ż -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spatialindex-vc", "spatialindex-vc\spatialindex.vcproj", "{38FBBD59-8344-4D8E-B728-3D51763B6A70}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeBulkLoad", "regressiontest\rtree\RTreeBulkLoad.vcproj", "{7D9C8655-0155-4EE3-B04C-6D831E2982CE}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeGenerator", "regressiontest\rtree\RTreeGenerator.vcproj", "{03504DB7-ACF3-40CF-A8A7-310E80666DC0}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeLoad", "regressiontest\rtree\RTreeLoad.vcproj", "{551D683C-E5DC-4713-9D9F-F629D15BE5DA}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeQuery", "regressiontest\rtree\RTreeQuery.vcproj", "{1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeExhaustive", "regressiontest\rtree\RTreeExhaustive.vcproj", "{D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|Win32.ActiveCfg = Debug|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|Win32.Build.0 = Debug|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|x64.ActiveCfg = Debug|x64 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|x64.Build.0 = Debug|x64 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|Win32.ActiveCfg = Release|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|Win32.Build.0 = Release|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|x64.ActiveCfg = Release|x64 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|x64.Build.0 = Release|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|Win32.ActiveCfg = Debug|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|Win32.Build.0 = Debug|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|x64.ActiveCfg = Debug|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|x64.Build.0 = Debug|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|Win32.ActiveCfg = Release|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|Win32.Build.0 = Release|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|x64.ActiveCfg = Release|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|x64.Build.0 = Release|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|Win32.ActiveCfg = Debug|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|Win32.Build.0 = Debug|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|x64.ActiveCfg = Debug|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|x64.Build.0 = Debug|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|Win32.ActiveCfg = Release|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|Win32.Build.0 = Release|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|x64.ActiveCfg = Release|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|x64.Build.0 = Release|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|Win32.ActiveCfg = Debug|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|Win32.Build.0 = Debug|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|x64.ActiveCfg = Debug|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|x64.Build.0 = Debug|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|Win32.ActiveCfg = Release|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|Win32.Build.0 = Release|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|x64.ActiveCfg = Release|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|x64.Build.0 = Release|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|Win32.ActiveCfg = Debug|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|Win32.Build.0 = Debug|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|x64.ActiveCfg = Debug|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|x64.Build.0 = Debug|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|Win32.ActiveCfg = Release|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|Win32.Build.0 = Release|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|x64.ActiveCfg = Release|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|x64.Build.0 = Release|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|Win32.Build.0 = Debug|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|x64.ActiveCfg = Debug|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|x64.Build.0 = Debug|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|Win32.ActiveCfg = Release|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|Win32.Build.0 = Release|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|x64.ActiveCfg = Release|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/spatialindex-1.8.5/src/CMakeLists.txt b/spatialindex-1.8.5/src/CMakeLists.txt deleted file mode 100644 index 61e1691..0000000 --- a/spatialindex-1.8.5/src/CMakeLists.txt +++ /dev/null @@ -1,239 +0,0 @@ -############################################################################### -# -# src/CMakeLists.txt controls building of SIDX library -# -# Copyright (c) 2009 Mateusz Loskot -# -############################################################################### - -############################################################################### -# Source files specification -# -# Naming format: -# SIDX_CPP - all the .cpp files -# SIDX_HPP - all the .hpp files -# SIDX__CPP - all the .cpp files for the given subdir/namespace -# ... - -set(SIDX_HEADERS_DIR "${PROJECT_SOURCE_DIR}/include/spatialindex/") -set(SIDX_HEADERS_CAPI_DIR "${PROJECT_SOURCE_DIR}/include/spatialindex/capi") -set(SIDX_HPP "") -set(SIDX_CPP "") - -set(SIDX_SRC_DIR "${PROJECT_SOURCE_DIR}/src") -set(SIDX_CAPI_DIR "${PROJECT_SOURCE_DIR}/src/capi") - -# -# base -# -set(SIDX_BASE_HPP - "${SIDX_HEADERS_DIR}/LineSegment.h" - "${SIDX_HEADERS_DIR}/MovingPoint.h" - "${SIDX_HEADERS_DIR}/MVRTree.h" - "${SIDX_HEADERS_DIR}/Point.h" - "${SIDX_HEADERS_DIR}/Region.h" - "${SIDX_HEADERS_DIR}/RTree.h" - "${SIDX_HEADERS_DIR}/SpatialIndex.h" - "${SIDX_HEADERS_DIR}/TimePoint.h" - "${SIDX_HEADERS_DIR}/TimeRegion.h" - "${SIDX_HEADERS_DIR}/TPRTree.h" - "${SIDX_HEADERS_DIR}/Version.h" -) -list (APPEND SIDX_HPP ${SIDX_BASE_HPP} ) - -set(SIDX_CAPI_HPP - "${SIDX_HEADERS_CAPI_DIR}/BoundsQuery.h" - "${SIDX_HEADERS_CAPI_DIR}/CountVisitor.h" - "${SIDX_HEADERS_CAPI_DIR}/CustomStorage.h" - "${SIDX_HEADERS_CAPI_DIR}/DataStream.h" - "${SIDX_HEADERS_CAPI_DIR}/Error.h" - "${SIDX_HEADERS_CAPI_DIR}/IdVisitor.h" - "${SIDX_HEADERS_CAPI_DIR}/Index.h" - "${SIDX_HEADERS_CAPI_DIR}/LeafQuery.h" - "${SIDX_HEADERS_CAPI_DIR}/ObjVisitor.h" - "${SIDX_HEADERS_CAPI_DIR}/sidx_api.h" - "${SIDX_HEADERS_CAPI_DIR}/sidx_config.h" - "${SIDX_HEADERS_CAPI_DIR}/sidx_impl.h" - "${SIDX_HEADERS_CAPI_DIR}/Utility.h" -) -list (APPEND SIDX_HPP ${SIDX_CAPI_HPP} ) - -set(SIDX_CAPI_CPP - "${SIDX_CAPI_DIR}/BoundsQuery.cc" - "${SIDX_CAPI_DIR}/CountVisitor.cc" - "${SIDX_CAPI_DIR}/CustomStorage.cc" - "${SIDX_CAPI_DIR}/DataStream.cc" - "${SIDX_CAPI_DIR}/Error.cc" - "${SIDX_CAPI_DIR}/IdVisitor.cc" - "${SIDX_CAPI_DIR}/Index.cc" - "${SIDX_CAPI_DIR}/LeafQuery.cc" - "${SIDX_CAPI_DIR}/ObjVisitor.cc" - "${SIDX_CAPI_DIR}/sidx_api.cc" - "${SIDX_CAPI_DIR}/Utility.cc" -) - - -set(SIDX_SPATIALINDEX_CPP - "${SIDX_SRC_DIR}/spatialindex/LineSegment.cc" - "${SIDX_SRC_DIR}/spatialindex/MovingPoint.cc" - "${SIDX_SRC_DIR}/spatialindex/MovingRegion.cc" - "${SIDX_SRC_DIR}/spatialindex/Point.cc" - "${SIDX_SRC_DIR}/spatialindex/Region.cc" - "${SIDX_SRC_DIR}/spatialindex/SpatialIndexImpl.cc" - "${SIDX_SRC_DIR}/spatialindex/TimePoint.cc" - "${SIDX_SRC_DIR}/spatialindex/TimeRegion.cc" -) -list (APPEND SIDX_CPP ${SIDX_SPATIALINDEX_CPP} ) - -set(SIDX_MVRTREE_CPP - "${SIDX_SRC_DIR}/mvrtree/Index.cc" - "${SIDX_SRC_DIR}/mvrtree/Index.h" - "${SIDX_SRC_DIR}/mvrtree/Leaf.cc" - "${SIDX_SRC_DIR}/mvrtree/Leaf.h" - "${SIDX_SRC_DIR}/mvrtree/MVRTree.cc" - "${SIDX_SRC_DIR}/mvrtree/MVRTree.h" - "${SIDX_SRC_DIR}/mvrtree/Node.cc" - "${SIDX_SRC_DIR}/mvrtree/Node.h" - "${SIDX_SRC_DIR}/mvrtree/PointerPoolNode.h" - "${SIDX_SRC_DIR}/mvrtree/Statistics.cc" - "${SIDX_SRC_DIR}/mvrtree/Statistics.h" -) -list (APPEND SIDX_CPP ${SIDX_MVRTREE_CPP}) - -set(SIDX_RTREE_CPP - "${SIDX_SRC_DIR}/rtree/BulkLoader.cc" - "${SIDX_SRC_DIR}/rtree/BulkLoader.h" - "${SIDX_SRC_DIR}/rtree/Index.cc" - "${SIDX_SRC_DIR}/rtree/Index.h" - "${SIDX_SRC_DIR}/rtree/Leaf.cc" - "${SIDX_SRC_DIR}/rtree/Leaf.h" - "${SIDX_SRC_DIR}/rtree/Node.cc" - "${SIDX_SRC_DIR}/rtree/Node.h" - "${SIDX_SRC_DIR}/rtree/PointerPoolNode.h" - "${SIDX_SRC_DIR}/rtree/RTree.cc" - "${SIDX_SRC_DIR}/rtree/RTree.h" - "${SIDX_SRC_DIR}/rtree/Statistics.cc" - "${SIDX_SRC_DIR}/rtree/Statistics.h" -) -list (APPEND SIDX_CPP ${SIDX_RTREE_CPP}) - -set(SIDX_STORAGEMANAGER_CPP - "${SIDX_SRC_DIR}/storagemanager/Buffer.cc" - "${SIDX_SRC_DIR}/storagemanager/DiskStorageManager.cc" - "${SIDX_SRC_DIR}/storagemanager/DiskStorageManager.h" - "${SIDX_SRC_DIR}/storagemanager/MemoryStorageManager.cc" - "${SIDX_SRC_DIR}/storagemanager/MemoryStorageManager.h" - "${SIDX_SRC_DIR}/storagemanager/RandomEvictionsBuffer.cc" - "${SIDX_SRC_DIR}/storagemanager/RandomEvictionsBuffer.h" -) -list (APPEND SIDX_CPP ${SIDX_STORAGEMANAGER_CPP}) - -set(SIDX_RAND48 ) - -if (NOT HAVE_SRAND48) - set(SIDX_RAND48 "${SIDX_SRC_DIR}/tools/rand48.cc") -endif() - -set(SIDX_TOOLS_CPP - ${SIDX_RAND48} - "${SIDX_SRC_DIR}/tools/Tools.cc" -) -list (APPEND SIDX_CPP ${SIDX_TOOLS_CPP}) - -set(SIDX_TOOLS_CPP - "${SIDX_SRC_DIR}/tprtree/Index.cc" - "${SIDX_SRC_DIR}/tprtree/Index.h" - "${SIDX_SRC_DIR}/tprtree/Leaf.cc" - "${SIDX_SRC_DIR}/tprtree/Leaf.h" - "${SIDX_SRC_DIR}/tprtree/Node.cc" - "${SIDX_SRC_DIR}/tprtree/Node.h" - "${SIDX_SRC_DIR}/tprtree/PointerPoolNode.h" - "${SIDX_SRC_DIR}/tprtree/Statistics.cc" - "${SIDX_SRC_DIR}/tprtree/Statistics.h" - "${SIDX_SRC_DIR}/tprtree/TPRTree.cc" - "${SIDX_SRC_DIR}/tprtree/TPRTree.h" -) -list (APPEND SIDX_CPP ${SIDX_TOOLS_CPP} ) -# -# Group source files for IDE source explorers (e.g. Visual Studio) -# - -source_group("CMake Files" FILES CMakeLists.txt) - -source_group("Header Files" FILES ${SIDX_BASE_HPP}) -source_group("C API Header Files" FILES ${SIDX_CAPI_HPP}) - -source_group("Source Files" FILES ${SIDX_BASE_CPP}) -source_group("C API Source Files" FILES ${SIDX_CAPI_CPP}) - - -# Standard include directory of SIDX library -include_directories(../include) - -set (APPS_CPP_DEPENDENCIES "${SIDX_LIB_NAME}" CACHE INTERNAL "libraries to link") - -############################################################################### -# Targets settings - -set(SIDX_SOURCES - ${SIDX_HPP} - ${SIDX_CPP}) - -# NOTE: -# This hack is required to correctly link static into shared library. -# Such practice is not recommended as not portable, instead each library, -# static and shared should be built from sources separately. -#if(UNIX) -# add_definitions("-fPIC") -#endif() - -if(WIN32) - add_definitions("-DSIDX_DLL_EXPORT=1") -if (NOT WITH_STATIC_LASZIP) - add_definitions("-DSIDX_DLL_IMPORT=1") -endif() -endif() - -add_library(${SIDX_LIB_NAME} SHARED ${SIDX_SOURCES}) - -add_library(${SIDX_C_LIB_NAME} SHARED ${SIDX_CAPI_CPP}) - -target_link_libraries(${SIDX_C_LIB_NAME} - ${SIDX_LIB_NAME} -) - - - -set_target_properties(${SIDX_LIB_NAME} - PROPERTIES VERSION "${SIDX_LIB_VERSION}" - SOVERSION "${SIDX_LIB_SOVERSION}" ) - -set_target_properties(${SIDX_C_LIB_NAME} - PROPERTIES VERSION "${SIDX_LIB_VERSION}" - SOVERSION "${SIDX_LIB_SOVERSION}" ) - - - -if (APPLE) - set_target_properties( - ${SIDX_LIB_NAME} - PROPERTIES - INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" BUILD_WITH_INSTALL_RPATH OFF) - - set_target_properties( - ${SIDX_C_LIB_NAME} - PROPERTIES - INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" BUILD_WITH_INSTALL_RPATH OFF) -endif() - -############################################################################### -# Targets installation - -install(TARGETS ${SIDX_LIB_NAME} ${SIDX_C_LIB_NAME} - RUNTIME DESTINATION ${SIDX_BIN_DIR} - LIBRARY DESTINATION ${SIDX_LIB_DIR} - ARCHIVE DESTINATION ${SIDX_LIB_DIR}) - -install(DIRECTORY ${SIDX_HEADERS_DIR} - DESTINATION include/spatialindex - FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp") diff --git a/spatialindex-1.8.5/src/Makefile.am b/spatialindex-1.8.5/src/Makefile.am deleted file mode 100644 index 9891fa7..0000000 --- a/spatialindex-1.8.5/src/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = storagemanager spatialindex rtree mvrtree tprtree tools capi - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libspatialindex.pc \ No newline at end of file diff --git a/spatialindex-1.8.5/src/Makefile.in b/spatialindex-1.8.5/src/Makefile.in deleted file mode 100644 index 8484516..0000000 --- a/spatialindex-1.8.5/src/Makefile.in +++ /dev/null @@ -1,666 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(srcdir)/libspatialindex.pc.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = libspatialindex.pc -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-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__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = storagemanager spatialindex rtree mvrtree tprtree tools capi -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libspatialindex.pc -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -libspatialindex.pc: $(top_builddir)/config.status $(srcdir)/libspatialindex.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(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"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-pkgconfigDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/capi/BoundsQuery.cc b/spatialindex-1.8.5/src/capi/BoundsQuery.cc deleted file mode 100644 index 271d738..0000000 --- a/spatialindex-1.8.5/src/capi/BoundsQuery.cc +++ /dev/null @@ -1,51 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the bounds query. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -BoundsQuery::BoundsQuery() -{ - m_bounds = new libsupermesh::SpatialIndex::Region; -} - -void BoundsQuery::getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type&, - bool& hasNext) -{ - libsupermesh::SpatialIndex::IShape* ps; - entry.getShape(&ps); - ps->getMBR(*m_bounds); - delete ps; - - hasNext = false; -} diff --git a/spatialindex-1.8.5/src/capi/CountVisitor.cc b/spatialindex-1.8.5/src/capi/CountVisitor.cc deleted file mode 100644 index 4cbc28b..0000000 --- a/spatialindex-1.8.5/src/capi/CountVisitor.cc +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the count visitor. - * Author: Leonard NorrgĂ„rd, leonard.norrgard@refactor.fi - ****************************************************************************** - * Copyright (c) 2010, Leonard NorrgĂ„rd - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -CountVisitor::CountVisitor(): nResults(0) -{ -} - -CountVisitor::~CountVisitor() -{ - -} - -void CountVisitor::visitNode(const libsupermesh::SpatialIndex::INode& ) -{ - -} - -void CountVisitor::visitData(const libsupermesh::SpatialIndex::IData& ) -{ - nResults += 1; -} - -void CountVisitor::visitData(std::vector& ) -{ -} diff --git a/spatialindex-1.8.5/src/capi/CustomStorage.cc b/spatialindex-1.8.5/src/capi/CustomStorage.cc deleted file mode 100644 index 1805245..0000000 --- a/spatialindex-1.8.5/src/capi/CustomStorage.cc +++ /dev/null @@ -1,122 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object to implement the custom storage manager. - * Author: Matthias (nitro), nitro@dr-code.org - ****************************************************************************** - * Copyright (c) 2010, Matthias (nitro) - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - - -IStorageManager* libsupermesh::SpatialIndex::StorageManager::returnCustomStorageManager(libsupermesh::Tools::PropertySet& ps) -{ - IStorageManager* sm = new CustomStorageManager(ps); - return sm; -} - -CustomStorageManager::CustomStorageManager(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - var = ps.getProperty("CustomStorageCallbacks"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PVOID) - throw libsupermesh::Tools::IllegalArgumentException("CustomStorageManager: Property CustomStorageCallbacks must be libsupermesh::Tools::VT_PVOID"); - - if (!var.m_val.pvVal) - throw libsupermesh::Tools::IllegalArgumentException("CustomStorageManager: Property CustomStorageCallbacks must not be 0."); - - // we already checked for validity in IndexProperty_SetCustomStorageCallbacks - CustomStorageManagerCallbacks* callbackArray = static_cast(var.m_val.pvVal); - callbacks = *callbackArray; - } - - int errorCode( NoError ); - if ( callbacks.createCallback ) callbacks.createCallback( callbacks.context, &errorCode ); - processErrorCode( errorCode, NewPage ); -} - -CustomStorageManager::~CustomStorageManager() -{ - int errorCode( NoError ); - if ( callbacks.destroyCallback ) callbacks.destroyCallback( callbacks.context, &errorCode ); - processErrorCode( errorCode, NewPage ); -} - -void CustomStorageManager::flush() -{ - int errorCode( NoError ); - if ( callbacks.flushCallback ) callbacks.flushCallback( callbacks.context, &errorCode ); - processErrorCode( errorCode, NewPage ); -} - -void CustomStorageManager::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - int errorCode( NoError ); - if ( callbacks.loadByteArrayCallback ) callbacks.loadByteArrayCallback( callbacks.context, page, &len, data, &errorCode ); - processErrorCode( errorCode, page ); -} - -void CustomStorageManager::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - int errorCode( NoError ); - if ( callbacks.storeByteArrayCallback ) callbacks.storeByteArrayCallback( callbacks.context, &page, len, data, &errorCode ); - processErrorCode( errorCode, page ); -} - -void CustomStorageManager::deleteByteArray(const id_type page) -{ - int errorCode( NoError ); - if ( callbacks.deleteByteArrayCallback ) callbacks.deleteByteArrayCallback( callbacks.context, page, &errorCode ); - processErrorCode( errorCode, page ); -} - -inline void CustomStorageManager::processErrorCode(int errorCode, const id_type page) -{ - switch (errorCode) - { - case NoError: - break; - - case InvalidPageError: - throw InvalidPageException( page ); - break; - - case IllegalStateError: - throw libsupermesh::Tools::IllegalStateException( "CustomStorageManager: Error in user implementation." ); - break; - - default: - throw libsupermesh::Tools::IllegalStateException( "CustomStorageManager: Unknown error." ); - } -} diff --git a/spatialindex-1.8.5/src/capi/DataStream.cc b/spatialindex-1.8.5/src/capi/DataStream.cc deleted file mode 100644 index be81411..0000000 --- a/spatialindex-1.8.5/src/capi/DataStream.cc +++ /dev/null @@ -1,118 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the datastream. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - - -DataStream::DataStream(int (*readNext)(libsupermesh::SpatialIndex::id_type * id, - double **pMin, - double **pMax, - uint32_t *nDimension, - const uint8_t** pData, - uint32_t *nDataLength) ) - : m_pNext(0), - m_bDoneReading(false) -{ - iterfunct = readNext; - - // Read the first one. - readData(); -} - -DataStream::~DataStream() -{ - if (m_pNext != 0) delete m_pNext; -} - -bool DataStream::readData() -{ - libsupermesh::SpatialIndex::id_type id; - double *pMin=0; - double *pMax=0; - uint32_t nDimension=0; - uint8_t *p_data=0; - uint32_t nDataLength=0; - - if (m_bDoneReading == true) { - return false; - } - - int ret = iterfunct(&id, &pMin, &pMax, &nDimension, const_cast(&p_data), &nDataLength); - - // The callback should return anything other than 0 - // when it is done. - if (ret != 0) - { - m_bDoneReading = true; - return false; - } - - libsupermesh::SpatialIndex::Region r = libsupermesh::SpatialIndex::Region(pMin, pMax, nDimension); - - // Data gets copied here anyway. We should fix this part of libsupermesh::SpatialIndex::RTree::Data's constructor - m_pNext = new libsupermesh::SpatialIndex::RTree::Data(nDataLength, p_data, r, id); - - return true; -} - - -libsupermesh::SpatialIndex::IData* DataStream::getNext() -{ - if (m_pNext == 0) return 0; - - libsupermesh::SpatialIndex::RTree::Data* ret = m_pNext; - m_pNext = 0; - readData(); - return ret; -} - -bool DataStream::hasNext() -{ - return (m_pNext != 0); -} - -uint32_t DataStream::size() -{ - throw libsupermesh::Tools::NotSupportedException("Operation not supported."); -} - -void DataStream::rewind() -{ - throw libsupermesh::Tools::NotSupportedException("Operation not supported."); - - if (m_pNext != 0) - { - delete m_pNext; - m_pNext = 0; - } -} diff --git a/spatialindex-1.8.5/src/capi/Error.cc b/spatialindex-1.8.5/src/capi/Error.cc deleted file mode 100644 index ee99d55..0000000 --- a/spatialindex-1.8.5/src/capi/Error.cc +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the error object. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include - -Error::Error(int code, std::string const& message, std::string const& method) : - m_code(code), - m_message(message), - m_method(method) -{ -} - -Error::Error(Error const& other) : - m_code(other.m_code), - m_message(other.m_message), - m_method(other.m_method) -{ -} - -Error& Error::operator=(Error const& rhs) -{ - if (&rhs != this) - { - m_code = rhs.m_code; - m_message = rhs.m_message; - m_method = rhs.m_method; - - } - return *this; -} diff --git a/spatialindex-1.8.5/src/capi/IdVisitor.cc b/spatialindex-1.8.5/src/capi/IdVisitor.cc deleted file mode 100644 index 90981a3..0000000 --- a/spatialindex-1.8.5/src/capi/IdVisitor.cc +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the id visitor. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -IdVisitor::IdVisitor(): nResults(0) -{ -} - -IdVisitor::~IdVisitor() -{ - -} - -void IdVisitor::visitNode(const libsupermesh::SpatialIndex::INode& ) -{ - -} - -void IdVisitor::visitData(const libsupermesh::SpatialIndex::IData& d) -{ - nResults += 1; - - m_vector.push_back(d.getIdentifier()); -} - -void IdVisitor::visitData(std::vector& ) -{ -} diff --git a/spatialindex-1.8.5/src/capi/Index.cc b/spatialindex-1.8.5/src/capi/Index.cc deleted file mode 100644 index ad1d06c..0000000 --- a/spatialindex-1.8.5/src/capi/Index.cc +++ /dev/null @@ -1,436 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the index. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -libsupermesh::SpatialIndex::ISpatialIndex* Index::CreateIndex() -{ - using namespace libsupermesh::SpatialIndex; - - ISpatialIndex* index = 0; - - libsupermesh::Tools::Variant var; - - if (GetIndexType() == RT_RTree) { - - try { - index = RTree::returnRTree( *m_buffer, m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - } - - else if (GetIndexType() == RT_MVRTree) { - - try { - index = MVRTree::returnMVRTree( *m_buffer, m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - } - - else if (GetIndexType() == RT_TPRTree) { - - try { - index = TPRTree::returnTPRTree( *m_buffer,m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - } - - return index; -} - - -Index::Index(const libsupermesh::Tools::PropertySet& poProperties): m_properties(poProperties) -{ - Setup(); - - Initialize(); -} - - -Index::~Index() -{ - delete m_rtree; - delete m_buffer; - delete m_storage; -} - -Index::Index( const libsupermesh::Tools::PropertySet& poProperties, - int (*readNext)(libsupermesh::SpatialIndex::id_type *id, - double **pMin, - double **pMax, - uint32_t *nDimension, - const uint8_t **pData, - uint32_t *nDataLength)) -: m_properties(poProperties) -{ - using namespace libsupermesh::SpatialIndex; - - Setup(); - - m_storage = CreateStorage(); - m_buffer = CreateIndexBuffer(*m_storage); - - DataStream ds(readNext); - - double dFillFactor = 0.7; - uint32_t nIdxCapacity = 100; - uint32_t nIdxLeafCap = 100; - uint32_t nIdxDimension = 2; - libsupermesh::SpatialIndex::RTree::RTreeVariant eVariant = libsupermesh::SpatialIndex::RTree::RV_RSTAR; - libsupermesh::SpatialIndex::id_type m_IdxIdentifier; - - // Fetch a bunch of properties. We can't bulk load an rtree using merely - // properties, we have to use the helper method(s). - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) - throw std::runtime_error("Index::Index (streaming):" - " Property FillFactor must be libsupermesh::Tools::VT_DOUBLE"); - - dFillFactor = var.m_val.dblVal; - } - - var = m_properties.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::Index (streaming): " - "Property IndexCapacity must be libsupermesh::Tools::VT_ULONG"); - - nIdxCapacity = var.m_val.ulVal; - } - - var = m_properties.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::Index (streaming): " - "Property LeafCapacity must be libsupermesh::Tools::VT_ULONG"); - - nIdxLeafCap = var.m_val.ulVal; - } - - var = m_properties.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::Index (streaming): " - "Property Dimension must be libsupermesh::Tools::VT_ULONG"); - - nIdxDimension = var.m_val.ulVal; - } - - var = m_properties.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG) - throw std::runtime_error("Index::Index (streaming): " - "Property TreeVariant must be libsupermesh::Tools::VT_LONG"); - - eVariant = static_cast(var.m_val.lVal); - } - - var = m_properties.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) - throw std::runtime_error("Index::Index (streaming): " - "Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - m_IdxIdentifier = var.m_val.llVal; - } - - m_rtree = RTree::createAndBulkLoadNewRTree( libsupermesh::SpatialIndex::RTree::BLM_STR, - ds, - *m_buffer, - dFillFactor, - nIdxCapacity, - nIdxLeafCap, - nIdxDimension, - eVariant, - m_IdxIdentifier); -} - - -libsupermesh::SpatialIndex::StorageManager::IBuffer* Index::CreateIndexBuffer(libsupermesh::SpatialIndex::IStorageManager& storage) -{ - using namespace libsupermesh::SpatialIndex::StorageManager; - IBuffer* buffer = 0; - try { - if ( m_storage == 0 ) - throw std::runtime_error("Storage was invalid to create index buffer"); - buffer = returnRandomEvictionsBuffer(storage, m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - return buffer; -} - - -libsupermesh::SpatialIndex::IStorageManager* Index::CreateStorage() -{ - using namespace libsupermesh::SpatialIndex::StorageManager; - - libsupermesh::SpatialIndex::IStorageManager* storage = 0; - std::string filename(""); - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("FileName"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) - throw std::runtime_error("Index::CreateStorage: " - "Property FileName must be libsupermesh::Tools::VT_PCHAR"); - - filename = std::string(var.m_val.pcVal); - } - - if (GetIndexStorage() == RT_Disk) { - if (filename.empty()) { - std::ostringstream os; - os << "Spatial Index Error: filename was empty." - " Set IndexStorageType to RT_Memory"; - throw std::runtime_error(os.str()); - } - try { - storage = returnDiskStorageManager(m_properties); - return storage; - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - - } else if (GetIndexStorage() == RT_Memory) { - - try { - storage = returnMemoryStorageManager(m_properties); - return storage; - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - - } else if (GetIndexStorage() == RT_Custom) { - - try { - storage = returnCustomStorageManager(m_properties); - return storage; - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - - } - return storage; -} - - - - -void Index::Initialize() -{ - m_storage = CreateStorage(); - m_buffer = CreateIndexBuffer(*m_storage); - m_rtree = CreateIndex(); -} - -void Index::Setup() - -{ - m_buffer = 0; - m_storage = 0; - m_rtree = 0; -} - -RTIndexType Index::GetIndexType() -{ - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("IndexType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::GetIndexType: " - "Property IndexType must be libsupermesh::Tools::VT_ULONG"); - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - return RT_InvalidIndexType; - -} -void Index::SetIndexType(RTIndexType v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = v; - m_properties.setProperty("IndexType", var); -} - -RTStorageType Index::GetIndexStorage() -{ - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("IndexStorageType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::GetIndexStorage: " - "Property IndexStorageType must be libsupermesh::Tools::VT_ULONG"); - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - return RT_InvalidStorageType; -} - -void Index::SetIndexStorage(RTStorageType v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = v; - m_properties.setProperty("IndexStorageType", var); -} - -RTIndexVariant Index::GetIndexVariant() -{ - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("TreeVariant"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::GetIndexVariant: " - "Property TreeVariant must be libsupermesh::Tools::VT_ULONG"); - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - return RT_InvalidIndexVariant; -} - -void Index::SetIndexVariant(RTStorageType v) -{ - using namespace libsupermesh::SpatialIndex; - libsupermesh::Tools::Variant var; - - if (GetIndexType() == RT_RTree) { - var.m_val.ulVal = static_cast(v); - m_properties.setProperty("TreeVariant", var); - } else if (GetIndexType() == RT_MVRTree) { - var.m_val.ulVal = static_cast(v); - m_properties.setProperty("TreeVariant", var); - } else if (GetIndexType() == RT_TPRTree) { - var.m_val.ulVal = static_cast(v); - m_properties.setProperty("TreeVariant", var); - } -} - -int64_t Index::GetResultSetOffset() -{ - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("ResultSetOffset"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) - throw std::runtime_error("Index::ResultSetOffset: " - "Property ResultSetOffset must be libsupermesh::Tools::VT_LONGLONG"); - return var.m_val.llVal; - } - - // if we didn't get anything, we're returning 0 as there is no limit - return 0; -} - -void Index::SetResultSetOffset(int64_t v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = v; - m_properties.setProperty("ResultSetOffset", var); -} - - -int64_t Index::GetResultSetLimit() -{ - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("ResultSetLimit"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) - throw std::runtime_error("Index::ResultSetLimit: " - "Property ResultSetLimit must be libsupermesh::Tools::VT_LONGLONG"); - return var.m_val.llVal; - } - - // if we didn't get anything, we're returning 0 as there is no limit - return 0; -} - -void Index::SetResultSetLimit(int64_t v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = v; - m_properties.setProperty("ResultSetLimit", var); -} - -void Index::flush() -{ - m_storage->flush(); -} diff --git a/spatialindex-1.8.5/src/capi/LeafQuery.cc b/spatialindex-1.8.5/src/capi/LeafQuery.cc deleted file mode 100644 index 2686c99..0000000 --- a/spatialindex-1.8.5/src/capi/LeafQuery.cc +++ /dev/null @@ -1,132 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement a query of the index's leaves. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -LeafQuery::LeafQuery() -{ - -} - -LeafQueryResult get_results(const libsupermesh::SpatialIndex::INode* n) -{ - LeafQueryResult result (n->getIdentifier()); - - libsupermesh::SpatialIndex::IShape* ps; - n->getShape(&ps); - libsupermesh::SpatialIndex::Region* pr = dynamic_cast(ps); - std::vector ids; - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push_back(n->getChildIdentifier(cChild)); - } - - result.SetIDs(ids); - result.SetBounds(pr); - delete ps; - - return result; -} -void LeafQuery::getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type& nextEntry, - bool& hasNext) -{ - - const libsupermesh::SpatialIndex::INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 0) - { - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - m_ids.push(n->getChildIdentifier(cChild)); - } - } - - if (n->isLeaf()) { - m_results.push_back(get_results(n)); - } - - if (! m_ids.empty()) - { - nextEntry = m_ids.front(); m_ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } -} - - -std::vector const& LeafQueryResult::GetIDs() const -{ - return ids; -} - -void LeafQueryResult::SetIDs(std::vector& v) -{ - ids.resize(v.size()); - std::copy(v.begin(), v.end(), ids.begin()); -} -const libsupermesh::SpatialIndex::Region* LeafQueryResult::GetBounds() const -{ - return bounds; -} - -void LeafQueryResult::SetBounds(const libsupermesh::SpatialIndex::Region* b) -{ - bounds = new libsupermesh::SpatialIndex::Region(*b); -} - -LeafQueryResult::LeafQueryResult(LeafQueryResult const& other) -{ - ids.resize(other.ids.size()); - std::copy(other.ids.begin(), other.ids.end(), ids.begin()); - m_id = other.m_id; - - bounds = other.bounds->clone(); -} - -LeafQueryResult& LeafQueryResult::operator=(LeafQueryResult const& rhs) -{ - if (&rhs != this) - { - ids.resize(rhs.ids.size()); - std::copy(rhs.ids.begin(), rhs.ids.end(), ids.begin()); - m_id = rhs.m_id; - bounds = rhs.bounds->clone(); - } - return *this; -} - diff --git a/spatialindex-1.8.5/src/capi/Makefile.am b/spatialindex-1.8.5/src/capi/Makefile.am deleted file mode 100644 index 2c35d40..0000000 --- a/spatialindex-1.8.5/src/capi/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libsidxc.la -INCLUDES = -I../../include -I../../include/capi -libsidxc_la_SOURCES = BoundsQuery.cc \ - CountVisitor.cc \ - CustomStorage.cc \ - DataStream.cc \ - Error.cc \ - IdVisitor.cc \ - Index.cc \ - LeafQuery.cc \ - ObjVisitor.cc \ - sidx_api.cc \ - Utility.cc diff --git a/spatialindex-1.8.5/src/capi/Makefile.in b/spatialindex-1.8.5/src/capi/Makefile.in deleted file mode 100644 index 967b69c..0000000 --- a/spatialindex-1.8.5/src/capi/Makefile.in +++ /dev/null @@ -1,601 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/capi -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libsidxc_la_LIBADD = -am_libsidxc_la_OBJECTS = BoundsQuery.lo CountVisitor.lo \ - CustomStorage.lo DataStream.lo Error.lo IdVisitor.lo Index.lo \ - LeafQuery.lo ObjVisitor.lo sidx_api.lo Utility.lo -libsidxc_la_OBJECTS = $(am_libsidxc_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libsidxc_la_SOURCES) -DIST_SOURCES = $(libsidxc_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libsidxc.la -INCLUDES = -I../../include -I../../include/capi -libsidxc_la_SOURCES = BoundsQuery.cc \ - CountVisitor.cc \ - CustomStorage.cc \ - DataStream.cc \ - Error.cc \ - IdVisitor.cc \ - Index.cc \ - LeafQuery.cc \ - ObjVisitor.cc \ - sidx_api.cc \ - Utility.cc - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/capi/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/capi/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libsidxc.la: $(libsidxc_la_OBJECTS) $(libsidxc_la_DEPENDENCIES) $(EXTRA_libsidxc_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libsidxc_la_OBJECTS) $(libsidxc_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoundsQuery.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CountVisitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CustomStorage.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DataStream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IdVisitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeafQuery.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ObjVisitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Utility.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sidx_api.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/capi/ObjVisitor.cc b/spatialindex-1.8.5/src/capi/ObjVisitor.cc deleted file mode 100644 index 9d6ecb7..0000000 --- a/spatialindex-1.8.5/src/capi/ObjVisitor.cc +++ /dev/null @@ -1,66 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the object visitor. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -ObjVisitor::ObjVisitor(): nResults(0) -{ -} - -ObjVisitor::~ObjVisitor() -{ - std::vector::iterator it; - for (it = m_vector.begin(); it != m_vector.end(); it++) { - delete *it; - } - -} - -void ObjVisitor::visitNode(const libsupermesh::SpatialIndex::INode& ) -{ -} - -void ObjVisitor::visitData(const libsupermesh::SpatialIndex::IData& d) -{ - - libsupermesh::SpatialIndex::IData* item = dynamic_cast(const_cast(d).clone()) ; - - nResults += 1; - - m_vector.push_back(item); -} - -void ObjVisitor::visitData(std::vector& ) -{ -} - diff --git a/spatialindex-1.8.5/src/capi/Utility.cc b/spatialindex-1.8.5/src/capi/Utility.cc deleted file mode 100644 index 4cd2449..0000000 --- a/spatialindex-1.8.5/src/capi/Utility.cc +++ /dev/null @@ -1,240 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -libsupermesh::Tools::PropertySet* GetDefaults() -{ - libsupermesh::Tools::PropertySet* ps = new libsupermesh::Tools::PropertySet; - - libsupermesh::Tools::Variant var; - - // Rtree defaults - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 0.7; - ps->setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = libsupermesh::SpatialIndex::RTree::RV_RSTAR; - ps->setProperty("TreeVariant", var); - - // var.m_varType = libsupermesh::Tools::VT_LONGLONG; - // var.m_val.llVal = 0; - // ps->setProperty("IndexIdentifier", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 32; - ps->setProperty("NearMinimumOverlapFactor", var); - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 0.4; - ps->setProperty("SplitDistributionFactor", var); - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 0.3; - ps->setProperty("ReinsertFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 2; - ps->setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.bVal = true; - ps->setProperty("EnsureTightMBRs", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("IndexPoolCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("LeafPoolCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 1000; - ps->setProperty("RegionPoolCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 500; - ps->setProperty("PointPoolCapacity", var); - - // horizon for TPRTree - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 20.0; - ps->setProperty("Horizon", var); - - // Buffering defaults - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 10; - ps->setProperty("Capacity", var); - - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.bVal = false; - ps->setProperty("WriteThrough", var); - - // Disk Storage Manager defaults - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.bVal = true; - ps->setProperty("Overwrite", var); - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast(""); - ps->setProperty("FileName", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 4096; - ps->setProperty("PageSize", var); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = 0; - ps->setProperty("ResultSetLimit", var); - - // Our custom properties related to whether - // or not we are using a disk or memory storage manager - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = RT_Disk; - ps->setProperty("IndexStorageType", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = RT_RTree; - ps->setProperty("IndexType", var); - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast("dat"); - ps->setProperty("FileNameDat", var); - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast("idx"); - ps->setProperty("FileNameIdx", var); - - // Custom storage manager properties - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.pcVal = 0; - ps->setProperty("CustomStorageCallbacksSize", var); - - var.m_varType = libsupermesh::Tools::VT_PVOID; - var.m_val.pcVal = 0; - ps->setProperty("CustomStorageCallbacks", var); - - return ps; -} - -void Page_ResultSet_Ids(IdVisitor& visitor, int64_t** ids, int64_t nStart, int64_t nResultLimit, uint64_t* nResults) -{ - int64_t nResultCount; - - nResultCount = visitor.GetResultCount(); - - if (nResultLimit == 0) - { - // no offset paging - nResultLimit = nResultCount; - nStart = 0; - } - else - { - if ((nResultCount - (nStart + nResultLimit)) < 0) - { - // not enough results to fill nResultCount - nStart = std::min(nStart, nResultCount); - nResultCount = nStart + std::min(nResultLimit, nResultCount - nStart); - } - else - { - nResultCount = std::min(nResultCount, nStart + nResultLimit); - } - } - - *ids = (int64_t*) malloc (nResultLimit * sizeof(int64_t)); - - std::vector& results = visitor.GetResults(); - - for (int64_t i = nStart; i < nResultCount; ++i) - { - (*ids)[i - nStart] = results[i]; - } - - *nResults = nResultCount - nStart; -} - -void Page_ResultSet_Obj(ObjVisitor& visitor, IndexItemH** items, int64_t nStart, int64_t nResultLimit, uint64_t* nResults) -{ - int64_t nResultCount; - - nResultCount = visitor.GetResultCount(); - - if (nResultLimit == 0) - { - // no offset paging - nResultLimit = nResultCount; - nStart = 0; - } - else - { - if ((nResultCount - (nStart + nResultLimit)) < 0) - { - // not enough results to fill nResultCount - nStart = std::min(nStart, nResultCount); - nResultCount = nStart + std::min(nResultLimit, nResultCount - nStart); - } - else - { - nResultCount = std::min(nResultCount, nStart + nResultLimit); - } - } - - *items = (libsupermesh::SpatialIndex::IData**) malloc (nResultLimit * sizeof(libsupermesh::SpatialIndex::IData*)); - - std::vector& results = visitor.GetResults(); - - // copy the Items into the newly allocated item array - // we need to make sure to copy the actual Item instead - // of just the pointers, as the visitor will nuke them - // upon ~ - for (int64_t i = nStart; i < nResultCount; ++i) - { - libsupermesh::SpatialIndex::IData* result =results[i]; - (*items)[i - nStart] = dynamic_cast(result->clone()); - } - *nResults = nResultCount - nStart; -} diff --git a/spatialindex-1.8.5/src/capi/sidx_api.cc b/spatialindex-1.8.5/src/capi/sidx_api.cc deleted file mode 100644 index 891eda3..0000000 --- a/spatialindex-1.8.5/src/capi/sidx_api.cc +++ /dev/null @@ -1,3519 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C API wrapper implementation - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -static std::stack errors; - - -#ifdef _WIN32 -# pragma warning(push) -# pragma warning(disable: 4127) // assignment operator could not be generated -#endif - -#define VALIDATE_POINTER0(ptr, func) \ - do { if( NULL == ptr ) { \ - RTError const ret = RT_Failure; \ - std::ostringstream msg; \ - msg << "Pointer \'" << #ptr << "\' is NULL in \'" << (func) <<"\'."; \ - std::string message(msg.str()); \ - Error_PushError( ret, message.c_str(), (func)); \ - return; \ - }} while(0) - -#define VALIDATE_POINTER1(ptr, func, rc) \ - do { if( NULL == ptr ) { \ - RTError const ret = RT_Failure; \ - std::ostringstream msg; \ - msg << "Pointer \'" << #ptr << "\' is NULL in \'" << (func) <<"\'."; \ - std::string message(msg.str()); \ - Error_PushError( ret, message.c_str(), (func)); \ - return (rc); \ - }} while(0) - -IDX_C_START - -SIDX_C_DLL void Error_Reset(void) { - if (errors.empty()) return; - for (std::size_t i=0;i(errors.size()); -} - -SIDX_C_DLL IndexH Index_Create(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "Index_Create", NULL); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try { - return (IndexH) new Index(*prop); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Create"); - return NULL; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Create"); - return NULL; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Create"); - return NULL; - } - return NULL; -} - -SIDX_C_DLL IndexH Index_CreateWithStream( IndexPropertyH hProp, - int (*readNext)(libsupermesh::SpatialIndex::id_type *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength) - ) -{ - VALIDATE_POINTER1(hProp, "Index_CreateWithStream", NULL); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - - try { - return (IndexH) new Index(*prop, readNext); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_CreateWithStream"); - return NULL; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_CreateWithStream"); - return NULL; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_CreateWithStream"); - return NULL; - } - return NULL; -} - -SIDX_C_DLL void Index_Destroy(IndexH index) -{ - VALIDATE_POINTER0(index, "Index_Destroy"); - Index* idx = (Index*) index; - if (idx) delete idx; -} - -SIDX_C_DLL void Index_Flush(IndexH index) -{ - VALIDATE_POINTER0(index, "Index_Flush"); - Index* idx = (Index*) index; - if (idx) - { - idx->flush(); - } -} - -SIDX_C_DLL RTError Index_DeleteTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension - ) -{ - VALIDATE_POINTER1(index, "Index_DeleteTPData", RT_Failure); - - Index* idx = static_cast(index); - - try { - idx->index().deleteData(libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension), id); - return RT_None; - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_DeleteTPData"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_DeleteTPData"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_DeleteTPData"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_DeleteMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension - ) -{ - VALIDATE_POINTER1(index, "Index_DeleteMVRData", RT_Failure); - - Index* idx = static_cast(index); - - try { - idx->index().deleteData(libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension), id); - return RT_None; - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_DeleteMVRData"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_DeleteMVRData"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_DeleteMVRData"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_DeleteData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension) -{ - VALIDATE_POINTER1(index, "Index_DeleteData", RT_Failure); - - Index* idx = static_cast(index); - - try { - idx->index().deleteData(libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension), id); - return RT_None; - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_DeleteData"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_DeleteData"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_DeleteData"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_InsertTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - uint32_t nDataLength - ) -{ - VALIDATE_POINTER1(index, "Index_InsertTPData", RT_Failure); - - Index* idx = static_cast(index); - - // Test the data and check for the case when mins equal maxs (x,y,z,v) - // In that case, we will insert a libsupermesh::SpatialIndex::MovingPoint - // instead of a libsupermesh::SpatialIndex::MovingRegion - - bool isPoint = false; - libsupermesh::SpatialIndex::IShape* shape = 0; - double const epsilon = std::numeric_limits::epsilon(); - - double length(0), vlength(0); - for (uint32_t i = 0; i < nDimension; ++i) { - double delta = pdMin[i] - pdMax[i]; - length += std::fabs(delta); - - double vDelta = pdVMin[i] - pdVMax[i]; - vlength += std::fabs(vDelta); - } - - if ((length <= epsilon) && (vlength <= epsilon)){ - isPoint = true; - } - - if (isPoint == true) { - shape = new libsupermesh::SpatialIndex::MovingPoint(pdMin, pdVMin, tStart, tEnd, nDimension); - } else { - shape = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - } - try { - idx->index().insertData(nDataLength, - pData, - *shape, - id); - - delete shape; - return RT_None; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_InsertTPData"); - delete shape; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_InsertTPData"); - delete shape; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_InsertTPData"); - delete shape; - return RT_Failure; - } - return RT_None; - -} - -SIDX_C_DLL RTError Index_InsertMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - uint32_t nDataLength - ) -{ - VALIDATE_POINTER1(index, "Index_InsertMVRData", RT_Failure); - - Index* idx = static_cast(index); - - // Test the data and check for the case when mins equal maxs - // In that case, we will insert a libsupermesh::SpatialIndex::TimePoint - // instead of a libsupermesh::SpatialIndex::timeRegion - - bool isPoint = false; - libsupermesh::SpatialIndex::IShape* shape = 0; - double const epsilon = std::numeric_limits::epsilon(); - - double length(0); - for (uint32_t i = 0; i < nDimension; ++i) { - double delta = pdMin[i] - pdMax[i]; - length += std::fabs(delta); - } - - if (length <= epsilon){ - isPoint = true; - } - - if (isPoint == true) { - shape = new libsupermesh::SpatialIndex::TimePoint(pdMin, tStart, tEnd, nDimension); - } else { - shape = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - } - try { - idx->index().insertData(nDataLength, - pData, - *shape, - id); - - delete shape; - return RT_None; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_InsertMVRData"); - delete shape; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_InsertMVRData"); - delete shape; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_InsertMVRData"); - delete shape; - return RT_Failure; - } - return RT_None; -} - - -SIDX_C_DLL RTError Index_InsertData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension, - const uint8_t* pData, - uint32_t nDataLength) -{ - VALIDATE_POINTER1(index, "Index_InsertData", RT_Failure); - - Index* idx = static_cast(index); - - // Test the data and check for the case when minx == maxx, miny == maxy - // and minz == maxz. In that case, we will insert a libsupermesh::SpatialIndex::Point - // instead of a libsupermesh::SpatialIndex::Region - - bool isPoint = false; - libsupermesh::SpatialIndex::IShape* shape = 0; - double const epsilon = std::numeric_limits::epsilon(); - - double length(0); - for (uint32_t i = 0; i < nDimension; ++i) { - double delta = pdMin[i] - pdMax[i]; - length += std::fabs(delta); - } - - if (length <= epsilon) { - isPoint = true; - } - - if (isPoint == true) { - shape = new libsupermesh::SpatialIndex::Point(pdMin, nDimension); - } else { - shape = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - } - try { - idx->index().insertData(nDataLength, - pData, - *shape, - id); - - delete shape; - return RT_None; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_InsertData"); - delete shape; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_InsertData"); - delete shape; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_InsertData"); - delete shape; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPIntersects_obj", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRIntersects_obj", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_Intersects_obj( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_obj", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPIntersects_id", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPIntersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRIntersects_id", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRIntersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRIntersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_MVRIntersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_Intersects_id( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_id", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPIntersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPIntersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRIntersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRIntersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRIntersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_MVRIntersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_Intersects_count( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_SegmentIntersects_obj( IndexH index, - double* pdStartPoint, - double* pdEndPoint, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::LineSegment* l = new libsupermesh::SpatialIndex::LineSegment(pdStartPoint, pdEndPoint, nDimension); - idx->index().intersectsWithQuery( *l, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete l; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_SegmentIntersects_id( IndexH index, - double* pdStartPoint, - double* pdEndPoint, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::LineSegment* l = new libsupermesh::SpatialIndex::LineSegment(pdStartPoint, pdEndPoint, nDimension); - idx->index().intersectsWithQuery( *l, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete l; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_SegmentIntersects_count( IndexH index, - double* pdStartPoint, - double* pdEndPoint, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::LineSegment* l = new libsupermesh::SpatialIndex::LineSegment(pdStartPoint, pdEndPoint, nDimension); - idx->index().intersectsWithQuery( *l, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete l; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPNearestNeighbors_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRNearestNeighbors_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().nearestNeighborQuery( *nResults, - *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_MVRNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_NearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_NearestNeighbors_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_NearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_NearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPNearestNeighbors_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRNearestNeighbors_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - - idx->index().nearestNeighborQuery( *nResults, - *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_NearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_NearestNeighbors_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_GetBounds( IndexH index, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension) -{ - VALIDATE_POINTER1(index, "Index_GetBounds", RT_Failure); - Index* idx = static_cast(index); - - BoundsQuery* query = new BoundsQuery; - - try { - idx->index().queryStrategy( *query); - - const libsupermesh::SpatialIndex::Region* bounds = query->GetBounds(); - if (bounds == 0) { - *nDimension = 0; - delete query; - return RT_None; - } - - *nDimension =bounds->getDimension(); - - *ppdMin = (double*) malloc (*nDimension * sizeof(double)); - *ppdMax = (double*) malloc (*nDimension * sizeof(double)); - - for (uint32_t i=0; i< *nDimension; ++i) { - (*ppdMin)[i] = bounds->getLow(i); - (*ppdMax)[i] = bounds->getHigh(i); - } - - delete query; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_GetBounds"); - delete query; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_GetBounds"); - delete query; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_GetBounds"); - delete query; - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL RTError Index_SetResultSetOffset(IndexH index, int64_t value) -{ - try - { - VALIDATE_POINTER1(index, "Index_SetResultSetOffset", RT_Failure); - Index* idx = static_cast(index); - idx->SetResultSetOffset(value); - } - catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_SetResultSetOffset"); - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL int64_t Index_GetResultSetOffset(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_GetResultSetOffset", 0); - Index* idx = static_cast(index); - return idx->GetResultSetOffset(); -} - -SIDX_DLL RTError Index_SetResultSetLimit(IndexH index, int64_t value) -{ - try - { - VALIDATE_POINTER1(index, "Index_SetResultSetLimit", RT_Failure); - Index* idx = static_cast(index); - idx->SetResultSetLimit(value); - } - catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_SetResultSetLimit"); - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL int64_t Index_GetResultSetLimit(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_GetResultSetLimit", 0); - Index* idx = static_cast(index); - return idx->GetResultSetLimit(); -} - -SIDX_C_DLL uint32_t Index_IsValid(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_IsValid", 0); - Index* idx = static_cast(index); - return static_cast(idx->index().isIndexValid()); -} - -SIDX_C_DLL IndexPropertyH Index_GetProperties(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_GetProperties", 0); - Index* idx = static_cast(index); - libsupermesh::Tools::PropertySet* ps = new libsupermesh::Tools::PropertySet; - - idx->index().getIndexProperties(*ps); - return (IndexPropertyH)ps; -} - -SIDX_C_DLL void Index_ClearBuffer(IndexH index) -{ - VALIDATE_POINTER0(index, "Index_ClearBuffer"); - Index* idx = static_cast(index); - idx->buffer().clear(); -} - -SIDX_C_DLL void Index_DestroyObjResults(IndexItemH* results, uint32_t nResults) -{ - VALIDATE_POINTER0(results, "Index_DestroyObjResults"); - libsupermesh::SpatialIndex::IData* it; - for (uint32_t i=0; i< nResults; ++i) { - if (results[i] != NULL) { - it = static_cast(results[i]); - if (it != 0) - delete it; - } - } - - std::free(results); -} - - -SIDX_C_DLL void Index_Free(void* results) -{ - VALIDATE_POINTER0(results, "Index_Free"); - if (results != 0) - std::free(results); -} - -SIDX_C_DLL RTError Index_GetLeaves( IndexH index, - uint32_t* nNumLeafNodes, - uint32_t** nLeafSizes, - int64_t** nLeafIDs, - int64_t*** nLeafChildIDs, - double*** pppdMin, - double*** pppdMax, - uint32_t* nDimension) -{ - VALIDATE_POINTER1(index, "Index_GetLeaves", RT_Failure); - Index* idx = static_cast(index); - - std::vector::const_iterator i; - LeafQuery* query = new LeafQuery; - - // Fetch the dimensionality of the index - libsupermesh::Tools::PropertySet ps; - idx->index().getIndexProperties(ps); - - libsupermesh::Tools::Variant var; - var = ps.getProperty("Dimension"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property Dimension must be libsupermesh::Tools::VT_ULONG", - "Index_GetLeaves"); - return RT_Failure; - } - } - - *nDimension = var.m_val.ulVal; - - try { - idx->index().queryStrategy( *query); - - const std::vector& results = query->GetResults(); - - *nNumLeafNodes = (uint32_t)results.size(); - - *nLeafSizes = (uint32_t*) malloc (*nNumLeafNodes * sizeof(uint32_t)); - *nLeafIDs = (int64_t*) malloc (*nNumLeafNodes * sizeof(int64_t)); - - *nLeafChildIDs = (int64_t**) malloc(*nNumLeafNodes * sizeof(int64_t*)); - *pppdMin = (double**) malloc (*nNumLeafNodes * sizeof(double*)); - *pppdMax = (double**) malloc (*nNumLeafNodes * sizeof(double*)); - - uint32_t k=0; - for (i = results.begin(); i != results.end(); ++i) - { - std::vector const& ids = (*i).GetIDs(); - const libsupermesh::SpatialIndex::Region* b = (*i).GetBounds(); - - (*nLeafIDs)[k] = (*i).getIdentifier(); - (*nLeafSizes)[k] = (uint32_t)ids.size(); - - (*nLeafChildIDs)[k] = (int64_t*) malloc( (*nLeafSizes)[k] * sizeof(int64_t)); - (*pppdMin)[k] = (double*) malloc ( (*nLeafSizes)[k] * sizeof(double)); - (*pppdMax)[k] = (double*) malloc ( (*nLeafSizes)[k] * sizeof(double)); - for (uint32_t i=0; i< *nDimension; ++i) { - (*pppdMin)[k][i] = b->getLow(i); - (*pppdMax)[k][i] = b->getHigh(i); - } - for (uint32_t cChild = 0; cChild < ids.size(); cChild++) - { - (*nLeafChildIDs)[k][cChild] = ids[cChild]; - } - ++k; - } - - - delete query; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_GetLeaves"); - delete query; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_GetLeaves"); - delete query; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_GetLeaves"); - delete query; - return RT_Failure; - } - return RT_None; -} - - -SIDX_C_DLL void IndexItem_Destroy(IndexItemH item) -{ - VALIDATE_POINTER0(item, "IndexItem_Destroy"); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - if (it != 0) delete it; -} - -SIDX_C_DLL RTError IndexItem_GetData( IndexItemH item, - uint8_t** data, - uint64_t* length) -{ - VALIDATE_POINTER1(item, "IndexItem_GetData", RT_Failure); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - uint8_t* p_data; - uint32_t* l= new uint32_t; - - it->getData(*l,&p_data); - *length = (uint64_t)*l; - *data = (uint8_t*) malloc (*length * sizeof(uint8_t)); - - memcpy(*data, p_data, *length); - delete[] p_data; - delete l; - return RT_None; - -} - -SIDX_C_DLL int64_t IndexItem_GetID(IndexItemH item) -{ - VALIDATE_POINTER1(item, "IndexItem_GetID",0); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - int64_t value = it->getIdentifier(); - return value; -} - -SIDX_C_DLL RTError IndexItem_GetBounds( IndexItemH item, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension) -{ - VALIDATE_POINTER1(item, "IndexItem_GetBounds", RT_Failure); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - - libsupermesh::SpatialIndex::IShape* s; - it->getShape(&s); - - libsupermesh::SpatialIndex::Region *bounds = new libsupermesh::SpatialIndex::Region(); - s->getMBR(*bounds); - - if (bounds == 0) { - *nDimension = 0; - delete bounds; - delete s; - return RT_None; - } - *nDimension = bounds->getDimension(); - - *ppdMin = (double*) malloc (*nDimension * sizeof(double)); - *ppdMax = (double*) malloc (*nDimension * sizeof(double)); - - if (ppdMin == NULL || ppdMax == NULL) { - Error_PushError(RT_Failure, - "Unable to allocation bounds array(s)", - "IndexItem_GetBounds"); - return RT_Failure; - } - - for (uint32_t i=0; i< *nDimension; ++i) { - (*ppdMin)[i] = bounds->getLow(i); - (*ppdMax)[i] = bounds->getHigh(i); - } - delete bounds; - delete s; - return RT_None; -} -SIDX_C_DLL IndexPropertyH IndexProperty_Create() -{ - libsupermesh::Tools::PropertySet* ps = GetDefaults(); - libsupermesh::Tools::Variant var; - return (IndexPropertyH)ps; -} - -SIDX_C_DLL void IndexProperty_Destroy(IndexPropertyH hProp) -{ - VALIDATE_POINTER0(hProp, "IndexProperty_Destroy"); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - if (prop != 0) delete prop; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexType(IndexPropertyH hProp, - RTIndexType value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexType", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (!(value == RT_RTree || value == RT_MVRTree || value == RT_TPRTree)) { - throw std::runtime_error("Inputted value is not a valid index type"); - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexType", var); - - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexType"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexType"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexType"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTIndexType IndexProperty_GetIndexType(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexType", RT_InvalidIndexType); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexType must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexType"); - return RT_InvalidIndexType; - } - return (RTIndexType) var.m_val.ulVal; - } - - Error_PushError(RT_Failure, - "Property IndexType was empty", - "IndexProperty_GetIndexType"); - return RT_InvalidIndexType; - -} - -SIDX_C_DLL RTError IndexProperty_SetDimension(IndexPropertyH hProp, uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetDimension", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("Dimension", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetDimension"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetDimension"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetDimension"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetDimension(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetDimension", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Dimension"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexType must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetDimension"); - return 0; - } - - return var.m_val.ulVal; - } - - // A zero dimension index is invalid. - Error_PushError(RT_Failure, - "Property Dimension was empty", - "IndexProperty_GetDimension"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexVariant( IndexPropertyH hProp, - RTIndexVariant value) -{ - using namespace libsupermesh::SpatialIndex; - - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexVariant", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - - try - { - - if (!(value == RT_Linear || value == RT_Quadratic || value == RT_Star)) { - throw std::runtime_error("Inputted value is not a valid index variant"); - } - - var.m_varType = libsupermesh::Tools::VT_LONG; - RTIndexType type = IndexProperty_GetIndexType(hProp); - if (type == RT_InvalidIndexType ) { - Error_PushError(RT_Failure, - "Index type is not properly set", - "IndexProperty_SetIndexVariant"); - return RT_Failure; - } - if (type == RT_RTree) { - var.m_val.lVal = static_cast(value); - prop->setProperty("TreeVariant", var); - } else if (type == RT_MVRTree) { - var.m_val.lVal = static_cast(value); - prop->setProperty("TreeVariant", var); - } else if (type == RT_TPRTree) { - var.m_val.lVal = static_cast(value); - prop->setProperty("TreeVariant", var); - } - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexVariant"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTIndexVariant IndexProperty_GetIndexVariant(IndexPropertyH hProp) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_GetIndexVariant", - RT_InvalidIndexVariant); - - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("TreeVariant"); - - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG) { - Error_PushError(RT_Failure, - "Property IndexVariant must be libsupermesh::Tools::VT_LONG", - "IndexProperty_GetIndexVariant"); - return RT_InvalidIndexVariant; - } - - return static_cast(var.m_val.lVal); - } - - // if we didn't get anything, we're returning an error condition - Error_PushError(RT_Failure, - "Property IndexVariant was empty", - "IndexProperty_GetIndexVariant"); - return RT_InvalidIndexVariant; - -} - -SIDX_C_DLL RTError IndexProperty_SetIndexStorage( IndexPropertyH hProp, - RTStorageType value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexStorage", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (!(value == RT_Disk || value == RT_Memory || value == RT_Custom)) { - throw std::runtime_error("Inputted value is not a valid index storage type"); - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexStorageType", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexStorage"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexStorage"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexStorage"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTStorageType IndexProperty_GetIndexStorage(IndexPropertyH hProp) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_GetIndexStorage", - RT_InvalidStorageType); - - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexStorageType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexStorage must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexStorage"); - return RT_InvalidStorageType; - } - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - Error_PushError(RT_Failure, - "Property IndexStorage was empty", - "IndexProperty_GetIndexStorage"); - return RT_InvalidStorageType; - -} - -SIDX_C_DLL RTError IndexProperty_SetIndexCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetIndexCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property IndexCapacity was empty", - "IndexProperty_GetIndexCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetLeafCapacity( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetLeafCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("LeafCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetLeafCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetLeafCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetLeafCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetLeafCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetLeafCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("LeafCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property LeafCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetLeafCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property LeafCapacity was empty", - "IndexProperty_GetLeafCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetPagesize( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetPagesize", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("PageSize", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetPagesize"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetPagesize"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetPagesize"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetPagesize(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetPagesize", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("PageSize"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property PageSize must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetPagesize"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property PageSize was empty", - "IndexProperty_GetPagesize"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetLeafPoolCapacity( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetLeafPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("LeafPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetLeafPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetLeafPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetLeafPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetLeafPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetLeafPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("LeafPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetLeafPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property LeafPoolCapacity was empty", - "IndexProperty_GetLeafPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexPoolCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetIndexPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property IndexPoolCapacity was empty", - "IndexProperty_GetIndexPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetRegionPoolCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetRegionPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("RegionPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetRegionPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetRegionPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetRegionPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetRegionPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetRegionPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("RegionPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetRegionPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property RegionPoolCapacity was empty", - "IndexProperty_GetRegionPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetPointPoolCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetPointPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("PointPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetPointPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetPointPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetPointPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetPointPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetPointPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("PointPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetPointPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property PointPoolCapacity was empty", - "IndexProperty_GetPointPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetNearMinimumOverlapFactor( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetNearMinimumOverlapFactor", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("NearMinimumOverlapFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetNearMinimumOverlapFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetNearMinimumOverlapFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetNearMinimumOverlapFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetNearMinimumOverlapFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetNearMinimumOverlapFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("NearMinimumOverlapFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetNearMinimumOverlapFactor"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property NearMinimumOverlapFactor was empty", - "IndexProperty_GetNearMinimumOverlapFactor"); - return 0; -} - - -SIDX_C_DLL RTError IndexProperty_SetBufferingCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetBufferingCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("Capacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetBufferingCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetBufferingCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetBufferingCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetBufferingCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetBufferingCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Capacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property Capacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetBufferingCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property Capacity was empty", - "IndexProperty_GetBufferingCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetEnsureTightMBRs( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetEnsureTightMBRs", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (value > 1 ) { - Error_PushError(RT_Failure, - "EnsureTightMBRs is a boolean value and must be 1 or 0", - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = value != 0; - prop->setProperty("EnsureTightMBRs", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetEnsureTightMBRs(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetEnsureTightMBRs", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("EnsureTightMBRs"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) { - Error_PushError(RT_Failure, - "Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL", - "IndexProperty_GetEnsureTightMBRs"); - return 0; - } - - return var.m_val.blVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property EnsureTightMBRs was empty", - "IndexProperty_GetEnsureTightMBRs"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetWriteThrough(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetWriteThrough", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (value > 1 ) { - Error_PushError(RT_Failure, - "WriteThrough is a boolean value and must be 1 or 0", - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = value != 0; - prop->setProperty("WriteThrough", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetWriteThrough(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetWriteThrough", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("WriteThrough"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) { - Error_PushError(RT_Failure, - "Property WriteThrough must be libsupermesh::Tools::VT_BOOL", - "IndexProperty_GetWriteThrough"); - return 0; - } - - return var.m_val.blVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property WriteThrough was empty", - "IndexProperty_GetWriteThrough"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetOverwrite(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetOverwrite", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (value > 1 ) { - Error_PushError(RT_Failure, - "Overwrite is a boolean value and must be 1 or 0", - "IndexProperty_SetOverwrite"); - return RT_Failure; - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = value != 0; - prop->setProperty("Overwrite", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetOverwrite"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetOverwrite"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetOverwrite"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetOverwrite(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetOverwrite", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Overwrite"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) { - Error_PushError(RT_Failure, - "Property Overwrite must be libsupermesh::Tools::VT_BOOL", - "IndexProperty_GetOverwrite"); - return 0; - } - - return var.m_val.blVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property Overwrite was empty", - "IndexProperty_GetOverwrite"); - return 0; -} - - -SIDX_C_DLL RTError IndexProperty_SetFillFactor( IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetFillFactor", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("FillFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFillFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFillFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFillFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetFillFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFillFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FillFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property FillFactor must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetFillFactor"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FillFactor was empty", - "IndexProperty_GetFillFactor"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetSplitDistributionFactor( IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetSplitDistributionFactor", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("SplitDistributionFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetSplitDistributionFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetSplitDistributionFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetSplitDistributionFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetSplitDistributionFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetSplitDistributionFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("SplitDistributionFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetSplitDistributionFactor"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property SplitDistributionFactor was empty", - "IndexProperty_GetSplitDistributionFactor"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetTPRHorizon(IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetTPRHorizon", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("Horizon", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetTPRHorizon"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetTPRHorizon"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetTPRHorizon"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetTPRHorizon(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetTPRHorizon", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Horizon"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property Horizon must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetTPRHorizon"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property Horizon was empty", - "IndexProperty_GetTPRHorizon"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetReinsertFactor( IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetReinsertFactor", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("ReinsertFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetReinsertFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetReinsertFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetReinsertFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetReinsertFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetReinsertFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("ReinsertFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetReinsertFactor"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property ReinsertFactor was empty", - "IndexProperty_GetReinsertFactor"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetFileName( IndexPropertyH hProp, - const char* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetFileName", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = STRDUP(value); // not sure if we should copy here - prop->setProperty("FileName", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFileName"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFileName"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFileName"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL char* IndexProperty_GetFileName(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFileName", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FileName"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) { - Error_PushError(RT_Failure, - "Property FileName must be libsupermesh::Tools::VT_PCHAR", - "IndexProperty_GetFileName"); - return NULL; - } - - return STRDUP(var.m_val.pcVal); - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FileName was empty", - "IndexProperty_GetFileName"); - return NULL; -} - - -SIDX_C_DLL RTError IndexProperty_SetFileNameExtensionDat( IndexPropertyH hProp, - const char* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetFileNameExtensionDat", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = STRDUP(value); // not sure if we should copy here - prop->setProperty("FileNameDat", var); - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFileNameExtensionDat"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFileNameExtensionDat"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFileNameExtensionDat"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL char* IndexProperty_GetFileNameExtensionDat(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFileNameExtensionDat", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FileNameDat"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) { - Error_PushError(RT_Failure, - "Property FileNameDat must be libsupermesh::Tools::VT_PCHAR", - "IndexProperty_GetFileNameExtensionDat"); - return NULL; - } - - return STRDUP(var.m_val.pcVal); - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FileNameDat was empty", - "IndexProperty_GetFileNameExtensionDat"); - return NULL; -} - -SIDX_C_DLL RTError IndexProperty_SetFileNameExtensionIdx( IndexPropertyH hProp, - const char* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetFileNameExtensionIdx", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = STRDUP(value); // not sure if we should copy here - prop->setProperty("FileNameIdx", var); - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFileNameExtensionIdx"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFileNameExtensionIdx"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFileNameExtensionIdx"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL char* IndexProperty_GetFileNameExtensionIdx(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFileNameExtensionIdx", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FileNameIdx"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) { - Error_PushError(RT_Failure, - "Property FileNameIdx must be libsupermesh::Tools::VT_PCHAR", - "IndexProperty_GetFileNameExtensionIdx"); - return NULL; - } - - return STRDUP(var.m_val.pcVal); - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FileNameIdx was empty", - "IndexProperty_GetFileNameExtensionIdx"); - return NULL; -} - -SIDX_C_DLL RTError IndexProperty_SetCustomStorageCallbacksSize(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetCustomStorageCallbacksSize", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("CustomStorageCallbacksSize", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetCustomStorageCallbacksSize"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetCustomStorageCallbacksSize"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetCustomStorageCallbacksSize"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetCustomStorageCallbacksSize(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetCustomStorageCallbacksSize", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("CustomStorageCallbacksSize"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property CustomStorageCallbacksSize must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetCustomStorageCallbacksSize"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property CustomStorageCallbacksSize was empty", - "IndexProperty_GetCustomStorageCallbacksSize"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetCustomStorageCallbacks( IndexPropertyH hProp, - const void* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetCustomStorageCallbacks", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - // check if the CustomStorageCallbacksSize is alright, so we can make a copy of the passed in structure - libsupermesh::Tools::Variant varSize; - varSize = prop->getProperty("CustomStorageCallbacksSize"); - if ( varSize.m_val.ulVal != sizeof(libsupermesh::SpatialIndex::StorageManager::CustomStorageManagerCallbacks) ) - { - std::ostringstream ss; - ss << "The supplied storage callbacks size is wrong, expected " - << sizeof(libsupermesh::SpatialIndex::StorageManager::CustomStorageManagerCallbacks) - << ", got " << varSize.m_val.ulVal; - Error_PushError(RT_Failure, - ss.str().c_str(), - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PVOID; - var.m_val.pvVal = value ? - new libsupermesh::SpatialIndex::StorageManager::CustomStorageManagerCallbacks( - *static_cast(value) - ) - : 0; - prop->setProperty("CustomStorageCallbacks", var); - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL void* IndexProperty_GetCustomStorageCallbacks(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetCustomStorageCallbacks", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("CustomStorageCallbacks"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PVOID) { - Error_PushError(RT_Failure, - "Property CustomStorageCallbacks must be libsupermesh::Tools::VT_PVOID", - "IndexProperty_GetCustomStorageCallbacks"); - return NULL; - } - - return var.m_val.pvVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property CustomStorageCallbacks was empty", - "IndexProperty_GetCustomStorageCallbacks"); - return NULL; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexID(IndexPropertyH hProp, - int64_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexID", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = value; - prop->setProperty("IndexIdentifier", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexID"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexID"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexID"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL int64_t IndexProperty_GetIndexID(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexID", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexIdentifier"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) { - Error_PushError(RT_Failure, - "Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG", - "IndexProperty_GetIndexID"); - return 0; - } - - return var.m_val.llVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property IndexIdentifier was empty", - "IndexProperty_GetIndexID"); - return 0; -} - -SIDX_C_DLL void* SIDX_NewBuffer(size_t length) -{ - return new char[length]; -} - -SIDX_DLL RTError IndexProperty_SetResultSetLimit(IndexPropertyH hProp, int64_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetResultSetLimit", RT_Failure); - - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = value; - prop->setProperty("ResultSetLimit", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetResultSetLimit"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetResultSetLimit"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetResultSetLimit"); - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL int64_t IndexProperty_GetResultSetLimit(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetResultSetLimit", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("ResultSetLimit"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) { - Error_PushError(RT_Failure, - "Property ResultSetLimit must be libsupermesh::Tools::VT_LONGLONG", - "IndexProperty_GetResultSetLimit"); - return 0; - } - - return var.m_val.llVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property ResultSetLimit was empty", - "IndexProperty_GetResultSetLimit"); - return 0; -} - - -SIDX_C_DLL void SIDX_DeleteBuffer(void* buffer) -{ - delete [] static_cast(buffer); -} - - -SIDX_C_DLL char* SIDX_Version() -{ - - std::ostringstream ot; - -#ifdef SIDX_RELEASE_NAME - ot << SIDX_RELEASE_NAME; -#else - ot << "1.3.2"; -#endif - - std::string out(ot.str()); - return STRDUP(out.c_str()); - -} -IDX_C_END - -#ifdef _WIN32 -# pragma warning(pop) -#endif - - diff --git a/spatialindex-1.8.5/src/libspatialindex.pc.in b/spatialindex-1.8.5/src/libspatialindex.pc.in deleted file mode 100644 index d1a58e6..0000000 --- a/spatialindex-1.8.5/src/libspatialindex.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: libspatialindex -Description: Generic C/C++ library for spatial indexing -Requires: -Version: @PACKAGE_VERSION@ -Libs: -L@libdir@ -Cflags: -I${includedir}/spatialindex @CFLAGS@ @CPPFLAGS@ - diff --git a/spatialindex-1.8.5/src/mvrtree/Index.cc b/spatialindex-1.8.5/src/mvrtree/Index.cc deleted file mode 100644 index 9d121ef..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Index.cc +++ /dev/null @@ -1,442 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "MVRTree.h" -#include "Node.h" -#include "Leaf.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::MVRTree; - -Index::~Index() -{ -} - -Index::Index(libsupermesh::SpatialIndex::MVRTree::MVRTree* pTree, id_type id, uint32_t level) : Node(pTree, id, level, pTree->m_indexCapacity) -{ -} - -NodePtr Index::chooseSubtree(const TimeRegion& mbr, uint32_t insertionLevel, std::stack& pathBuffer) -{ - if (m_level == insertionLevel) return NodePtr(this, &(m_pTree->m_indexPool)); - - pathBuffer.push(m_identifier); - - uint32_t child = 0; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - child = findLeastEnlargement(mbr); - break; - case RV_RSTAR: - if (m_level == 1) - { - // if this node points to leaves... - child = findLeastOverlap(mbr); - } - else - { - child = findLeastEnlargement(mbr); - } - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::chooseSubtree: Tree variant not supported."); - } - assert (child != std::numeric_limits::max()); - - NodePtr n = m_pTree->readNode(m_pIdentifier[child]); - NodePtr ret = n->chooseSubtree(mbr, insertionLevel, pathBuffer); - assert(n.unique()); - if (ret.get() == n.get()) n.relinquish(); - - return ret; -} - -NodePtr Index::findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // check live nodes only. - if (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max()) continue; - //if (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max() || - // m_ptrMBR[cChild]->m_startTime > mbr.m_startTime) continue; - - if (m_ptrMBR[cChild]->containsRegion(mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findLeaf(mbr, id, pathBuffer); - if (n.get() == l.get()) n.relinquish(); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} - -void Index::split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_indexPool.acquire(); - pRight = m_pTree->m_indexPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Index(m_pTree, m_identifier, m_level), &(m_pTree->m_indexPool)); - if (pRight.get() == 0) pRight = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(0, 0, *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(0, 0, *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - } -} - -uint32_t Index::findLeastEnlargement(const TimeRegion& r) const -{ - double area = std::numeric_limits::max(); - uint32_t best = std::numeric_limits::max(); - - TimeRegionPtr t = m_pTree->m_regionPool.acquire(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // if this child is already dead do not consider it. - if (m_ptrMBR[cChild]->m_endTime <= r.m_startTime) continue; - - m_ptrMBR[cChild]->getCombinedRegion(*t, r); - - double a = m_ptrMBR[cChild]->getArea(); - double enl = t->getArea() - a; - - if (enl < area) - { - area = enl; - best = cChild; - } - else if ( - enl > area - std::numeric_limits::epsilon() && - enl < area + std::numeric_limits::epsilon()) - { - if (a < m_ptrMBR[best]->getArea()) best = cChild; - } - } - -#ifndef NDEBUG - if (best == std::numeric_limits::max()) - { - std::ostringstream s; - s << "findLeastEnlargement: All entries of node " << m_identifier << " are dead."; - throw libsupermesh::Tools::IllegalStateException(s.str()); - } -#endif - - return best; -} - -uint32_t Index::findLeastOverlap(const TimeRegion& r) const -{ - OverlapEntry** entries = new OverlapEntry*[m_children]; - - double leastOverlap = std::numeric_limits::max(); - double me = std::numeric_limits::max(); - OverlapEntry* best = 0; - uint32_t cLiveEntries = 0; - - // find combined region and enlargement of every entry and store it. - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_ptrMBR[cChild]->m_endTime <= r.m_startTime) continue; - - try - { - entries[cLiveEntries] = new OverlapEntry(); - } - catch (...) - { - for (uint32_t i = 0; i < cLiveEntries; ++i) delete entries[i]; - delete[] entries; - throw; - } - - entries[cLiveEntries]->m_index = cChild; - entries[cLiveEntries]->m_original = m_ptrMBR[cChild]; - entries[cLiveEntries]->m_combined = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->getCombinedRegion(*(entries[cLiveEntries]->m_combined), r); - entries[cLiveEntries]->m_oa = entries[cLiveEntries]->m_original->getArea(); - entries[cLiveEntries]->m_ca = entries[cLiveEntries]->m_combined->getArea(); - entries[cLiveEntries]->m_enlargement = entries[cLiveEntries]->m_ca - entries[cLiveEntries]->m_oa; - - if (entries[cLiveEntries]->m_enlargement < me) - { - me = entries[cLiveEntries]->m_enlargement; - best = entries[cLiveEntries]; - } - else if (entries[cLiveEntries]->m_enlargement == me && entries[cLiveEntries]->m_oa < best->m_oa) - { - best = entries[cLiveEntries]; - } - ++cLiveEntries; - } - -#ifndef NDEBUG - if (cLiveEntries == 0) - { - std::ostringstream s; - s << "findLeastOverlap: All entries of node " << m_identifier << " are dead."; - throw libsupermesh::Tools::IllegalStateException(s.str()); - } -#endif - - if (me < -std::numeric_limits::epsilon() || me > std::numeric_limits::epsilon()) - { - uint32_t cIterations; - - if (cLiveEntries > m_pTree->m_nearMinimumOverlapFactor) - { - // sort entries in increasing order of enlargement. - ::qsort(entries, cLiveEntries, - sizeof(OverlapEntry*), - OverlapEntry::compareEntries); - assert(entries[0]->m_enlargement <= entries[m_children - 1]->m_enlargement); - - cIterations = m_pTree->m_nearMinimumOverlapFactor; - } - else - { - cIterations = cLiveEntries; - } - - // calculate overlap of most important original entries (near minimum overlap cost). - for (uint32_t cIndex = 0; cIndex < cIterations; ++cIndex) - { - double dif = 0.0; - OverlapEntry* e = entries[cIndex]; - - for (uint32_t cChild = 0; cChild < cLiveEntries; ++cChild) - { - if (cIndex != cChild) - { - double f = e->m_combined->getIntersectingArea(*(entries[cChild]->m_original)); - if (f != 0.0) dif += f - e->m_original->getIntersectingArea(*(entries[cChild]->m_original)); - } - } // for (cChild) - - if (dif < leastOverlap) - { - leastOverlap = dif; - best = e; - } - else if (dif == leastOverlap) - { - if (e->m_enlargement == best->m_enlargement) - { - // keep the one with least area. - if (e->m_original->getArea() < best->m_original->getArea()) best = e; - } - else - { - // keep the one with least enlargement. - if (e->m_enlargement < best->m_enlargement) best = e; - } - } - } // for (cIndex) - } - - uint32_t ret = best->m_index; - - for (uint32_t cChild = 0; cChild < cLiveEntries; ++cChild) - { - delete entries[cChild]; - } - delete[] entries; - - return ret; -} - -void Index::adjustTree(Node* n, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n->m_identifier) break; - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - bool bContained = m_nodeMBR.containsRegion(n->m_nodeMBR); - bool bTouches = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool bRecompute = (! bContained || (bTouches && m_pTree->m_bTightMBRs)); - - // we should not adjust time here - double st = m_ptrMBR[child]->m_startTime; - double en = m_ptrMBR[child]->m_endTime; - *(m_ptrMBR[child]) = n->m_nodeMBR; - m_ptrMBR[child]->m_startTime = st; - m_ptrMBR[child]->m_endTime = en; - - if (bRecompute) - { - // no need to update times here. The inserted MBR is younger than all nodes. - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - m_pTree->writeNode(this); - - if (bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} - -void Index::adjustTree(Node* n, Node* nn, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child, child2 = m_capacity; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == nn->m_identifier) child2 = child; - if (m_pIdentifier[child] == n->m_identifier) break; - } - - if (child2 == m_capacity) - { - for (child2 = child + 1; child2 < m_children; ++child2) - { - if (m_pIdentifier[child2] == nn->m_identifier) break; - } - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - // 3. the SIBLING MBR is touching. - bool b1 = m_nodeMBR.containsRegion(n->m_nodeMBR); - bool b2 = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool b3 = m_nodeMBR.touchesRegion(*(m_ptrMBR[child2])); - bool bRecompute = (! b1) || ((b2 || b3) && m_pTree->m_bTightMBRs); - - // we should not adjust time here - double st = m_ptrMBR[child]->m_startTime; - double en = m_ptrMBR[child]->m_endTime; - *(m_ptrMBR[child]) = n->m_nodeMBR; - m_ptrMBR[child]->m_startTime = st; - m_ptrMBR[child]->m_endTime = en; - - st = m_ptrMBR[child2]->m_startTime; - en = m_ptrMBR[child2]->m_endTime; - *(m_ptrMBR[child2]) = nn->m_nodeMBR; - m_ptrMBR[child2]->m_startTime = st; - m_ptrMBR[child2]->m_endTime = en; - - if (bRecompute) - { - // no need to update times here. The inserted MBR is younger than all nodes. - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - m_pTree->writeNode(this); - - if (bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} diff --git a/spatialindex-1.8.5/src/mvrtree/Index.h b/spatialindex-1.8.5/src/mvrtree/Index.h deleted file mode 100644 index 682359c..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Index.h +++ /dev/null @@ -1,86 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class Index : public Node - { - public: - virtual ~Index(); - - private: - Index(MVRTree* pTree, id_type id, uint32_t level); - - virtual NodePtr chooseSubtree(const TimeRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& left, NodePtr& right, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - - uint32_t findLeastEnlargement(const TimeRegion&) const; - uint32_t findLeastOverlap(const TimeRegion&) const; - - void adjustTree(Node*, std::stack&); - void adjustTree(Node* n, Node* nn, std::stack& pathBuffer); - - class OverlapEntry - { - public: - uint32_t m_index; - double m_enlargement; - TimeRegionPtr m_original; - TimeRegionPtr m_combined; - double m_oa; - double m_ca; - - static int compareEntries(const void* pv1, const void* pv2) - { - OverlapEntry* pe1 = * (OverlapEntry**) pv1; - OverlapEntry* pe2 = * (OverlapEntry**) pv2; - - if (pe1->m_enlargement < pe2->m_enlargement) return -1; - if (pe1->m_enlargement > pe2->m_enlargement) return 1; - return 0; - } - }; // OverlapEntry - - friend class MVRTree; - friend class Node; - }; // Index - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/Leaf.cc b/spatialindex-1.8.5/src/mvrtree/Leaf.cc deleted file mode 100644 index 82a0951..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Leaf.cc +++ /dev/null @@ -1,116 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "MVRTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::MVRTree; - -Leaf::~Leaf() -{ -} - -Leaf::Leaf(libsupermesh::SpatialIndex::MVRTree::MVRTree* pTree, id_type id): Node(pTree, id, 0, pTree->m_leafCapacity) -{ -} - -NodePtr Leaf::chooseSubtree(const TimeRegion&, uint32_t, std::stack&) -{ - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - return NodePtr(this, &(m_pTree->m_leafPool)); -} - -NodePtr Leaf::findLeaf(const TimeRegion& mbr, id_type id, std::stack&) -{ - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - if (m_pIdentifier[cChild] == id && static_cast(mbr) == static_cast(*(m_ptrMBR[cChild]))) - return NodePtr(this, &(m_pTree->m_leafPool)); - } - - return NodePtr(); -} - -void Leaf::split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Leaf::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_leafPool.acquire(); - pRight = m_pTree->m_leafPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - if (pRight.get() == 0) pRight = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(m_pDataLength[g1[cIndex]], m_pData[g1[cIndex]], *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g1[cIndex]] = 0; - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(m_pDataLength[g2[cIndex]], m_pData[g2[cIndex]], *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g2[cIndex]] = 0; - } -} diff --git a/spatialindex-1.8.5/src/mvrtree/Leaf.h b/spatialindex-1.8.5/src/mvrtree/Leaf.h deleted file mode 100644 index 9a170da..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Leaf.h +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class Leaf : public Node - { - public: - virtual ~Leaf(); - - private: - Leaf(MVRTree* pTree, id_type id); - - virtual NodePtr chooseSubtree(const TimeRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& left, NodePtr& right, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - - friend class MVRTree; - friend class Node; - }; // Leaf - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/MVRTree.cc b/spatialindex-1.8.5/src/mvrtree/MVRTree.cc deleted file mode 100644 index 8a41480..0000000 --- a/spatialindex-1.8.5/src/mvrtree/MVRTree.cc +++ /dev/null @@ -1,1365 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "Node.h" -#include "Leaf.h" -#include "Index.h" -#include "MVRTree.h" - -#include - -using namespace libsupermesh::SpatialIndex::MVRTree; - -libsupermesh::SpatialIndex::MVRTree::Data::Data(uint32_t len, byte* pData, TimeRegion& r, id_type id) - : m_id(id), m_region(r), m_pData(0), m_dataLength(len) -{ - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, pData, m_dataLength); - } -} - -libsupermesh::SpatialIndex::MVRTree::Data::~Data() -{ - delete[] m_pData; -} - -libsupermesh::SpatialIndex::MVRTree::Data* libsupermesh::SpatialIndex::MVRTree::Data::clone() -{ - return new Data(m_dataLength, m_pData, m_region, m_id); -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::MVRTree::Data::getIdentifier() const -{ - return m_id; -} - -void libsupermesh::SpatialIndex::MVRTree::Data::getShape(IShape** out) const -{ - *out = new TimeRegion(m_region); -} - -void libsupermesh::SpatialIndex::MVRTree::Data::getData(uint32_t& len, byte** data) const -{ - len = m_dataLength; - *data = 0; - - if (m_dataLength > 0) - { - *data = new byte[m_dataLength]; - memcpy(*data, m_pData, m_dataLength); - } -} - -uint32_t libsupermesh::SpatialIndex::MVRTree::Data::getByteArraySize() -{ - return - sizeof(id_type) + - sizeof(uint32_t) + - m_dataLength + - m_region.getByteArraySize(); -} - -void libsupermesh::SpatialIndex::MVRTree::Data::loadFromByteArray(const byte* ptr) -{ - memcpy(&m_id, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - delete[] m_pData; - m_pData = 0; - - memcpy(&m_dataLength, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, ptr, m_dataLength); - ptr += m_dataLength; - } - - m_region.loadFromByteArray(ptr); -} - -void libsupermesh::SpatialIndex::MVRTree::Data::storeToByteArray(byte** data, uint32_t& len) -{ - // it is thread safe this way. - uint32_t regionsize; - byte* regiondata = 0; - m_region.storeToByteArray(®iondata, regionsize); - - len = sizeof(id_type) + sizeof(uint32_t) + m_dataLength + regionsize; - - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_id, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_dataLength, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - memcpy(ptr, m_pData, m_dataLength); - ptr += m_dataLength; - } - - memcpy(ptr, regiondata, regionsize); - delete[] regiondata; - // ptr += regionsize; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::MVRTree::returnMVRTree(libsupermesh::SpatialIndex::IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::SpatialIndex::ISpatialIndex* si = new libsupermesh::SpatialIndex::MVRTree::MVRTree(sm, ps); - return si; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::MVRTree::createNewMVRTree( - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - MVRTreeVariant rv, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = fillFactor; - ps.setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = indexCapacity; - ps.setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = leafCapacity; - ps.setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = dimension; - ps.setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = rv; - ps.setProperty("TreeVariant", var); - - ISpatialIndex* ret = returnMVRTree(sm, ps); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var = ps.getProperty("IndexIdentifier"); - indexIdentifier = var.m_val.llVal; - - return ret; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::MVRTree::loadMVRTree(IStorageManager& sm, id_type indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = indexIdentifier; - ps.setProperty("IndexIdentifier", var); - - return returnMVRTree(sm, ps); -} - -libsupermesh::SpatialIndex::MVRTree::MVRTree::MVRTree(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_pStorageManager(&sm), - m_headerID(StorageManager::NewPage), - m_treeVariant(RV_RSTAR), - m_fillFactor(0.7), - m_indexCapacity(100), - m_leafCapacity(100), - m_nearMinimumOverlapFactor(32), - m_splitDistributionFactor(0.4), - m_reinsertFactor(0.3), - m_strongVersionOverflow(0.8), - //m_strongVersionUnderflow(0.2), - m_versionUnderflow(0.3), - m_dimension(2), - m_bTightMBRs(true), - m_bHasVersionCopied(false), - m_currentTime(0.0), - m_pointPool(500), - m_regionPool(1000), - m_indexPool(100), - m_leafPool(100) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - libsupermesh::Tools::Variant var = ps.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType == libsupermesh::Tools::VT_LONGLONG) m_headerID = var.m_val.llVal; - else if (var.m_varType == libsupermesh::Tools::VT_LONG) m_headerID = var.m_val.lVal; - // for backward compatibility only. - else throw libsupermesh::Tools::IllegalArgumentException("MVRTree: Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - initOld(ps); - } - else - { - initNew(ps); - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = m_headerID; - ps.setProperty("IndexIdentifier", var); - } -} - -libsupermesh::SpatialIndex::MVRTree::MVRTree::~MVRTree() -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - storeHeader(); -} - -// -// ISpatialIndex interface -// - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&shape); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IInterval interface."); - if (ti->getLowerBound() < m_currentTime) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape start time is older than tree current time."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - // convert the shape into a TimeRegion (R-Trees index regions only; i.e., approximations of the shapes). - Region mbrold; - shape.getMBR(mbrold); - - TimeRegionPtr mbr = m_regionPool.acquire(); - mbr->makeDimension(mbrold.m_dimension); - - memcpy(mbr->m_pLow, mbrold.m_pLow, mbrold.m_dimension * sizeof(double)); - memcpy(mbr->m_pHigh, mbrold.m_pHigh, mbrold.m_dimension * sizeof(double)); - mbr->m_startTime = ti->getLowerBound(); - mbr->m_endTime = std::numeric_limits::max(); - - byte* buffer = 0; - - if (len > 0) - { - buffer = new byte[len]; - memcpy(buffer, pData, len); - } - - insertData_impl(len, buffer, *mbr, id); - // the buffer is stored in the tree. Do not delete here. -} - -bool libsupermesh::SpatialIndex::MVRTree::MVRTree::deleteData(const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("deleteData: Shape has the wrong number of dimensions."); - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&shape); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("deleteData: Shape does not support the libsupermesh::Tools::IInterval interface."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - Region mbrold; - shape.getMBR(mbrold); - - TimeRegionPtr mbr = m_regionPool.acquire(); - mbr->makeDimension(mbrold.m_dimension); - - memcpy(mbr->m_pLow, mbrold.m_pLow, mbrold.m_dimension * sizeof(double)); - memcpy(mbr->m_pHigh, mbrold.m_pHigh, mbrold.m_dimension * sizeof(double)); - mbr->m_startTime = ti->getLowerBound(); - mbr->m_endTime = ti->getUpperBound(); - - bool ret = deleteData_impl(*mbr, id); - - return ret; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::containsWhatQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsWhatQuery: Shape has the wrong number of dimensions."); - rangeQuery(ContainmentQuery, query, v); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::intersectsWithQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsWithQuery: Shape has the wrong number of dimensions."); - rangeQuery(IntersectionQuery, query, v); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::pointLocationQuery(const Point& query, IVisitor& v) -{ - if (query.m_dimension != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape has the wrong number of dimensions."); - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&query); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape does not support the libsupermesh::Tools::IInterval interface."); - TimeRegion r(query, query, *ti); - rangeQuery(IntersectionQuery, r, v); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::nearestNeighborQuery(uint32_t, const IShape&, IVisitor&, INearestNeighborComparator&) -{ - throw libsupermesh::Tools::IllegalStateException("nearestNeighborQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - NNComparator nnc; - nearestNeighborQuery(k, query, v, nnc); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::selfJoinQuery(const IShape&, IVisitor&) -{ - throw libsupermesh::Tools::IllegalStateException("selfJoinQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::queryStrategy(IQueryStrategy& qs) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - id_type next = m_roots[m_roots.size() - 1].m_id; - bool hasNext = true; - - while (hasNext) - { - NodePtr n = readNode(next); - qs.getNextEntry(*n, next, hasNext); - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::getIndexProperties(libsupermesh::Tools::PropertySet& out) const -{ - libsupermesh::Tools::Variant var; - - // dimension - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_dimension; - out.setProperty("Dimension", var); - - // index capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexCapacity; - out.setProperty("IndexCapacity", var); - - // leaf capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafCapacity; - out.setProperty("LeafCapacity", var); - - // Tree variant - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = m_treeVariant; - out.setProperty("TreeVariant", var); - - // fill factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_fillFactor; - out.setProperty("FillFactor", var); - - // near minimum overlap factor - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_nearMinimumOverlapFactor; - out.setProperty("NearMinimumOverlapFactor", var); - - // split distribution factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_splitDistributionFactor; - out.setProperty("SplitDistributionFactor", var); - - // reinsert factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_reinsertFactor; - out.setProperty("ReinsertFactor", var); - - // tight MBRs - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = m_bTightMBRs; - out.setProperty("EnsureTightMBRs", var); - - // index pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexPool.getCapacity(); - out.setProperty("IndexPoolCapacity", var); - - // leaf pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafPool.getCapacity(); - out.setProperty("LeafPoolCapacity", var); - - // region pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_regionPool.getCapacity(); - out.setProperty("RegionPoolCapacity", var); - - // point pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_pointPool.getCapacity(); - out.setProperty("PointPoolCapacity", var); - - // strong version overflow - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_strongVersionOverflow; - out.setProperty("StrongVersionOverflow", var); - - // strong version underflow - //var.m_varType = libsupermesh::Tools::VT_DOUBLE; - //var.m_val.dblVal = m_strongVersionUnderflow; - //out.setProperty("StrongVersionUnderflow", var); - - // weak version underflow - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_versionUnderflow; - out.setProperty("VersionUnderflow", var); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::addCommand(ICommand* pCommand, CommandType ct) -{ - switch (ct) - { - case CT_NODEREAD: - m_readNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEWRITE: - m_writeNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEDELETE: - m_deleteNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - } -} - -bool libsupermesh::SpatialIndex::MVRTree::MVRTree::isIndexValid() -{ - bool ret = true; - std::stack st; - std::set visitedEntries; - uint32_t degenerateEntries = 0; - - for (uint32_t cRoot = 0; cRoot < m_roots.size(); ++cRoot) - { - NodePtr root = readNode(m_roots[cRoot].m_id); - - if (root->m_level != m_stats.m_treeHeight[cRoot] - 1) - { - std::cerr << "Invalid tree height." << std::endl; - return false; - } - - ValidateEntry e(0, root->m_nodeMBR, root); - e.m_bIsDead = (root->m_nodeMBR.m_endTime < std::numeric_limits::max()) ? true : false; - st.push(e); - } - - while (! st.empty()) - { - ValidateEntry e = st.top(); st.pop(); - - std::set::iterator itSet = visitedEntries.find(e.m_pNode->m_identifier); - if (itSet == visitedEntries.end()) - { - visitedEntries.insert(e.m_pNode->m_identifier); - if (e.m_pNode->m_nodeMBR.m_startTime == e.m_pNode->m_nodeMBR.m_endTime) ++degenerateEntries; - } - - TimeRegion tmpRegion; - tmpRegion = m_infiniteRegion; - - for (uint32_t cDim = 0; cDim < tmpRegion.m_dimension; ++cDim) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - tmpRegion.m_pLow[cDim] = std::min(tmpRegion.m_pLow[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pLow[cDim]); - tmpRegion.m_pHigh[cDim] = std::max(tmpRegion.m_pHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - - tmpRegion.m_startTime = e.m_pNode->m_nodeMBR.m_startTime; - tmpRegion.m_endTime = e.m_pNode->m_nodeMBR.m_endTime; - if (! (tmpRegion == e.m_pNode->m_nodeMBR)) - { - std::cerr << "Invalid parent information." << std::endl; - ret = false; - } - - if (! e.m_bIsDead) - { - tmpRegion.m_startTime = e.m_parentMBR.m_startTime; - tmpRegion.m_endTime = e.m_parentMBR.m_endTime; - if (! (tmpRegion == e.m_parentMBR)) - { - std::cerr << "Error in parent (Node id: " << e.m_pNode->m_identifier << ", Parent id: " << e.m_parentID << ")." << std::endl; - ret = false; - } - } - - if (e.m_pNode->m_level != 0) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - NodePtr ptrN = readNode(e.m_pNode->m_pIdentifier[cChild]); - - bool bIsDead = - (e.m_pNode->m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max() || e.m_bIsDead) ? true : false; - - // if the parent says that this child is dead, force it dead since - // this information is not propagated for efficiency and is inconsistent. - if (bIsDead) ptrN->m_nodeMBR.m_endTime = e.m_pNode->m_ptrMBR[cChild]->m_endTime; - - ValidateEntry tmpEntry(e.m_pNode->m_identifier, *(e.m_pNode->m_ptrMBR[cChild]), ptrN); - tmpEntry.m_bIsDead = bIsDead; - st.push(tmpEntry); - } - } - } - - //std::cerr << "Total accessible nodes: " << visitedEntries.size() << std::endl; - //std::cerr << "Degenerate nodes: " << degenerateEntries << std::endl; - - return ret; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::getStatistics(IStatistics** out) const -{ - *out = new Statistics(m_stats); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::initNew(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG || (var.m_val.lVal != RV_LINEAR && var.m_val.lVal != RV_QUADRATIC && var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of MVRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - //((m_treeVariant == RV_LINEAR || m_treeVariant == RV_QUADRATIC) && var.m_val.dblVal > 0.5) || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0) for RSTAR, (0.0, 0.5) for LINEAR and QUADRATIC"); - - m_fillFactor = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 10) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 10"); - - m_indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 10) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 10"); - - m_leafCapacity = var.m_val.ulVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 1 || var.m_val.ulVal > m_indexCapacity || var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be greater than 1"); - - m_dimension = var.m_val.ulVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - // strong version overflow - var = ps.getProperty("StrongVersionOverflow"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property StrongVersionOverflow must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_strongVersionOverflow = var.m_val.dblVal; - } - - // strong version underflow - //var = ps.getProperty("StrongVersionUnderflow"); - //if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - //{ - // if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || - // var.m_val.dblVal <= 0.0 || - // var.m_val.dblVal >= 1.0) throw libsupermesh::Tools::IllegalArgumentException("Property StrongVersionUnderflow must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - // m_strongVersionUnderflow = var.m_val.dblVal; - //} - - // weak version underflow - var = ps.getProperty("VersionUnderflow"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property VersionUnderflow must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_versionUnderflow = var.m_val.dblVal; - } - - m_infiniteRegion.makeInfinite(m_dimension); - - m_stats.m_treeHeight.push_back(1); - m_stats.m_nodesInLevel.push_back(1); - - Leaf root(this, -1); - root.m_nodeMBR.m_startTime = 0.0; - root.m_nodeMBR.m_endTime = std::numeric_limits::max(); - writeNode(&root); - m_roots.push_back(RootEntry(root.m_identifier, root.m_nodeMBR.m_startTime, root.m_nodeMBR.m_endTime)); - - storeHeader(); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::initOld(libsupermesh::Tools::PropertySet& ps) -{ - loadHeader(); - - // only some of the properties may be changed. - // the rest are just ignored. - - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG || (var.m_val.lVal != RV_LINEAR && var.m_val.lVal != RV_QUADRATIC && var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of MVRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 1 || var.m_val.ulVal > m_indexCapacity || var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE ||var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::storeHeader() -{ - const uint32_t headerSize = - sizeof(uint32_t) + // size of m_roots - static_cast(m_roots.size()) - * (sizeof(id_type) + 2 * sizeof(double)) + // m_roots - sizeof(MVRTreeVariant) + // m_treeVariant - sizeof(double)+ // m_fillFactor - sizeof(uint32_t) + // m_indexCapacity - sizeof(uint32_t) + // m_leafCapacity - sizeof(uint32_t) + // m_nearMinimumOverlapFactor - sizeof(double) + // m_splitDistributionFactor - sizeof(double) + // m_reinsertFactor - sizeof(uint32_t) + // m_dimension - sizeof(byte) + // m_bTightMBRs - sizeof(uint32_t) + // m_stats.m_nodes - sizeof(uint64_t) + // m_stats.m_totalData - sizeof(uint32_t) + // m_stats.m_deadIndexNodes - sizeof(uint32_t) + // m_stats.m_deadLeafNodes - sizeof(uint64_t) + // m_stats.m_data - sizeof(uint32_t) + // size of m_stats.m_treeHeight - static_cast(m_stats.m_treeHeight.size()) - * sizeof(uint32_t) + // m_stats.m_treeHeight - sizeof(double) + // m_strongVersionOverflow - //sizeof(double) + // m_strongVersionUnderflow - sizeof(double) + // m_versionUnderflow - sizeof(double) + // m_currentTime - sizeof(uint32_t) + // m_nodesInLevel size - static_cast(m_stats.m_nodesInLevel.size()) - * sizeof(uint32_t); // m_nodesInLevel values - - byte* header = new byte[headerSize]; - byte* ptr = header; - - uint32_t u32I = static_cast(m_roots.size()); - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (size_t cIndex = 0; cIndex < m_roots.size(); ++cIndex) - { - RootEntry& e = m_roots[cIndex]; - memcpy(ptr, &(e.m_id), sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &(e.m_startTime), sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(e.m_endTime), sizeof(double)); - ptr += sizeof(double); - } - - memcpy(ptr, &m_treeVariant, sizeof(MVRTreeVariant)); - ptr += sizeof(MVRTreeVariant); - memcpy(ptr, &m_fillFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_indexCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_leafCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_nearMinimumOverlapFactor, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_splitDistributionFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_reinsertFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - byte c = (byte) m_bTightMBRs; - memcpy(ptr, &c, sizeof(byte)); - ptr += sizeof(byte); - memcpy(ptr, &(m_stats.m_u32Nodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u64TotalData), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(ptr, &(m_stats.m_u32DeadIndexNodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u32DeadLeafNodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u64Data), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - - u32I = static_cast(m_stats.m_treeHeight.size()); - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (size_t cIndex = 0; cIndex < m_stats.m_treeHeight.size(); ++cIndex) - { - u32I = m_stats.m_treeHeight[cIndex]; - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - memcpy(ptr, &m_strongVersionOverflow, sizeof(double)); - ptr += sizeof(double); - //memcpy(ptr, &m_strongVersionUnderflow, sizeof(double)); - //ptr += sizeof(double); - memcpy(ptr, &m_versionUnderflow, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_currentTime, sizeof(double)); - ptr += sizeof(double); - - u32I = static_cast(m_stats.m_nodesInLevel.size()); - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (size_t cLevel = 0; cLevel < m_stats.m_nodesInLevel.size(); ++cLevel) - { - u32I = m_stats.m_nodesInLevel[cLevel]; - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - m_pStorageManager->storeByteArray(m_headerID, headerSize, header); - - delete[] header; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::loadHeader() -{ - uint32_t headerSize; - byte* header = 0; - m_pStorageManager->loadByteArray(m_headerID, headerSize, &header); - - byte* ptr = header; - - uint32_t rootsSize; - memcpy(&rootsSize, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cIndex = 0; cIndex < rootsSize; ++cIndex) - { - RootEntry e; - memcpy(&(e.m_id), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&(e.m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(e.m_endTime), ptr, sizeof(double)); - ptr += sizeof(double); - m_roots.push_back(e); - } - - memcpy(&m_treeVariant, ptr, sizeof(MVRTreeVariant)); - ptr += sizeof(MVRTreeVariant); - memcpy(&m_fillFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_indexCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_leafCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_nearMinimumOverlapFactor, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_splitDistributionFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_reinsertFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - byte c; - memcpy(&c, ptr, sizeof(byte)); - m_bTightMBRs = (c != 0); - ptr += sizeof(byte); - memcpy(&(m_stats.m_u32Nodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u64TotalData), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(&(m_stats.m_u32DeadIndexNodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u32DeadLeafNodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u64Data), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - - uint32_t treeHeightSize; - memcpy(&treeHeightSize, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cIndex = 0; cIndex < treeHeightSize; ++cIndex) - { - uint32_t u32I; - memcpy(&u32I, ptr, sizeof(uint32_t)); - m_stats.m_treeHeight.push_back(u32I); - ptr += sizeof(uint32_t); - } - - memcpy(&m_strongVersionOverflow, ptr, sizeof(double)); - ptr += sizeof(double); - //memcpy(&m_strongVersionUnderflow, ptr, sizeof(double)); - //ptr += sizeof(double); - memcpy(&m_versionUnderflow, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_currentTime, ptr, sizeof(double)); - ptr += sizeof(double); - - uint32_t nodesInLevelSize; - memcpy(&nodesInLevelSize, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < nodesInLevelSize; ++cLevel) - { - uint32_t u32I; - memcpy(&u32I, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - m_stats.m_nodesInLevel.push_back(u32I); - } - - delete[] header; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id) -{ - assert(mbr.getDimension() == m_dimension); - assert(m_currentTime <= mbr.m_startTime); - - std::stack pathBuffer; - m_currentTime = mbr.m_startTime; - - NodePtr root = readNode(m_roots[m_roots.size() - 1].m_id); - NodePtr l = root->chooseSubtree(mbr, 0, pathBuffer); - - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mbr, id, pathBuffer, m_infiniteRegion, -1, false); - - ++(m_stats.m_u64Data); - ++(m_stats.m_u64TotalData); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, uint32_t level) -{ - assert(mbr.getDimension() == m_dimension); - - std::stack pathBuffer; - - NodePtr root = readNode(m_roots[m_roots.size() - 1].m_id); - NodePtr l = root->chooseSubtree(mbr, level, pathBuffer); - - assert(l->m_level == level); - - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mbr, id, pathBuffer, m_infiniteRegion, -1, false); -} - -bool libsupermesh::SpatialIndex::MVRTree::MVRTree::deleteData_impl(const TimeRegion& mbr, id_type id) -{ - assert(mbr.m_dimension == m_dimension); - - m_currentTime = mbr.m_endTime; - - std::stack pathBuffer; - NodePtr root = readNode(m_roots[m_roots.size() - 1].m_id); - NodePtr l = root->findLeaf(mbr, id, pathBuffer); - - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - - if (l.get() != 0) - { - l->deleteData(id, mbr.m_endTime, pathBuffer); - --(m_stats.m_u64Data); - return true; - } - - return false; -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::MVRTree::MVRTree::writeNode(Node* n) -{ - byte* buffer; - uint32_t dataLength; - n->storeToByteArray(&buffer, dataLength); - - id_type page; - if (n->m_identifier < 0) page = StorageManager::NewPage; - else page = n->m_identifier; - - try - { - m_pStorageManager->storeByteArray(page, dataLength, buffer); - delete[] buffer; - } - catch (InvalidPageException& e) - { - delete[] buffer; - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("writeNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - if (n->m_identifier < 0) - { - n->m_identifier = page; - ++(m_stats.m_u32Nodes); - } - - ++(m_stats.m_u64Writes); - - for (size_t cIndex = 0; cIndex < m_writeNodeCommands.size(); ++cIndex) - { - m_writeNodeCommands[cIndex]->execute(*n); - } - - return page; -} - -libsupermesh::SpatialIndex::MVRTree::NodePtr libsupermesh::SpatialIndex::MVRTree::MVRTree::readNode(id_type id) -{ - uint32_t dataLength; - byte* buffer; - - try - { - m_pStorageManager->loadByteArray(id, dataLength, &buffer); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("readNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - try - { - uint32_t nodeType; - memcpy(&nodeType, buffer, sizeof(uint32_t)); - - NodePtr n; - - if (nodeType == PersistentIndex) n = m_indexPool.acquire(); - else if (nodeType == PersistentLeaf) n = m_leafPool.acquire(); - else throw libsupermesh::Tools::IllegalStateException("readNode: failed reading the correct node type information"); - - if (n.get() == 0) - { - if (nodeType == PersistentIndex) n = NodePtr(new Index(this, -1, 0), &m_indexPool); - else if (nodeType == PersistentLeaf) n = NodePtr(new Leaf(this, -1), &m_leafPool); - } - - //n->m_pTree = this; - n->m_identifier = id; - n->loadFromByteArray(buffer); - - ++(m_stats.m_u64Reads); - - for (size_t cIndex = 0; cIndex < m_readNodeCommands.size(); ++cIndex) - { - m_readNodeCommands[cIndex]->execute(*n); - } - - delete[] buffer; - return n; - } - catch (...) - { - delete[] buffer; - throw; - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::deleteNode(Node* n) -{ - try - { - m_pStorageManager->deleteByteArray(n->m_identifier); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("deleteNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - --(m_stats.m_u32Nodes); - - for (size_t cIndex = 0; cIndex < m_deleteNodeCommands.size(); ++cIndex) - { - m_deleteNodeCommands[cIndex]->execute(*n); - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v) -{ - // any shape that implements IInterval and IShape, can be used here. - // FIXME: I am not using ITimeShape yet, even though I should. - - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&query); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("rangeQuery: Shape does not support the libsupermesh::Tools::IInterval interface."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::set visitedNodes; - std::set visitedData; - std::stack st; - std::vector ids; - findRootIdentifiers(*ti, ids); - - for (size_t cRoot = 0; cRoot < ids.size(); ++cRoot) - { - NodePtr root = readNode(ids[cRoot]); - if (root->m_children > 0 && query.intersectsShape(root->m_nodeMBR)) st.push(root); - } - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - visitedNodes.insert(n->m_identifier); - - if (n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (visitedData.find(n->m_pIdentifier[cChild]) != visitedData.end()) continue; - - bool b; - if (type == ContainmentQuery) b = (n->m_ptrMBR[cChild])->intersectsInterval(*ti) && query.containsShape(*(n->m_ptrMBR[cChild])); - else b = (n->m_ptrMBR[cChild])->intersectsInterval(*ti) && query.intersectsShape(*(n->m_ptrMBR[cChild])); - - if (b) - { - visitedData.insert(n->m_pIdentifier[cChild]); - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - } - else - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if ( - visitedNodes.find(n->m_pIdentifier[cChild]) == visitedNodes.end() && - n->m_ptrMBR[cChild]->intersectsInterval(*ti) && - query.intersectsShape(*(n->m_ptrMBR[cChild]))) - st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::findRootIdentifiers(const libsupermesh::Tools::IInterval& ti, std::vector& ids) -{ - ids.clear(); - - for (size_t cRoot = 0; cRoot < m_roots.size(); ++cRoot) - { - RootEntry& e = m_roots[cRoot]; - if (ti.intersectsInterval(libsupermesh::Tools::IT_RIGHTOPEN, e.m_startTime, e.m_endTime)) ids.push_back(e.m_id); - } -} - -std::string libsupermesh::SpatialIndex::MVRTree::MVRTree::printRootInfo() const -{ - std::ostringstream s; - - for (size_t cRoot = 0; cRoot < m_roots.size(); ++cRoot) - { - const RootEntry& e = m_roots[cRoot]; - - s << "Root " << cRoot << ": Start " << e.m_startTime << ", End " << e.m_endTime << std::endl; - } - - return s.str(); -} - -std::ostream& libsupermesh::SpatialIndex::MVRTree::operator<<(std::ostream& os, const MVRTree& t) -{ - os << "Dimension: " << t.m_dimension << std::endl - << "Fill factor: " << t.m_fillFactor << std::endl - << "Index capacity: " << t.m_indexCapacity << std::endl - << "Leaf capacity: " << t.m_leafCapacity << std::endl - << "Tight MBRs: " << ((t.m_bTightMBRs) ? "enabled" : "disabled") << std::endl; - - if (t.m_treeVariant == RV_RSTAR) - { - os << "Near minimum overlap factor: " << t.m_nearMinimumOverlapFactor << std::endl - << "Reinsert factor: " << t.m_reinsertFactor << std::endl - << "Split distribution factor: " << t.m_splitDistributionFactor << std::endl - << "Strong version overflow: " << t.m_strongVersionOverflow << std::endl - //<< "Strong version underflow: " << t.m_strongVersionUnderflow << std::endl - << "Weak version underflow: " << t.m_versionUnderflow << std::endl; - } - - // it is difficult to count utilization - //os << "Utilization: " << 100 * t.m_stats.m_totalData / (t.m_stats.getNumberOfNodesInLevel(0) * t.m_leafCapacity) << "%" << std::endl - - os << t.m_stats; - os << t.printRootInfo(); - - #ifndef NDEBUG - os << "Leaf pool hits: " << t.m_leafPool.m_hits << std::endl - << "Leaf pool misses: " << t.m_leafPool.m_misses << std::endl - << "Index pool hits: " << t.m_indexPool.m_hits << std::endl - << "Index pool misses: " << t.m_indexPool.m_misses << std::endl - << "Region pool hits: " << t.m_regionPool.m_hits << std::endl - << "Region pool misses: " << t.m_regionPool.m_misses << std::endl - << "Point pool hits: " << t.m_pointPool.m_hits << std::endl - << "Point pool misses: " << t.m_pointPool.m_misses << std::endl; - #endif - - return os; -} diff --git a/spatialindex-1.8.5/src/mvrtree/MVRTree.h b/spatialindex-1.8.5/src/mvrtree/MVRTree.h deleted file mode 100644 index 51b2220..0000000 --- a/spatialindex-1.8.5/src/mvrtree/MVRTree.h +++ /dev/null @@ -1,231 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Statistics.h" -#include "Node.h" -#include "PointerPoolNode.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class MVRTree : public ISpatialIndex - { - class NNEntry; - class RootEntry; - - public: - MVRTree(IStorageManager&, libsupermesh::Tools::PropertySet&); - // String Value Description - // ---------------------------------------------- - // IndexIndentifier VT_LONG If specified an existing index will be openened from the supplied - // storage manager with the given index id. Behaviour is unspecified - // if the index id or the storage manager are incorrect. - // Dimension VT_ULONG Dimensionality of the data that will be inserted. - // IndexCapacity VT_ULONG The index node capacity. Default is 100. - // LeafCapactiy VT_ULONG The leaf node capacity. Default is 100. - // FillFactor VT_DOUBLE The fill factor. Default is 70% - // TreeVariant VT_LONG Can be one of Linear, Quadratic or Rstar. Default is Rstar - // NearMinimumOverlapFactor VT_ULONG Default is 32. - // SplitDistributionFactor VT_DOUBLE Default is 0.4 - // ReinsertFactor VT_DOUBLE Default is 0.3 - // EnsureTightMBRs VT_BOOL Default is true - // IndexPoolCapacity VT_LONG Default is 100 - // LeafPoolCapacity VT_LONG Default is 100 - // RegionPoolCapacity VT_LONG Default is 1000 - // PointPoolCapacity VT_LONG Default is 500 - // StrongVersionOverflow VT_DOUBLE Default is 0.8 - // VersionUnderflow VT_DOUBLE Default is 0.3 - - virtual ~MVRTree(); - - // - // ISpatialIndex interface - // - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id); - virtual bool deleteData(const IShape& shape, id_type id); - virtual void containsWhatQuery(const IShape& query, IVisitor& v); - virtual void intersectsWithQuery(const IShape& query, IVisitor& v); - virtual void pointLocationQuery(const Point& query, IVisitor& v); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator&); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v); - virtual void selfJoinQuery(const IShape& s, IVisitor& v); - virtual void queryStrategy(IQueryStrategy& qs); - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const; - virtual void addCommand(ICommand* pCommand, CommandType ct); - virtual bool isIndexValid(); - virtual void getStatistics(IStatistics** out) const; - - private: - void initNew(libsupermesh::Tools::PropertySet&); - void initOld(libsupermesh::Tools::PropertySet& ps); - void storeHeader(); - void loadHeader(); - - void insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id); - void insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, uint32_t level); - bool deleteData_impl(const TimeRegion& mbr, id_type id); - - id_type writeNode(Node*); - NodePtr readNode(id_type id); - void deleteNode(Node* n); - - void rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v); - - void findRootIdentifiers(const libsupermesh::Tools::IInterval& ti, std::vector& ids); - std::string printRootInfo() const; - - IStorageManager* m_pStorageManager; - - std::vector m_roots; - id_type m_headerID; - - MVRTreeVariant m_treeVariant; - - double m_fillFactor; - - uint32_t m_indexCapacity; - - uint32_t m_leafCapacity; - - uint32_t m_nearMinimumOverlapFactor; - // The R*-Tree 'p' constant, for calculating nearly minimum overlap cost. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles, Section 4.1] - - double m_splitDistributionFactor; - // The R*-Tree 'm' constant, for calculating spliting distributions. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles, Section 4.2] - - double m_reinsertFactor; - // The R*-Tree 'p' constant, for removing entries at reinserts. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles, Section 4.3] - - double m_strongVersionOverflow; - //double m_strongVersionUnderflow; - double m_versionUnderflow; - - uint32_t m_dimension; - - TimeRegion m_infiniteRegion; - - libsupermesh::SpatialIndex::MVRTree::Statistics m_stats; - - bool m_bTightMBRs; - - bool m_bHasVersionCopied; - - double m_currentTime; - - libsupermesh::Tools::PointerPool m_pointPool; - libsupermesh::Tools::PointerPool m_regionPool; - libsupermesh::Tools::PointerPool m_indexPool; - libsupermesh::Tools::PointerPool m_leafPool; - - std::vector > m_writeNodeCommands; - std::vector > m_readNodeCommands; - std::vector > m_deleteNodeCommands; - -#ifdef HAVE_PTHREAD_H - pthread_mutex_t m_lock; -#endif - - class RootEntry - { - public: - RootEntry() {} - RootEntry(id_type id, double s, double e) : m_id(id), m_startTime(s), m_endTime(e) {} - - id_type m_id; - double m_startTime; - double m_endTime; - }; // RootEntry - - class NNEntry - { - public: - id_type m_id; - IEntry* m_pEntry; - double m_minDist; - - NNEntry(id_type id, IEntry* e, double f) : m_id(id), m_pEntry(e), m_minDist(f) {} - ~NNEntry() {} - - struct greater : public std::binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_minDist > __y->m_minDist; } - }; - }; // NNEntry - - class NNComparator : public INearestNeighborComparator - { - public: - double getMinimumDistance(const IShape& query, const IShape& entry) - { - return query.getMinimumDistance(entry); - } - double getMinimumDistance(const IShape& query, const IData& data) - { - IShape* pR; - data.getShape(&pR); - double ret = query.getMinimumDistance(*pR); - delete pR; - return ret; - } - }; // NNComparator - - class ValidateEntry - { - public: - ValidateEntry(id_type pid, TimeRegion& r, NodePtr& pNode) : m_parentID(pid), m_parentMBR(r), m_pNode(pNode), m_bIsDead(false) {} - - id_type m_parentID; - TimeRegion m_parentMBR; - NodePtr m_pNode; - bool m_bIsDead; - }; // ValidateEntry - - friend class Node; - friend class Leaf; - friend class Index; - - friend std::ostream& operator<<(std::ostream& os, const MVRTree& t); - }; // MVRTree - - std::ostream& operator<<(std::ostream& os, const MVRTree& t); - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/Makefile.am b/spatialindex-1.8.5/src/mvrtree/Makefile.am deleted file mode 100644 index 8c28ebe..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libmvrtree.la -INCLUDES = -I../../include -libmvrtree_la_SOURCES = Index.cc Leaf.cc Node.cc MVRTree.cc Statistics.cc Index.h Leaf.h MVRTree.h Node.h PointerPoolNode.h Statistics.h diff --git a/spatialindex-1.8.5/src/mvrtree/Makefile.in b/spatialindex-1.8.5/src/mvrtree/Makefile.in deleted file mode 100644 index 3d6bf00..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Makefile.in +++ /dev/null @@ -1,601 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/mvrtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmvrtree_la_LIBADD = -am_libmvrtree_la_OBJECTS = Index.lo Leaf.lo Node.lo MVRTree.lo \ - Statistics.lo -libmvrtree_la_OBJECTS = $(am_libmvrtree_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libmvrtree_la_SOURCES) -DIST_SOURCES = $(libmvrtree_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libmvrtree.la -INCLUDES = -I../../include -libmvrtree_la_SOURCES = Index.cc Leaf.cc Node.cc MVRTree.cc Statistics.cc Index.h Leaf.h MVRTree.h Node.h PointerPoolNode.h Statistics.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mvrtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/mvrtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libmvrtree.la: $(libmvrtree_la_OBJECTS) $(libmvrtree_la_DEPENDENCIES) $(EXTRA_libmvrtree_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libmvrtree_la_OBJECTS) $(libmvrtree_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Leaf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MVRTree.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Statistics.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/mvrtree/Node.cc b/spatialindex-1.8.5/src/mvrtree/Node.cc deleted file mode 100644 index 2461b1a..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Node.cc +++ /dev/null @@ -1,1525 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -#include "MVRTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::MVRTree; - -// -// libsupermesh::Tools::IObject interface -// -libsupermesh::Tools::IObject* Node::clone() -{ - throw libsupermesh::Tools::NotSupportedException("IObject::clone should never be called."); -} - -// -// libsupermesh::Tools::ISerializable interface -// -uint32_t Node::getByteArraySize() -{ - return - (sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(double) + - sizeof(double) + - (m_children * (m_pTree->m_dimension * sizeof(double) * 2 + sizeof(id_type) + 2 * sizeof(double) + sizeof(uint32_t))) + - m_totalDataLength + - (2 * m_pTree->m_dimension * sizeof(double))); -} - -void Node::loadFromByteArray(const byte* ptr) -{ - m_nodeMBR = m_pTree->m_infiniteRegion; - - // skip the node type information, it is not needed. - ptr += sizeof(uint32_t); - - memcpy(&m_level, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&m_children, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&(m_nodeMBR.m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(m_nodeMBR.m_endTime), ptr, sizeof(double)); - ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_ptrMBR[cChild] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[cChild]) = m_pTree->m_infiniteRegion; - - memcpy(m_ptrMBR[cChild]->m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(&(m_pIdentifier[cChild]), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&(m_ptrMBR[cChild]->m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(m_ptrMBR[cChild]->m_endTime), ptr, sizeof(double)); - ptr += sizeof(double); - - memcpy(&(m_pDataLength[cChild]), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - m_totalDataLength += m_pDataLength[cChild]; - m_pData[cChild] = new byte[m_pDataLength[cChild]]; - memcpy(m_pData[cChild], ptr, m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - else - { - m_pData[cChild] = 0; - } - - //m_nodeMBR.combineRegion(*(m_ptrMBR[cChild])); - } - - memcpy(m_nodeMBR.m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -void Node::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - - *data = new byte[len]; - byte* ptr = *data; - - uint32_t nodeType; - - if (m_level == 0) nodeType = PersistentLeaf; - else nodeType = PersistentIndex; - - memcpy(ptr, &nodeType, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_level, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_children, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &(m_nodeMBR.m_startTime), sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(m_nodeMBR.m_endTime), sizeof(double)); - ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - memcpy(ptr, m_ptrMBR[cChild]->m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, &(m_pIdentifier[cChild]), sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &(m_ptrMBR[cChild]->m_startTime), sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(m_ptrMBR[cChild]->m_endTime), sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, &(m_pDataLength[cChild]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - memcpy(ptr, m_pData[cChild], m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - } - - // store the node MBR for efficiency. This increases the node size a little bit. - memcpy(ptr, m_nodeMBR.m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pHigh, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -// -// libsupermesh::SpatialIndex::IEntry interface -// -libsupermesh::SpatialIndex::id_type Node::getIdentifier() const -{ - return m_identifier; -} - -void Node::getShape(IShape** out) const -{ - *out = new TimeRegion(m_nodeMBR); -} - -// -// libsupermesh::SpatialIndex::INode interface -// -uint32_t Node::getChildrenCount() const -{ - return m_children; -} - -libsupermesh::SpatialIndex::id_type Node::getChildIdentifier(uint32_t index) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pIdentifier[index]; -} - -void Node::getChildShape(uint32_t index, IShape** out) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - *out = new TimeRegion(*(m_ptrMBR[index])); -} - - -void Node::getChildData(uint32_t index, uint32_t& length, byte** data) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - if (m_pData[index] == NULL) - { - length = 0; - data = NULL; - } - else - { - length = m_pDataLength[index]; - *data = m_pData[index]; - } -} - -uint32_t Node::getLevel() const -{ - return m_level; -} - -bool Node::isLeaf() const -{ - return (m_level == 0); -} - -bool Node::isIndex() const -{ - return (m_level != 0); -} - -// -// Internal -// - -Node::Node() : - m_pTree(0), - m_level(0), - m_identifier(-1), - m_children(0), - m_capacity(0), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ -} - - Node::Node(libsupermesh::SpatialIndex::MVRTree::MVRTree* pTree, id_type id, uint32_t level, uint32_t capacity) : - m_pTree(pTree), - m_level(level), - m_identifier(id), - m_children(0), - m_capacity(capacity), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ - m_nodeMBR.makeInfinite(m_pTree->m_dimension); - - try - { - m_pDataLength = new uint32_t[m_capacity + 2]; - m_pData = new byte*[m_capacity + 2]; - m_ptrMBR = new TimeRegionPtr[m_capacity + 2]; - m_pIdentifier = new id_type[m_capacity + 2]; - } - catch (...) - { - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - throw; - } -} - -Node::~Node() -{ - if (m_pData != 0) - { - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_pData[cChild] != 0) delete[] m_pData[cChild]; - } - - delete[] m_pData; - delete[] m_pDataLength; - } - - if (m_ptrMBR != 0) delete[] m_ptrMBR; - if (m_pIdentifier != 0) delete[] m_pIdentifier; -} - -Node& Node::operator=(const Node&) -{ - throw libsupermesh::Tools::IllegalStateException("operator =: This should never be called."); -} - -void Node::insertEntry(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id) -{ - assert(m_children < m_capacity); - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - m_totalDataLength += dataLength; - ++m_children; - - m_nodeMBR.combineRegionInTime(mbr); -} - -bool Node::deleteEntry(uint32_t index) -{ - assert(index >= 0 && index < m_children); - - // cache it, since I might need it for "touches" later. - TimeRegionPtr ptrR = m_ptrMBR[index]; - - m_totalDataLength -= m_pDataLength[index]; - if (m_pData[index] != 0) delete[] m_pData[index]; - - if (m_children > 1 && index != m_children - 1) - { - m_pDataLength[index] = m_pDataLength[m_children - 1]; - m_pData[index] = m_pData[m_children - 1]; - m_ptrMBR[index] = m_ptrMBR[m_children - 1]; - m_pIdentifier[index] = m_pIdentifier[m_children - 1]; - } - - --m_children; - - // WARNING: index has now changed. Do not use it below here. - - if (m_children == 0) - { - m_nodeMBR = m_pTree->m_infiniteRegion; - return true; - } - else if (m_pTree->m_bTightMBRs && m_nodeMBR.touchesShape(*ptrR)) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - return true; - } - - return false; -} - -bool Node::insertData( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::stack& pathBuffer, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2, bool bForceAdjust) -{ - // we should be certain that when bInsertMbr2 is true the node needs to be version split - - // this function returns true only if the node under modification has been stored (writeNode(this)) - // it is needed since some times after a version copy we do not need to actually store the node. Only - // the parent has to be notified to modify the entry pointing - // to this node with the appropriate deletion time (thus we save one disk access) - - if ((! bInsertMbr2) && m_children < m_capacity) - { - // the node has empty space. Insert the entry here - - // this has to happen before insertEntry modifies m_nodeMBR. - bool b = m_nodeMBR.containsShape(mbr); - - insertEntry(dataLength, pData, mbr, id); - m_pTree->writeNode(this); - - // a forced adjust might be needed when a child has modified it MBR due to an entry deletion - // (when the entry start time becomes equal to the entry end time after a version copy) - if ((! b || bForceAdjust) && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } - - return true; - } - else - { - // do a version copy - - bool bIsRoot = pathBuffer.empty(); - - NodePtr ptrCopy; - - // copy live entries of this node into a new node. Create an index or a leaf respectively - if (m_level == 0) - { - ptrCopy = m_pTree->m_leafPool.acquire(); - if (ptrCopy.get() == 0) ptrCopy = NodePtr(new Leaf(m_pTree, - 1), &(m_pTree->m_leafPool)); - else ptrCopy->m_nodeMBR = m_pTree->m_infiniteRegion; - } - else - { - ptrCopy = m_pTree->m_indexPool.acquire(); - if (ptrCopy.get() == 0) ptrCopy = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - else - { - ptrCopy->m_level = m_level; - ptrCopy->m_nodeMBR = m_pTree->m_infiniteRegion; - } - } - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (! (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max())) - { - byte* data = 0; - - if (m_pDataLength[cChild] > 0) - { - data = new byte[m_pDataLength[cChild]]; - memcpy(data, m_pData[cChild], m_pDataLength[cChild] * sizeof(byte)); - } - ptrCopy->insertEntry(m_pDataLength[cChild], data, *(m_ptrMBR[cChild]), m_pIdentifier[cChild]); - ptrCopy->m_ptrMBR[ptrCopy->m_children - 1]->m_startTime = mbr.m_startTime; - } - } - - ptrCopy->m_nodeMBR.m_startTime = mbr.m_startTime; - m_nodeMBR.m_endTime = mbr.m_startTime; - - uint32_t children = (bInsertMbr2) ? ptrCopy->m_children + 2 : ptrCopy->m_children + 1; - assert(children > 0); - - if (children >= m_pTree->m_strongVersionOverflow * m_capacity) - { - // strong version overflow. Split! - NodePtr n; - NodePtr nn; - ptrCopy->split(dataLength, pData, mbr, id, n, nn, mbr2, id2, bInsertMbr2); - assert(n->m_children > 1 && nn->m_children > 1); - - if (bIsRoot) - { - // it is a root node. Special handling required. - n->m_level = ptrCopy->m_level; - nn->m_level = ptrCopy->m_level; - n->m_identifier = -1; - nn->m_identifier = -1; - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - NodePtr ptrR = m_pTree->m_indexPool.acquire(); - if (ptrR.get() == 0) ptrR = NodePtr(new Index(m_pTree, -1, ptrCopy->m_level + 1), &(m_pTree->m_indexPool)); - else - { - //ptrR->m_pTree = m_pTree; - //ptrR->m_identifier = -1; - ptrR->m_level = ptrCopy->m_level + 1; - ptrR->m_nodeMBR = m_pTree->m_infiniteRegion; - } - - ptrR->insertEntry(0, 0, n->m_nodeMBR, n->m_identifier); - ptrR->insertEntry(0, 0, nn->m_nodeMBR, nn->m_identifier); - - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - ptrR->m_identifier = m_identifier; - m_pTree->writeNode(ptrR.get()); - m_pTree->m_stats.m_treeHeight[m_pTree->m_stats.m_treeHeight.size() - 1] = ptrR->m_level + 1; - m_pTree->m_stats.m_nodesInLevel.at(n->m_level) = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 1; - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime == ptrCopy->m_nodeMBR.m_startTime && - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime == ptrCopy->m_nodeMBR.m_endTime); - } - else - { - m_pTree->writeNode(this); - m_pTree->writeNode(ptrR.get()); - - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_id == m_identifier); - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime = m_nodeMBR.m_startTime; - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime = m_nodeMBR.m_endTime; - m_pTree->m_roots.push_back(MVRTree::RootEntry(ptrR->m_identifier, ptrR->m_nodeMBR.m_startTime, ptrR->m_nodeMBR.m_endTime)); - m_pTree->m_stats.m_treeHeight.push_back(ptrR->m_level + 1); - m_pTree->m_stats.m_nodesInLevel.at(n->m_level) = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 2; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - } - - if (ptrR->m_level >= m_pTree->m_stats.m_nodesInLevel.size()) m_pTree->m_stats.m_nodesInLevel.push_back(1); - else m_pTree->m_stats.m_nodesInLevel.at(ptrR->m_level) = m_pTree->m_stats.m_nodesInLevel[ptrR->m_level] + 1; - - return true; - } - else - { - bool b = false; - - n->m_level = ptrCopy->m_level; - nn->m_level = ptrCopy->m_level; -/* - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - n->m_identifier = m_identifier; - m_pTree->m_stats.m_nodesInLevel[n->m_level] = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 1; - b = true; - } - else - { - n->m_identifier = -1; - m_pTree->m_stats.m_nodesInLevel[n->m_level] = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 2; - } -*/ - n->m_identifier = -1; - nn->m_identifier = -1; - - m_pTree->m_stats.m_nodesInLevel.at(n->m_level) = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 2; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - ++(m_pTree->m_stats.m_u64Adjustments); - - // this is the special insertion function for two new nodes, defined below - p->insertData(n->m_nodeMBR, n->m_identifier, nn->m_nodeMBR, nn->m_identifier, this, pathBuffer); - - return b; - } - } - //else if (children < m_pTree->m_strongVersionUnderflow * m_capacity) - //{ - // do not do this for now - //} - else - { - // the entry contains the appropriate number of live entries - - ptrCopy->insertEntry(dataLength, pData, mbr, id); - if (bInsertMbr2) ptrCopy->insertEntry(0, 0, mbr2, id2); - - if (bIsRoot) - { - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - ptrCopy->m_identifier = m_identifier; - m_pTree->writeNode(ptrCopy.get()); - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime == ptrCopy->m_nodeMBR.m_startTime && - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime == ptrCopy->m_nodeMBR.m_endTime); - } - else - { - m_pTree->writeNode(ptrCopy.get()); - m_pTree->writeNode(this); - - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_id == m_identifier); - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime = m_nodeMBR.m_startTime; - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime = m_nodeMBR.m_endTime; - m_pTree->m_roots.push_back(MVRTree::RootEntry(ptrCopy->m_identifier, ptrCopy->m_nodeMBR.m_startTime, ptrCopy->m_nodeMBR.m_endTime)); - m_pTree->m_stats.m_treeHeight.push_back(ptrCopy->m_level + 1); - - m_pTree->m_stats.m_nodesInLevel.at(ptrCopy->m_level) = m_pTree->m_stats.m_nodesInLevel[ptrCopy->m_level] + 1; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - } - - return true; - } - else - { - m_pTree->writeNode(ptrCopy.get()); - - m_pTree->m_stats.m_nodesInLevel.at(ptrCopy->m_level) = m_pTree->m_stats.m_nodesInLevel[ptrCopy->m_level] + 1; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - ++(m_pTree->m_stats.m_u64Adjustments); - - uint32_t child; - for (child = 0; child < p->m_children; ++child) - { - if (p->m_pIdentifier[child] == m_identifier) break; - } - - // it might be needed to update the MBR since the child MBR might have changed - // from an entry deletion (from insertData, below, when m_startTime == m_endTime) - double st = p->m_ptrMBR[child]->m_startTime; - *(p->m_ptrMBR[child]) = m_nodeMBR; - p->m_ptrMBR[child]->m_startTime = st; - //p->m_ptrMBR[child]->m_endTime = mbr.m_startTime; - - // insert this new version copy into the parent - p->insertData(0, 0, ptrCopy->m_nodeMBR, ptrCopy->m_identifier, pathBuffer, m_pTree->m_infiniteRegion, -1, false); - - return false; - } - } - } -} - -void Node::insertData(TimeRegion& mbr1, id_type id1, TimeRegion& mbr2, id_type id2, Node* oldVersion, std::stack& pathBuffer) -{ - // this should be called only from insertData above - // it tries to fit two new entries into the node - - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == oldVersion->m_identifier) break; - } - - // save the original node MBR - bool bAdjust = false; - TimeRegionPtr ptrR = m_pTree->m_regionPool.acquire(); - *ptrR = m_nodeMBR; - - // it might be needed to update the MBR since the child MBR might have changed - // from an entry deletion (when m_startTime == m_endTime) - double st = m_ptrMBR[child]->m_startTime; - *(m_ptrMBR[child]) = oldVersion->m_nodeMBR; - m_ptrMBR[child]->m_startTime = st; - //m_ptrMBR[child]->m_endTime = oldVersion->m_nodeMBR.m_endTime; - - if (m_children < m_capacity - 1) - { - // there is enough space for both new entries - - insertEntry(0, 0, mbr1, id1); - insertEntry(0, 0, mbr2, id2); - - m_pTree->writeNode(this); - - if ((! pathBuffer.empty()) && (bAdjust || ! (ptrR->containsShape(mbr1) && ptrR->containsShape(mbr2)))) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } - } - else - { - // call a normal insertData which will trigger a version copy - // insertData will adjust the parent since this node will certainly do a version copy - bool bStored = insertData(0, 0, mbr1, id1, pathBuffer, mbr2, id2, true); - if (! bStored) m_pTree->writeNode(this); - } -} - -bool Node::deleteData(id_type id, double delTime, std::stack& pathBuffer, bool bForceAdjust) -{ - // it returns true if a new root has been created because all the entries of the old root have died. - // This is needed in case the root dies while there are pending reinsertions from multiple levels - - uint32_t child = m_capacity; - uint32_t alive = 0; - bool bAdjustParent = false; - TimeRegionPtr oldNodeMBR = m_pTree->m_regionPool.acquire(); - *oldNodeMBR = m_nodeMBR; - NodePtr parent; - - // make sure that there are no "snapshot" entries - // find how many children are alive and locate the entry to be deleted - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_level != 0 || (m_ptrMBR[cChild]->m_startTime != m_ptrMBR[cChild]->m_endTime)); - if (! (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max())) ++alive; - if (m_pIdentifier[cChild] == id) child = cChild; - } - - assert(child < m_capacity); - - // either make the entry dead or, if its start time is equal to the deletion time, - // delete it from the node completely (in which case the parent MBR might need adjustment) - bool bAdjusted = false; - - if (m_level == 0 && m_ptrMBR[child]->m_startTime == delTime) - { - bAdjusted = deleteEntry(child); - bAdjustParent = bAdjusted; - } - else - { - m_ptrMBR[child]->m_endTime = delTime; - } - - // if it has not been adjusted yet (by deleteEntry) and it should be adjusted, do it. - // a forced adjustment is needed when a child node has adjusted its own MBR and signals - // the parent to adjust it, also. - if ((! bAdjusted) && bForceAdjust) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - // signal our parent to adjust its MBR also - bAdjustParent = true; - } - - // one less live entry from now on - --alive; - - if (alive < m_pTree->m_versionUnderflow * m_capacity && (! pathBuffer.empty())) - { - // if the weak version condition is broken, try to resolve it - // if this is a leaf and it can still hold some entries (since all entries might be dead now and - // the node full) try to borrow a live entry from a sibling - // [Yufei Tao, Dimitris Papadias, 'MV3R-Tree: A Spatio-Temporal Access Method for Timestamp and - // Interval Queries', Section 3.3] - if (m_level == 0 && m_children < m_capacity) - { - parent = m_pTree->readNode(pathBuffer.top()); - pathBuffer.pop(); - - // find us in our parent - for (child = 0; child < parent->m_children; ++child) - { - if (parent->m_pIdentifier[child] == m_identifier) break; - } - - // remember that the parent might be younger than us, pointing to us through a pointer - // created with a version copy. So the actual start time of this node through the path - // from the root might actually be different than the stored start time. - double actualNodeStartTime = parent->m_ptrMBR[child]->m_startTime; - - // find an appropriate sibling - for (uint32_t cSibling = 0; cSibling < parent->m_children; ++cSibling) - { - // it has to be different than us, it has to be alive and its MBR should intersect ours - if ( - parent->m_pIdentifier[cSibling] != m_identifier && - ! (parent->m_ptrMBR[cSibling]->m_endTime < std::numeric_limits::max()) && - parent->m_ptrMBR[cSibling]->intersectsShape(m_nodeMBR)) - { - NodePtr sibling = m_pTree->readNode(parent->m_pIdentifier[cSibling]); - std::vector toCheck; - alive = 0; - - // if this child does not have a single parent, we cannot borrow an entry. - bool bSingleParent = true; - - for (uint32_t cSiblingChild = 0; cSiblingChild < sibling->m_children; ++cSiblingChild) - { - // if the insertion time of any child is smaller than the starting time stored in the - // parent of this node than the node has more than one parent - if (sibling->m_ptrMBR[cSiblingChild]->m_startTime < parent->m_ptrMBR[cSibling]->m_startTime) - { - bSingleParent = false; - break; - } - - // find the live sibling entries, and also the ones that can be moved to this node - // sort them by area enlargement - if (! (sibling->m_ptrMBR[cSiblingChild]->m_endTime < std::numeric_limits::max())) - { - ++alive; - if (sibling->m_ptrMBR[cSiblingChild]->m_startTime >= actualNodeStartTime) - { - TimeRegionPtr tmpR = m_pTree->m_regionPool.acquire(); - *tmpR = m_nodeMBR; - tmpR->combineRegion(*(sibling->m_ptrMBR[cSiblingChild])); - double a = tmpR->getArea(); - if (a <= m_nodeMBR.getArea() * 1.1) toCheck.push_back(DeleteDataEntry(cSiblingChild, a)); - } - } - } - - // if the sibling has more than one parent or if we cannot remove an entry because we will - // cause a weak version overflow, this sibling is not appropriate - if ((! bSingleParent) || toCheck.empty() || alive == m_pTree->m_versionUnderflow * sibling->m_capacity + 1) continue; - - // create interval counters for checking weak version condition - // [Yufei Tao, Dimitris Papadias, 'MV3R-Tree: A Spatio-Temporal Access Method for Timestamp and - // Interval Queries', Section 3.2] - std::set Si; - for (uint32_t cSiblingChild = 0; cSiblingChild < sibling->m_children; ++cSiblingChild) - { - Si.insert(sibling->m_ptrMBR[cSiblingChild]->m_startTime); - Si.insert(sibling->m_ptrMBR[cSiblingChild]->m_endTime); - } - // duplicate entries have been removed and the set is sorted - uint32_t* SiCounts = new uint32_t[Si.size() - 1]; - memset(SiCounts, 0, (Si.size() - 1) * sizeof(uint32_t)); - - for (uint32_t cSiblingChild = 0; cSiblingChild < sibling->m_children; ++cSiblingChild) - { - std::set::iterator it1 = Si.begin(); - std::set::iterator it2 = Si.begin(); - for (size_t cIndex = 0; cIndex < Si.size() - 1; ++cIndex) - { - ++it2; - if ( - sibling->m_ptrMBR[cSiblingChild]->m_startTime <= *it1 && - sibling->m_ptrMBR[cSiblingChild]->m_endTime >= *it2 - ) ++(SiCounts[cIndex]); - ++it1; - } - } - - std::vector Sdel; - - for (size_t cCheck = 0; cCheck < toCheck.size(); ++cCheck) - { - bool good = true; - - // check if it can be removed without a weak version underflow - std::set::iterator it1 = Si.begin(); - std::set::iterator it2 = Si.begin(); - for (size_t cIndex = 0; cIndex < Si.size() - 1; ++cIndex) - { - ++it2; - if ( - sibling->m_ptrMBR[toCheck[cCheck].m_index]->m_startTime <= *it1 && - sibling->m_ptrMBR[toCheck[cCheck].m_index]->m_endTime >= *it2 && - SiCounts[cIndex] <= m_pTree->m_versionUnderflow * sibling->m_capacity) - { - good = false; - break; - } - ++it1; - } - if (good) Sdel.push_back(toCheck[cCheck]); - } - - delete[] SiCounts; - - if (Sdel.empty()) continue; - - // we found some entries. Sort them according to least enlargement, insert the best entry into - // this node, remove it from the sibling and update the MBRs of the parent - - sort(Sdel.begin(), Sdel.end(), DeleteDataEntry::compare); - uint32_t entry = Sdel[0].m_index; - bool b1 = m_nodeMBR.containsShape(*(sibling->m_ptrMBR[entry])); - bool b2 = sibling->m_nodeMBR.touchesShape(*(sibling->m_ptrMBR[entry])); - - insertEntry(sibling->m_pDataLength[entry], sibling->m_pData[entry], *(sibling->m_ptrMBR[entry]), sibling->m_pIdentifier[entry]); - sibling->m_pData[entry] = 0; - - // the weak version condition check above, guarantees that. - assert(sibling->m_children > 1); - sibling->deleteEntry(entry); - - m_pTree->writeNode(this); - m_pTree->writeNode(sibling.get()); - - Index* p = static_cast(parent.get()); - if (((! b1) || bAdjustParent) && b2) p->adjustTree(this, sibling.get(), pathBuffer); - else if ((! b1) || bAdjustParent) p->adjustTree(this, pathBuffer); - else if (b2) p->adjustTree(sibling.get(), pathBuffer); - - return false; - } - } - } - - // either this is not a leaf, or an appropriate sibling was not found, so make this node dead - // and reinsert all live entries from the root - m_nodeMBR.m_endTime = delTime; - m_pTree->writeNode(this); - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - if (parent.get() == 0) - { - parent = m_pTree->readNode(pathBuffer.top()); - pathBuffer.pop(); - } - - if (bAdjustParent) - { - // the correct child pointer might have been calculated already from earlier - if (child < parent->m_children && m_identifier != parent->m_pIdentifier[child]) - { - for (child = 0; child < parent->m_children; ++child) - { - if (parent->m_pIdentifier[child] == m_identifier) break; - } - } - - // both start time and end time should be preserved since deleteData below needs - // to know how many entries where alive, including this one - double st = parent->m_ptrMBR[child]->m_startTime; - double en = parent->m_ptrMBR[child]->m_endTime; - *(parent->m_ptrMBR[child]) = m_nodeMBR; - parent->m_ptrMBR[child]->m_startTime = st; - parent->m_ptrMBR[child]->m_endTime = en; - } - - // delete this node from the parent node. - // if this node had been adjusted and its old MBR was touching the parent MBR, the - // parent MBR needs to be adjusted also. - // the deletion has to happen first, since the reinsertions might modify the path to this node - bool bNewRoot = parent->deleteData(m_identifier, delTime, pathBuffer, (bAdjustParent && parent->m_nodeMBR.touchesShape(*oldNodeMBR))); - - // reinsert all the live entries from the root - - // normally I should not modify any node instances, since writeNode might be caching nodes - // in main memory, even though I have persisted them, so I have to make copies - - // this code will try and reinsert whole paths if possible. It might be the case, though, - // that a root died, which means that all the live data entries have to be scanned and reinserted themselves - for (child = 0; child < m_children; ++child) - { - if (! (m_ptrMBR[child]->m_endTime < std::numeric_limits::max())) - { - if (! bNewRoot || m_level == 0) - { - m_ptrMBR[child]->m_startTime = delTime; - m_pTree->insertData_impl(m_pDataLength[child], m_pData[child], *(m_ptrMBR[child]), m_pIdentifier[child], m_level); - // make sure we do not delete the data array from this node's destructor - m_pData[child] = 0; - } - else - { - std::stack Sins; - Sins.push(m_pTree->readNode(m_pIdentifier[child])); - while (! Sins.empty()) - { - NodePtr p = Sins.top(); Sins.pop(); - if (p->m_level == 0) - { - for (uint32_t cIndex= 0; cIndex < p->m_children; ++cIndex) - { - if (! (p->m_ptrMBR[cIndex]->m_endTime < std::numeric_limits::max())) - { - p->m_ptrMBR[cIndex]->m_startTime = delTime; - m_pTree->insertData_impl(p->m_pDataLength[cIndex], p->m_pData[cIndex], *(p->m_ptrMBR[cIndex]), p->m_pIdentifier[cIndex], p->m_level); - // make sure we do not delete the data array from this node's destructor - p->m_pData[cIndex] = 0; - } - } - } - else - { - for (uint32_t cIndex= 0; cIndex < p->m_children; ++cIndex) - { - if (! (p->m_ptrMBR[cIndex]->m_endTime < std::numeric_limits::max())) - { - Sins.push(m_pTree->readNode(p->m_pIdentifier[cIndex])); - } - } - } - } - } - } - } - } - else - { - // either this is a root node or there is no weak version condition - - if (alive == 0 && pathBuffer.empty()) - { - if (m_children > 0) - { - // all root children are dead. Create a new root - m_nodeMBR.m_endTime = delTime; - m_pTree->m_bHasVersionCopied = false; - - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - Leaf root(m_pTree, m_identifier); - root.m_nodeMBR.m_startTime = m_nodeMBR.m_endTime; - root.m_nodeMBR.m_endTime = std::numeric_limits::max(); - m_pTree->writeNode(&root); - - m_pTree->m_stats.m_treeHeight[m_pTree->m_stats.m_treeHeight.size() - 1] = 1; - if (m_pTree->m_stats.m_nodesInLevel.at(m_level) == 1) m_pTree->m_stats.m_nodesInLevel.pop_back(); - else m_pTree->m_stats.m_nodesInLevel.at(m_level) = m_pTree->m_stats.m_nodesInLevel[m_level] - 1; - m_pTree->m_stats.m_nodesInLevel.at(0) = m_pTree->m_stats.m_nodesInLevel[0] + 1; - } - else - { - m_pTree->writeNode(this); - - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - Leaf root(m_pTree, -1); - root.m_nodeMBR.m_startTime = m_nodeMBR.m_endTime; - root.m_nodeMBR.m_endTime = std::numeric_limits::max(); - m_pTree->writeNode(&root); - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_id == m_identifier); - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime = m_nodeMBR.m_startTime; - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime = m_nodeMBR.m_endTime; - m_pTree->m_roots.push_back(MVRTree::RootEntry(root.m_identifier, root.m_nodeMBR.m_startTime, root.m_nodeMBR.m_endTime)); - - m_pTree->m_stats.m_treeHeight.push_back(1); - m_pTree->m_stats.m_nodesInLevel.at(root.m_level) = m_pTree->m_stats.m_nodesInLevel[root.m_level] + 1; - } - return true; - } - else - { - assert(m_level == 0); - m_pTree->writeNode(this); - m_pTree->m_bHasVersionCopied = false; - return false; - } - } - else if (bAdjustParent && (! pathBuffer.empty())) - { - // the parent needs to be adjusted - m_pTree->writeNode(this); - parent = m_pTree->readNode(pathBuffer.top()); - pathBuffer.pop(); - Index* p = static_cast(parent.get()); - p->adjustTree(this, pathBuffer); - } - else - { - m_pTree->writeNode(this); - } - } - - return false; -} - -void Node::rtreeSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - uint32_t cChild; - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - uint32_t cTotal = (bInsertMbr2) ? m_children + 2 : m_children + 1; - - // use this mask array for marking visited entries. - byte* mask = new byte[cTotal]; - memset(mask, 0, cTotal); - - // insert new data in the node for easier manipulation. Data arrays are always - // by two larger than node capacity. - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - if (bInsertMbr2) - { - m_pDataLength[m_children + 1] = 0; - m_pData[m_children + 1] = 0; - m_ptrMBR[m_children + 1] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children + 1]) = mbr2; - m_pIdentifier[m_children + 1] = id2; - } - - // initialize each group with the seed entries. - uint32_t seed1, seed2; - pickSeeds(seed1, seed2, cTotal); - - group1.push_back(seed1); - group2.push_back(seed2); - - mask[seed1] = 1; - mask[seed2] = 1; - - // find MBR of each group. - TimeRegionPtr mbrA = m_pTree->m_regionPool.acquire(); - *mbrA = *(m_ptrMBR[seed1]); - TimeRegionPtr mbrB = m_pTree->m_regionPool.acquire(); - *mbrB = *(m_ptrMBR[seed2]); - - // count how many entries are left unchecked (exclude the seeds here.) - uint32_t cRemaining = cTotal - 2; - - while (cRemaining > 0) - { - if (minimumLoad - group1.size() == cRemaining) - { - // all remaining entries must be assigned to group1 to comply with minimun load requirement. - for (cChild = 0; cChild < cTotal; ++cChild) - { - if (mask[cChild] == 0) - { - group1.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else if (minimumLoad - group2.size() == cRemaining) - { - // all remaining entries must be assigned to group2 to comply with minimun load requirement. - for (cChild = 0; cChild < cTotal; ++cChild) - { - if (mask[cChild] == 0) - { - group2.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else - { - // For all remaining entries compute the difference of the cost of grouping an - // entry in either group. When done, choose the entry that yielded the maximum - // difference. In case of linear split, select any entry (e.g. the first one.) - uint32_t sel; - double md1 = 0.0, md2 = 0.0; - double m = -std::numeric_limits::max(); - double d1, d2, d; - double a1 = mbrA->getArea(); - double a2 = mbrB->getArea(); - - TimeRegionPtr a = m_pTree->m_regionPool.acquire(); - TimeRegionPtr b = m_pTree->m_regionPool.acquire(); - - for (cChild = 0; cChild < cTotal; ++cChild) - { - if (mask[cChild] == 0) - { - mbrA->getCombinedRegion(*a, *(m_ptrMBR[cChild])); - d1 = a->getArea() - a1; - mbrB->getCombinedRegion(*b, *(m_ptrMBR[cChild])); - d2 = b->getArea() - a2; - d = std::abs(d1 - d2); - - if (d > m) - { - m = d; - md1 = d1; md2 = d2; - sel = cChild; - if (m_pTree->m_treeVariant== RV_LINEAR || m_pTree->m_treeVariant == RV_RSTAR) break; - } - } - } - - // determine the group where we should add the new entry. - int32_t group = 1; - - if (md1 < md2) - { - group1.push_back(sel); - group = 1; - } - else if (md2 < md1) - { - group2.push_back(sel); - group = 2; - } - else if (a1 < a2) - { - group1.push_back(sel); - group = 1; - } - else if (a2 < a1) - { - group2.push_back(sel); - group = 2; - } - else if (group1.size() < group2.size()) - { - group1.push_back(sel); - group = 1; - } - else if (group2.size() < group1.size()) - { - group2.push_back(sel); - group = 2; - } - else - { - group1.push_back(sel); - group = 1; - } - mask[sel] = 1; - --cRemaining; - if (group == 1) - { - mbrA->combineRegion(*(m_ptrMBR[sel])); - } - else - { - mbrB->combineRegion(*(m_ptrMBR[sel])); - } - } - } - - delete[] mask; -} - -void Node::rstarSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - RstarSplitEntry** dataLow = 0; - RstarSplitEntry** dataHigh = 0; - - uint32_t cTotal = (bInsertMbr2) ? m_children + 2 : m_children + 1; - - try - { - dataLow = new RstarSplitEntry*[cTotal]; - dataHigh = new RstarSplitEntry*[cTotal]; - } - catch (...) - { - delete[] dataLow; - throw; - } - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - if (bInsertMbr2) - { - m_pDataLength[m_children + 1] = 0; - m_pData[m_children + 1] = 0; - m_ptrMBR[m_children + 1] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children + 1]) = mbr2; - m_pIdentifier[m_children + 1] = id2; - } - - uint32_t nodeSPF = static_cast(std::floor(cTotal * m_pTree->m_splitDistributionFactor)); - uint32_t splitDistribution = cTotal - (2 * nodeSPF) + 2; - - uint32_t cChild = 0, cDim, cIndex; - - for (cChild = 0; cChild < cTotal; ++cChild) - { - try - { - dataLow[cChild] = new RstarSplitEntry(m_ptrMBR[cChild].get(), cChild, 0); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete dataLow[i]; - delete[] dataLow; - delete[] dataHigh; - throw; - } - - dataHigh[cChild] = dataLow[cChild]; - } - - double minimumMargin = std::numeric_limits::max(); - uint32_t splitAxis = std::numeric_limits::max(); - uint32_t sortOrder = std::numeric_limits::max(); - - // chooseSplitAxis. - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - ::qsort(dataLow, - cTotal, - sizeof(RstarSplitEntry*), - RstarSplitEntry::compareLow); - - ::qsort(dataHigh, - cTotal, - sizeof(RstarSplitEntry*), - RstarSplitEntry::compareHigh); - - // calculate sum of margins and overlap for all distributions. - double marginl = 0.0; - double marginh = 0.0; - - TimeRegion bbl1, bbl2, bbh1, bbh2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bbl1 = *(dataLow[0]->m_pRegion); - bbh1 = *(dataHigh[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bbl1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh1.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - bbl2 = *(dataLow[l]->m_pRegion); - bbh2 = *(dataHigh[l]->m_pRegion); - - for (cIndex = l + 1; cIndex < cTotal; ++cIndex) - { - bbl2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh2.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - marginl += bbl1.getMargin() + bbl2.getMargin(); - marginh += bbh1.getMargin() + bbh2.getMargin(); - } // for (cChild) - - double margin = std::min(marginl, marginh); - - // keep minimum margin as split axis. - if (margin < minimumMargin) - { - minimumMargin = margin; - splitAxis = cDim; - sortOrder = (marginl < marginh) ? 0 : 1; - } - - // increase the dimension according to which the data entries should be sorted. - for (cChild = 0; cChild < cTotal; ++cChild) - { - dataLow[cChild]->m_sortDim = cDim + 1; - } - } // for (cDim) - - for (cChild = 0; cChild < cTotal; ++cChild) - { - dataLow[cChild]->m_sortDim = splitAxis; - } - - ::qsort( - dataLow, - cTotal, - sizeof(RstarSplitEntry*), - (sortOrder == 0) ? RstarSplitEntry::compareLow : RstarSplitEntry::compareHigh); - - double ma = std::numeric_limits::max(); - double mo = std::numeric_limits::max(); - uint32_t splitPoint = std::numeric_limits::max(); - - TimeRegion bb1, bb2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bb1 = *(dataLow[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bb1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - bb2 = *(dataLow[l]->m_pRegion); - - for (cIndex = l + 1; cIndex < cTotal; ++cIndex) - { - bb2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - double o = bb1.getIntersectingArea(bb2); - - if (o < mo) - { - splitPoint = cChild; - mo = o; - ma = bb1.getArea() + bb2.getArea(); - } - else if (o == mo) - { - double a = bb1.getArea() + bb2.getArea(); - - if (a < ma) - { - splitPoint = cChild; - ma = a; - } - } - } // for (cChild) - - uint32_t l1 = nodeSPF - 1 + splitPoint; - - for (cIndex = 0; cIndex < l1; ++cIndex) - { - group1.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - for (cIndex = l1; cIndex < cTotal; ++cIndex) - { - group2.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - delete[] dataLow; - delete[] dataHigh; -} - -void Node::pickSeeds(uint32_t& index1, uint32_t& index2, uint32_t total) -{ - double separation = -std::numeric_limits::max(); - double inefficiency = -std::numeric_limits::max(); - uint32_t cDim, cChild, cIndex; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_RSTAR: - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - double leastLower = m_ptrMBR[0]->m_pLow[cDim]; - double greatestUpper = m_ptrMBR[0]->m_pHigh[cDim]; - uint32_t greatestLower = 0; - uint32_t leastUpper = 0; - double width; - - for (cChild = 1; cChild < total; ++cChild) - { - if (m_ptrMBR[cChild]->m_pLow[cDim] > m_ptrMBR[greatestLower]->m_pLow[cDim]) greatestLower = cChild; - if (m_ptrMBR[cChild]->m_pHigh[cDim] < m_ptrMBR[leastUpper]->m_pHigh[cDim]) leastUpper = cChild; - - leastLower = std::min(m_ptrMBR[cChild]->m_pLow[cDim], leastLower); - greatestUpper = std::max(m_ptrMBR[cChild]->m_pHigh[cDim], greatestUpper); - } - - width = greatestUpper - leastLower; - if (width <= 0) width = 1; - - double f = (m_ptrMBR[greatestLower]->m_pLow[cDim] - m_ptrMBR[leastUpper]->m_pHigh[cDim]) / width; - - if (f > separation) - { - index1 = leastUpper; - index2 = greatestLower; - separation = f; - } - } // for (cDim) - - if (index1 == index2) - { - if (index2 == 0) ++index2; - else --index2; - } - - break; - case RV_QUADRATIC: - // for each pair of Regions (account for overflow Region too!) - for (cChild = 0; cChild < total - 1; ++cChild) - { - double a = m_ptrMBR[cChild]->getArea(); - - for (cIndex = cChild + 1; cIndex < total; ++cIndex) - { - // get the combined MBR of those two entries. - TimeRegion r; - m_ptrMBR[cChild]->getCombinedRegion(r, *(m_ptrMBR[cIndex])); - - // find the inefficiency of grouping these entries together. - double d = r.getArea() - a - m_ptrMBR[cIndex]->getArea(); - - if (d > inefficiency) - { - inefficiency = d; - index1 = cChild; - index2 = cIndex; - } - } // for (cIndex) - } // for (cChild) - - break; - default: - throw libsupermesh::Tools::NotSupportedException("Node::pickSeeds: Tree variant not supported."); - } -} - -NodePtr Node::findNode(const TimeRegion& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_pIdentifier[cChild] == id) - return m_pTree->readNode(m_pIdentifier[cChild]); - - if (m_ptrMBR[cChild]->containsShape(mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findNode(mbr, id, pathBuffer); - assert(n.get() != l.get()); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} diff --git a/spatialindex-1.8.5/src/mvrtree/Node.h b/spatialindex-1.8.5/src/mvrtree/Node.h deleted file mode 100644 index daf54ba..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Node.h +++ /dev/null @@ -1,195 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class MVRTree; - class Leaf; - class Index; - class Node; - - typedef libsupermesh::Tools::PoolPointer NodePtr; - - class Node : public libsupermesh::SpatialIndex::INode - { - public: - virtual ~Node(); - - // - // libsupermesh::Tools::IObject interface - // - virtual IObject* clone(); - - // - // libsupermesh::Tools::ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // libsupermesh::SpatialIndex::IEntry interface - // - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - - // - // libsupermesh::SpatialIndex::INode interface - // - virtual uint32_t getChildrenCount() const; - virtual id_type getChildIdentifier(uint32_t index) const; - virtual void getChildShape(uint32_t index, IShape** out) const; - virtual void getChildData(uint32_t index, uint32_t& length, byte** data) const; - virtual uint32_t getLevel() const; - virtual bool isIndex() const; - virtual bool isLeaf() const; - - private: - Node(); - Node(MVRTree* pTree, id_type id, uint32_t level, uint32_t capacity); - - virtual Node& operator=(const Node&); - - virtual void insertEntry(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id); - virtual bool deleteEntry(uint32_t index); - - virtual bool insertData( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::stack& pathBuffer, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false, bool forceAdjust = false); - virtual void insertData(TimeRegion& mbr1, id_type id1, TimeRegion& mbr2, id_type id2, Node* oldVersion, std::stack& pathBuffer); - virtual bool deleteData(id_type id, double delTime, std::stack& pathBuffer, bool adjustMBR = false); - - virtual void rtreeSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - virtual void rstarSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - - virtual void pickSeeds(uint32_t& index1, uint32_t& index2, uint32_t total); - - virtual NodePtr chooseSubtree(const TimeRegion& mbr, uint32_t level, std::stack& pathBuffer) = 0; - virtual NodePtr findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer) = 0; - virtual NodePtr findNode(const TimeRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& left, NodePtr& right, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false) = 0; - - MVRTree* m_pTree; - // Parent of all nodes. - - uint32_t m_level; - // The level of the node in the tree. - // Leaves are always at level 0. - - id_type m_identifier; - // The unique ID of this node. - - uint32_t m_children; - // The number of children pointed by this node. - - uint32_t m_capacity; - // Specifies the node capacity. - - TimeRegion m_nodeMBR; - // The minimum bounding region enclosing all data contained in the node. - - byte** m_pData; - // The data stored in the node. - - TimeRegionPtr* m_ptrMBR; - // The corresponding data MBRs. - - id_type* m_pIdentifier; - // The corresponding data identifiers. - - uint32_t* m_pDataLength; - - uint32_t m_totalDataLength; - - class RstarSplitEntry - { - public: - RstarSplitEntry(TimeRegion* pr, uint32_t index, uint32_t dimension) : - m_pRegion(pr), m_index(index), m_sortDim(dimension) {} - - static int compareLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] < pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] > pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return 1; - return 0; - } - - static int compareHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return 1; - return 0; - } - - TimeRegion* m_pRegion; - uint32_t m_index; - uint32_t m_sortDim; - }; // RstarSplitEntry - - class DeleteDataEntry - { - public: - DeleteDataEntry(uint32_t index, double d) : m_index(index), m_increase(d) {} - - static bool compare(DeleteDataEntry e1, DeleteDataEntry e2) { return e1.m_increase < e2.m_increase; } - - uint32_t m_index; - double m_increase; - }; // DeleteDataEntry - - // Needed to access protected members without having to cast from Node. - // It is more efficient than using member functions to access protected members. - friend class MVRTree; - friend class Leaf; - friend class Index; - friend class libsupermesh::Tools::PointerPool; - }; // Node - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h b/spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h deleted file mode 100644 index e182912..0000000 --- a/spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h +++ /dev/null @@ -1,144 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Node.h" - -namespace libsupermesh { namespace Tools -{ - template<> class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - libsupermesh::SpatialIndex::MVRTree::Node* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - if (! m_pool.empty()) - { - libsupermesh::SpatialIndex::MVRTree::Node* p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - ++m_hits; - #endif - - return PoolPointer(p, this); - } - #ifndef NDEBUG - else - { - // fixme: well sort of... - ++m_pointerCount; - ++m_misses; - } - #endif - - return PoolPointer(); - } - - void release(libsupermesh::SpatialIndex::MVRTree::Node* p) - { - if (p != 0) - { - if (m_pool.size() < m_capacity) - { - if (p->m_pData != 0) - { - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - if (p->m_pData[cChild] != 0) delete[] p->m_pData[cChild]; - } - } - - p->m_level = 0; - p->m_identifier = -1; - p->m_children = 0; - p->m_totalDataLength = 0; - - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - protected: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/Statistics.cc b/spatialindex-1.8.5/src/mvrtree/Statistics.cc deleted file mode 100644 index 68601b4..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Statistics.cc +++ /dev/null @@ -1,203 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "Statistics.h" - -using namespace libsupermesh::SpatialIndex::MVRTree; - -Statistics::Statistics() -{ - reset(); -} - -Statistics::Statistics(const Statistics& s) -{ - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u32DeadIndexNodes = s.m_u32DeadIndexNodes; - m_u32DeadLeafNodes = s.m_u32DeadLeafNodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u64TotalData = s.m_u64TotalData; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; -} - -Statistics::~Statistics() -{ -} - -Statistics& Statistics::operator=(const Statistics& s) -{ - if (this != &s) - { - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u32DeadIndexNodes = s.m_u32DeadIndexNodes; - m_u32DeadLeafNodes = s.m_u32DeadLeafNodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u64TotalData = s.m_u64TotalData; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; - } - - return *this; -} - -uint64_t Statistics::getReads() const -{ - return m_u64Reads; -} - -uint64_t Statistics::getWrites() const -{ - return m_u64Writes; -} - -uint32_t Statistics::getNumberOfNodes() const -{ - return m_u32Nodes; -} - -uint64_t Statistics::getNumberOfData() const -{ - return m_u64Data; -} - -uint64_t Statistics::getSplits() const -{ - return m_u64Splits; -} - -uint64_t Statistics::getHits() const -{ - return m_u64Hits; -} - -uint64_t Statistics::getMisses() const -{ - return m_u64Misses; -} - -uint64_t Statistics::getAdjustments() const -{ - return m_u64Adjustments; -} - -uint64_t Statistics::getQueryResults() const -{ - return m_u64QueryResults; -} - -uint32_t Statistics::getTreeHeight() const -{ - uint32_t ret = 0; - - for (size_t cIndex = 0; cIndex < m_treeHeight.size(); ++cIndex) - { - ret = std::max(ret, m_treeHeight[cIndex]); - } - - return ret; -} - -uint32_t Statistics::getNumberOfNodesInLevel(uint32_t l) const -{ - try - { - return m_nodesInLevel.at(l); - } - catch (...) - { - throw libsupermesh::Tools::IndexOutOfBoundsException(l); - } -} - -void Statistics::reset() -{ - m_u64Reads = 0; - m_u64Writes = 0; - m_u64Splits = 0; - m_u64Hits = 0; - m_u64Misses = 0; - m_u32Nodes = 0; - m_u32DeadIndexNodes = 0; - m_u32DeadLeafNodes = 0; - m_u64Adjustments = 0; - m_u64QueryResults = 0; - m_u64Data = 0; - m_u64TotalData = 0; - m_treeHeight.clear(); - m_nodesInLevel.clear(); -} - -std::ostream& libsupermesh::SpatialIndex::MVRTree::operator<<(std::ostream& os, const Statistics& s) -{ - os << "Reads: " << s.m_u64Reads << std::endl - << "Writes: " << s.m_u64Writes << std::endl - << "Hits: " << s.m_u64Hits << std::endl - << "Misses: " << s.m_u64Misses << std::endl - << "Number of live data: " << s.m_u64Data << std::endl - << "Total number of data: " << s.m_u64TotalData << std::endl - << "Number of nodes: " << s.m_u32Nodes << std::endl - << "Numer of dead index nodes: " << s.m_u32DeadIndexNodes << std::endl - << "Numer of dead leaf nodes: " << s.m_u32DeadLeafNodes << std::endl; - - for (size_t cTree = 0; cTree < s.m_treeHeight.size(); ++cTree) - { - os << "Tree " << cTree << ", Height " << s.m_treeHeight[cTree] << std::endl; - } - - for (size_t cLevel = 0; cLevel < s.m_nodesInLevel.size(); ++cLevel) - { - os << "Level " << cLevel << " pages: " << s.m_nodesInLevel[cLevel] << std::endl; - } - - os << "Splits: " << s.m_u64Splits << std::endl - << "Adjustments: " << s.m_u64Adjustments << std::endl - << "Query results: " << s.m_u64QueryResults << std::endl; - - return os; -} diff --git a/spatialindex-1.8.5/src/mvrtree/Statistics.h b/spatialindex-1.8.5/src/mvrtree/Statistics.h deleted file mode 100644 index 2b56641..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Statistics.h +++ /dev/null @@ -1,110 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class MVRTree; - class Node; - class Leaf; - class Index; - - class Statistics : public libsupermesh::SpatialIndex::IStatistics - { - public: - Statistics(); - Statistics(const Statistics&); - virtual ~Statistics(); - Statistics& operator=(const Statistics&); - - // - // IStatistics interface - // - virtual uint64_t getReads() const; - virtual uint64_t getWrites() const; - virtual uint32_t getNumberOfNodes() const; - virtual uint64_t getNumberOfData() const; - - virtual uint64_t getSplits() const; - virtual uint64_t getHits() const; - virtual uint64_t getMisses() const; - virtual uint64_t getAdjustments() const; - virtual uint64_t getQueryResults() const; - virtual uint32_t getTreeHeight() const; - virtual uint32_t getNumberOfNodesInLevel(uint32_t l) const; - - private: - void reset(); - - uint64_t m_u64Reads; - - uint64_t m_u64Writes; - - uint64_t m_u64Splits; - - uint64_t m_u64Hits; - - uint64_t m_u64Misses; - - uint32_t m_u32Nodes; - - uint32_t m_u32DeadIndexNodes; - - uint32_t m_u32DeadLeafNodes; - - uint64_t m_u64Adjustments; - - uint64_t m_u64QueryResults; - - uint64_t m_u64Data; - - uint64_t m_u64TotalData; - - std::vector m_treeHeight; - - std::vector m_nodesInLevel; - - friend class MVRTree; - friend class Node; - friend class Index; - friend class Leaf; - - friend std::ostream& operator<<(std::ostream& os, const Statistics& s); - }; // Statistics - - std::ostream& operator<<(std::ostream& os, const Statistics& s); - } -} } - diff --git a/spatialindex-1.8.5/src/rtree/BulkLoader.cc b/spatialindex-1.8.5/src/rtree/BulkLoader.cc deleted file mode 100644 index 7aca14a..0000000 --- a/spatialindex-1.8.5/src/rtree/BulkLoader.cc +++ /dev/null @@ -1,471 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#ifndef _MSC_VER -#include -#endif - -#include - -#include "RTree.h" -#include "Leaf.h" -#include "Index.h" -#include "BulkLoader.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -// -// ExternalSorter::Record -// -ExternalSorter::Record::Record() -: m_pData(0) -{ -} - -ExternalSorter::Record::Record(const Region& r, id_type id, uint32_t len, byte* pData, uint32_t s) -: m_r(r), m_id(id), m_len(len), m_pData(pData), m_s(s) -{ -} - -ExternalSorter::Record::~Record() -{ - delete[] m_pData; -} - -bool ExternalSorter::Record::operator<(const Record& r) const -{ - if (m_s != r.m_s) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::Record::operator<: Incompatible sorting dimensions."); - - if (m_r.m_pHigh[m_s] + m_r.m_pLow[m_s] < r.m_r.m_pHigh[m_s] + r.m_r.m_pLow[m_s]) - return true; - else - return false; -} - -void ExternalSorter::Record::storeToFile(libsupermesh::Tools::TemporaryFile& f) -{ - f.write(static_cast(m_id)); - f.write(m_r.m_dimension); - f.write(m_s); - - for (uint32_t i = 0; i < m_r.m_dimension; ++i) - { - f.write(m_r.m_pLow[i]); - f.write(m_r.m_pHigh[i]); - } - - f.write(m_len); - if (m_len > 0) f.write(m_len, m_pData); -} - -void ExternalSorter::Record::loadFromFile(libsupermesh::Tools::TemporaryFile& f) -{ - m_id = static_cast(f.readUInt64()); - uint32_t dim = f.readUInt32(); - m_s = f.readUInt32(); - - if (dim != m_r.m_dimension) - { - delete[] m_r.m_pLow; - delete[] m_r.m_pHigh; - m_r.m_dimension = dim; - m_r.m_pLow = new double[dim]; - m_r.m_pHigh = new double[dim]; - } - - for (uint32_t i = 0; i < m_r.m_dimension; ++i) - { - m_r.m_pLow[i] = f.readDouble(); - m_r.m_pHigh[i] = f.readDouble(); - } - - m_len = f.readUInt32(); - delete[] m_pData; m_pData = 0; - if (m_len > 0) f.readBytes(m_len, &m_pData); -} - -// -// ExternalSorter -// -ExternalSorter::ExternalSorter(uint32_t u32PageSize, uint32_t u32BufferPages) -: m_bInsertionPhase(true), m_u32PageSize(u32PageSize), - m_u32BufferPages(u32BufferPages), m_u64TotalEntries(0), m_stI(0) -{ -} - -ExternalSorter::~ExternalSorter() -{ - for (m_stI = 0; m_stI < m_buffer.size(); ++m_stI) delete m_buffer[m_stI]; -} - -void ExternalSorter::insert(Record* r) -{ - if (m_bInsertionPhase == false) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::insert: Input has already been sorted."); - - m_buffer.push_back(r); - ++m_u64TotalEntries; - - // this will create the initial, sorted buckets before the - // external merge sort. - if (m_buffer.size() >= m_u32PageSize * m_u32BufferPages) - { - std::sort(m_buffer.begin(), m_buffer.end(), Record::SortAscending()); - libsupermesh::Tools::TemporaryFile* tf = new libsupermesh::Tools::TemporaryFile(); - for (size_t j = 0; j < m_buffer.size(); ++j) - { - m_buffer[j]->storeToFile(*tf); - delete m_buffer[j]; - } - m_buffer.clear(); - tf->rewindForReading(); - m_runs.push_back(libsupermesh::Tools::SmartPointer(tf)); - } -} - -void ExternalSorter::sort() -{ - if (m_bInsertionPhase == false) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::sort: Input has already been sorted."); - - if (m_runs.empty()) - { - // The data fits in main memory. No need to store to disk. - std::sort(m_buffer.begin(), m_buffer.end(), Record::SortAscending()); - m_bInsertionPhase = false; - return; - } - - if (m_buffer.size() > 0) - { - // Whatever remained in the buffer (if not filled) needs to be stored - // as the final bucket. - std::sort(m_buffer.begin(), m_buffer.end(), Record::SortAscending()); - libsupermesh::Tools::TemporaryFile* tf = new libsupermesh::Tools::TemporaryFile(); - for (size_t j = 0; j < m_buffer.size(); ++j) - { - m_buffer[j]->storeToFile(*tf); - delete m_buffer[j]; - } - m_buffer.clear(); - tf->rewindForReading(); - m_runs.push_back(libsupermesh::Tools::SmartPointer(tf)); - } - - if (m_runs.size() == 1) - { - m_sortedFile = m_runs.front(); - } - else - { - Record* r = 0; - - while (m_runs.size() > 1) - { - libsupermesh::Tools::SmartPointer tf(new libsupermesh::Tools::TemporaryFile()); - std::vector > buckets; - std::vector > buffers; - std::priority_queue, PQEntry::SortAscending> pq; - - // initialize buffers and priority queue. - std::list >::iterator it = m_runs.begin(); - for (uint32_t i = 0; i < (std::min)(static_cast(m_runs.size()), m_u32BufferPages); ++i) - { - buckets.push_back(*it); - buffers.push_back(std::queue()); - - r = new Record(); - r->loadFromFile(**it); - // a run cannot be empty initially, so this should never fail. - pq.push(PQEntry(r, i)); - - for (uint32_t j = 0; j < m_u32PageSize - 1; ++j) - { - // fill the buffer with the rest of the page of records. - try - { - r = new Record(); - r->loadFromFile(**it); - buffers.back().push(r); - } - catch (libsupermesh::Tools::EndOfStreamException) - { - delete r; - break; - } - } - ++it; - } - - // exhaust buckets, buffers, and priority queue. - while (! pq.empty()) - { - PQEntry e = pq.top(); pq.pop(); - e.m_r->storeToFile(*tf); - delete e.m_r; - - if (! buckets[e.m_u32Index]->eof() && buffers[e.m_u32Index].empty()) - { - for (uint32_t j = 0; j < m_u32PageSize; ++j) - { - try - { - r = new Record(); - r->loadFromFile(*buckets[e.m_u32Index]); - buffers[e.m_u32Index].push(r); - } - catch (libsupermesh::Tools::EndOfStreamException) - { - delete r; - break; - } - } - } - - if (! buffers[e.m_u32Index].empty()) - { - e.m_r = buffers[e.m_u32Index].front(); - buffers[e.m_u32Index].pop(); - pq.push(e); - } - } - - tf->rewindForReading(); - - // check if another pass is needed. - uint32_t u32Count = std::min(static_cast(m_runs.size()), m_u32BufferPages); - for (uint32_t i = 0; i < u32Count; ++i) - { - m_runs.pop_front(); - } - - if (m_runs.size() == 0) - { - m_sortedFile = tf; - break; - } - else - { - m_runs.push_back(tf); - } - } - } - - m_bInsertionPhase = false; -} - -ExternalSorter::Record* ExternalSorter::getNextRecord() -{ - if (m_bInsertionPhase == true) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::getNextRecord: Input has not been sorted yet."); - - Record* ret; - - if (m_sortedFile.get() == 0) - { - if (m_stI < m_buffer.size()) - { - ret = m_buffer[m_stI]; - m_buffer[m_stI] = 0; - ++m_stI; - } - else - throw libsupermesh::Tools::EndOfStreamException(""); - } - else - { - ret = new Record(); - ret->loadFromFile(*m_sortedFile); - } - - return ret; -} - -inline uint64_t ExternalSorter::getTotalEntries() const -{ - return m_u64TotalEntries; -} - -// -// BulkLoader -// -void BulkLoader::bulkLoadUsingSTR( - libsupermesh::SpatialIndex::RTree::RTree* pTree, - IDataStream& stream, - uint32_t bindex, - uint32_t bleaf, - uint32_t pageSize, - uint32_t numberOfPages -) { - if (! stream.hasNext()) - throw libsupermesh::Tools::IllegalArgumentException( - "RTree::BulkLoader::bulkLoadUsingSTR: Empty data stream given." - ); - - NodePtr n = pTree->readNode(pTree->m_rootID); - pTree->deleteNode(n.get()); - - #ifndef NDEBUG - std::cerr << "RTree::BulkLoader: Sorting data." << std::endl; - #endif - - libsupermesh::Tools::SmartPointer es = libsupermesh::Tools::SmartPointer(new ExternalSorter(pageSize, numberOfPages)); - - while (stream.hasNext()) - { - Data* d = reinterpret_cast(stream.getNext()); - if (d == 0) - throw libsupermesh::Tools::IllegalArgumentException( - "bulkLoadUsingSTR: RTree bulk load expects libsupermesh::SpatialIndex::RTree::Data entries." - ); - - es->insert(new ExternalSorter::Record(d->m_region, d->m_id, d->m_dataLength, d->m_pData, 0)); - d->m_pData = 0; - delete d; - } - es->sort(); - - pTree->m_stats.m_u64Data = es->getTotalEntries(); - - // create index levels. - uint32_t level = 0; - - while (true) - { - #ifndef NDEBUG - std::cerr << "RTree::BulkLoader: Building level " << level << std::endl; - #endif - - pTree->m_stats.m_nodesInLevel.push_back(0); - - libsupermesh::Tools::SmartPointer es2 = libsupermesh::Tools::SmartPointer(new ExternalSorter(pageSize, numberOfPages)); - createLevel(pTree, es, 0, bleaf, bindex, level++, es2, pageSize, numberOfPages); - es = es2; - - if (es->getTotalEntries() == 1) break; - es->sort(); - } - - pTree->m_stats.m_u32TreeHeight = level; - pTree->storeHeader(); -} - -void BulkLoader::createLevel( - libsupermesh::SpatialIndex::RTree::RTree* pTree, - libsupermesh::Tools::SmartPointer es, - uint32_t dimension, - uint32_t bleaf, - uint32_t bindex, - uint32_t level, - libsupermesh::Tools::SmartPointer es2, - uint32_t pageSize, - uint32_t numberOfPages -) { - uint64_t b = (level == 0) ? bleaf : bindex; - uint64_t P = static_cast(std::ceil(static_cast(es->getTotalEntries()) / static_cast(b))); - uint64_t S = static_cast(std::ceil(std::sqrt(static_cast(P)))); - - if (S == 1 || dimension == pTree->m_dimension - 1 || S * b == es->getTotalEntries()) - { - std::vector node; - ExternalSorter::Record* r; - - while (true) - { - try { r = es->getNextRecord(); } catch (libsupermesh::Tools::EndOfStreamException) { break; } - node.push_back(r); - - if (node.size() == b) - { - Node* n = createNode(pTree, node, level); - node.clear(); - pTree->writeNode(n); - es2->insert(new ExternalSorter::Record(n->m_nodeMBR, n->m_identifier, 0, 0, 0)); - pTree->m_rootID = n->m_identifier; - // special case when the root has exactly bindex entries. - delete n; - } - } - - if (! node.empty()) - { - Node* n = createNode(pTree, node, level); - pTree->writeNode(n); - es2->insert(new ExternalSorter::Record(n->m_nodeMBR, n->m_identifier, 0, 0, 0)); - pTree->m_rootID = n->m_identifier; - delete n; - } - } - else - { - bool bMore = true; - - while (bMore) - { - ExternalSorter::Record* pR; - libsupermesh::Tools::SmartPointer es3 = libsupermesh::Tools::SmartPointer(new ExternalSorter(pageSize, numberOfPages)); - - for (uint64_t i = 0; i < S * b; ++i) - { - try { pR = es->getNextRecord(); } - catch (libsupermesh::Tools::EndOfStreamException) { bMore = false; break; } - pR->m_s = dimension + 1; - es3->insert(pR); - } - es3->sort(); - createLevel(pTree, es3, dimension + 1, bleaf, bindex, level, es2, pageSize, numberOfPages); - } - } -} - -Node* BulkLoader::createNode(libsupermesh::SpatialIndex::RTree::RTree* pTree, std::vector& e, uint32_t level) -{ - Node* n; - - if (level == 0) n = new Leaf(pTree, -1); - else n = new Index(pTree, -1, level); - - for (size_t cChild = 0; cChild < e.size(); ++cChild) - { - n->insertEntry(e[cChild]->m_len, e[cChild]->m_pData, e[cChild]->m_r, e[cChild]->m_id); - e[cChild]->m_pData = 0; - delete e[cChild]; - } - - return n; -} diff --git a/spatialindex-1.8.5/src/rtree/BulkLoader.h b/spatialindex-1.8.5/src/rtree/BulkLoader.h deleted file mode 100644 index 27f4f0b..0000000 --- a/spatialindex-1.8.5/src/rtree/BulkLoader.h +++ /dev/null @@ -1,142 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class ExternalSorter - { - public: - class Record - { - public: - Record(); - Record(const Region& r, id_type id, uint32_t len, byte* pData, uint32_t s); - ~Record(); - - bool operator<(const Record& r) const; - - void storeToFile(libsupermesh::Tools::TemporaryFile& f); - void loadFromFile(libsupermesh::Tools::TemporaryFile& f); - - struct SortAscending : public std::binary_function - { - bool operator()(Record* const r1, Record* const r2) - { - if (*r1 < *r2) return true; - else return false; - } - }; - - public: - Region m_r; - id_type m_id; - uint32_t m_len; - byte* m_pData; - uint32_t m_s; - }; - - public: - ExternalSorter(uint32_t u32PageSize, uint32_t u32BufferPages); - virtual ~ExternalSorter(); - - void insert(Record* r); - void sort(); - Record* getNextRecord(); - uint64_t getTotalEntries() const; - - private: - class PQEntry - { - public: - PQEntry(Record* r, uint32_t u32Index) : m_r(r), m_u32Index(u32Index) {} - - struct SortAscending : public std::binary_function - { - bool operator()(const PQEntry& e1, const PQEntry& e2) - { - if (*(e1.m_r) < *(e2.m_r)) return true; - else return false; - } - }; - - Record* m_r; - uint32_t m_u32Index; - }; - - private: - bool m_bInsertionPhase; - uint32_t m_u32PageSize; - uint32_t m_u32BufferPages; - libsupermesh::Tools::SmartPointer m_sortedFile; - std::list > m_runs; - std::vector m_buffer; - uint64_t m_u64TotalEntries; - uint32_t m_stI; - }; - - class BulkLoader - { - public: - void bulkLoadUsingSTR( - RTree* pTree, - IDataStream& stream, - uint32_t bindex, - uint32_t bleaf, - uint32_t pageSize, // The number of node entries per page. - uint32_t numberOfPages // The total number of pages to use. - ); - - protected: - void createLevel( - RTree* pTree, - libsupermesh::Tools::SmartPointer es, - uint32_t dimension, - uint32_t indexSize, - uint32_t leafSize, - uint32_t level, - libsupermesh::Tools::SmartPointer es2, - uint32_t pageSize, - uint32_t numberOfPages - ); - - Node* createNode( - RTree* pTree, - std::vector& e, - uint32_t level - ); - }; - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Index.cc b/spatialindex-1.8.5/src/rtree/Index.cc deleted file mode 100644 index 5e093e7..0000000 --- a/spatialindex-1.8.5/src/rtree/Index.cc +++ /dev/null @@ -1,384 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include "RTree.h" -#include "Node.h" -#include "Leaf.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -Index::~Index() -{ -} - -Index::Index(libsupermesh::SpatialIndex::RTree::RTree* pTree, id_type id, uint32_t level) : Node(pTree, id, level, pTree->m_indexCapacity) -{ -} - -NodePtr Index::chooseSubtree(const Region& mbr, uint32_t insertionLevel, std::stack& pathBuffer) -{ - if (m_level == insertionLevel) return NodePtr(this, &(m_pTree->m_indexPool)); - - pathBuffer.push(m_identifier); - - uint32_t child = 0; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - child = findLeastEnlargement(mbr); - break; - case RV_RSTAR: - if (m_level == 1) - { - // if this node points to leaves... - child = findLeastOverlap(mbr); - } - else - { - child = findLeastEnlargement(mbr); - } - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::chooseSubtree: Tree variant not supported."); - } - assert(child != std::numeric_limits::max()); - - NodePtr n = m_pTree->readNode(m_pIdentifier[child]); - NodePtr ret = n->chooseSubtree(mbr, insertionLevel, pathBuffer); - assert(n.unique()); - if (ret.get() == n.get()) n.relinquish(); - - return ret; -} - -NodePtr Index::findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_ptrMBR[cChild]->containsRegion(mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findLeaf(mbr, id, pathBuffer); - if (n.get() == l.get()) n.relinquish(); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} - -void Index::split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& ptrLeft, NodePtr& ptrRight) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::split: Tree variant not supported."); - } - - ptrLeft = m_pTree->m_indexPool.acquire(); - ptrRight = m_pTree->m_indexPool.acquire(); - - if (ptrLeft.get() == 0) ptrLeft = NodePtr(new Index(m_pTree, m_identifier, m_level), &(m_pTree->m_indexPool)); - if (ptrRight.get() == 0) ptrRight = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - - ptrLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - ptrRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - ptrLeft->insertEntry(0, 0, *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - ptrRight->insertEntry(0, 0, *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - } -} - -uint32_t Index::findLeastEnlargement(const Region& r) const -{ - double area = std::numeric_limits::max(); - uint32_t best = std::numeric_limits::max(); - - RegionPtr t = m_pTree->m_regionPool.acquire(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_ptrMBR[cChild]->getCombinedRegion(*t, r); - - double a = m_ptrMBR[cChild]->getArea(); - double enl = t->getArea() - a; - - if (enl < area) - { - area = enl; - best = cChild; - } - else if (enl == area) - { - // this will rarely happen, so compute best area on the fly only - // when necessary. - if (a < m_ptrMBR[best]->getArea()) best = cChild; - } - } - - return best; -} - -uint32_t Index::findLeastOverlap(const Region& r) const -{ - OverlapEntry** entries = new OverlapEntry*[m_children]; - - double leastOverlap = std::numeric_limits::max(); - double me = std::numeric_limits::max(); - OverlapEntry* best = 0; - - // find combined region and enlargement of every entry and store it. - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - try - { - entries[cChild] = new OverlapEntry(); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete entries[i]; - delete[] entries; - throw; - } - - entries[cChild]->m_index = cChild; - entries[cChild]->m_original = m_ptrMBR[cChild]; - entries[cChild]->m_combined = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->getCombinedRegion(*(entries[cChild]->m_combined), r); - entries[cChild]->m_oa = entries[cChild]->m_original->getArea(); - entries[cChild]->m_ca = entries[cChild]->m_combined->getArea(); - entries[cChild]->m_enlargement = entries[cChild]->m_ca - entries[cChild]->m_oa; - - if (entries[cChild]->m_enlargement < me) - { - me = entries[cChild]->m_enlargement; - best = entries[cChild]; - } - else if (entries[cChild]->m_enlargement == me && entries[cChild]->m_oa < best->m_oa) - { - best = entries[cChild]; - } - } - - if (me < -std::numeric_limits::epsilon() || me > std::numeric_limits::epsilon()) - { - uint32_t cIterations; - - if (m_children > m_pTree->m_nearMinimumOverlapFactor) - { - // sort entries in increasing order of enlargement. - ::qsort(entries, m_children, - sizeof(OverlapEntry*), - OverlapEntry::compareEntries); - assert(entries[0]->m_enlargement <= entries[m_children - 1]->m_enlargement); - - cIterations = m_pTree->m_nearMinimumOverlapFactor; - } - else - { - cIterations = m_children; - } - - // calculate overlap of most important original entries (near minimum overlap cost). - for (uint32_t cIndex = 0; cIndex < cIterations; ++cIndex) - { - double dif = 0.0; - OverlapEntry* e = entries[cIndex]; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (e->m_index != cChild) - { - double f = e->m_combined->getIntersectingArea(*(m_ptrMBR[cChild])); - if (f != 0.0) dif += f - e->m_original->getIntersectingArea(*(m_ptrMBR[cChild])); - } - } // for (cChild) - - if (dif < leastOverlap) - { - leastOverlap = dif; - best = entries[cIndex]; - } - else if (dif == leastOverlap) - { - if (e->m_enlargement == best->m_enlargement) - { - // keep the one with least area. - if (e->m_original->getArea() < best->m_original->getArea()) best = entries[cIndex]; - } - else - { - // keep the one with least enlargement. - if (e->m_enlargement < best->m_enlargement) best = entries[cIndex]; - } - } - } // for (cIndex) - } - - uint32_t ret = best->m_index; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - delete entries[cChild]; - } - delete[] entries; - - return ret; -} - -void Index::adjustTree(Node* n, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n->m_identifier) break; - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - bool bContained = m_nodeMBR.containsRegion(n->m_nodeMBR); - bool bTouches = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool bRecompute = (! bContained || (bTouches && m_pTree->m_bTightMBRs)); - - *(m_ptrMBR[child]) = n->m_nodeMBR; - - if (bRecompute) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - m_pTree->writeNode(this); - - if (bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} - -void Index::adjustTree(Node* n1, Node* n2, std::stack& pathBuffer, byte* overflowTable) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n1->m_identifier) break; - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - bool bContained = m_nodeMBR.containsRegion(n1->m_nodeMBR); - bool bTouches = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool bRecompute = (! bContained || (bTouches && m_pTree->m_bTightMBRs)); - - *(m_ptrMBR[child]) = n1->m_nodeMBR; - - if (bRecompute) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - // No write necessary here. insertData will write the node if needed. - //m_pTree->writeNode(this); - - bool bAdjusted = insertData(0, 0, n2->m_nodeMBR, n2->m_identifier, pathBuffer, overflowTable); - - // if n2 is contained in the node and there was no split or reinsert, - // we need to adjust only if recalculation took place. - // In all other cases insertData above took care of adjustment. - if ((! bAdjusted) && bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} diff --git a/spatialindex-1.8.5/src/rtree/Index.h b/spatialindex-1.8.5/src/rtree/Index.h deleted file mode 100644 index b01f021..0000000 --- a/spatialindex-1.8.5/src/rtree/Index.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class Index : public Node - { - public: - virtual ~Index(); - - protected: - Index(RTree* pTree, id_type id, uint32_t level); - - virtual NodePtr chooseSubtree(const Region& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& left, NodePtr& right); - - uint32_t findLeastEnlargement(const Region&) const; - uint32_t findLeastOverlap(const Region&) const; - - void adjustTree(Node*, std::stack&); - void adjustTree(Node*, Node*, std::stack&, byte* overflowTable); - - class OverlapEntry - { - public: - uint32_t m_index; - double m_enlargement; - RegionPtr m_original; - RegionPtr m_combined; - double m_oa; - double m_ca; - - static int compareEntries(const void* pv1, const void* pv2) - { - OverlapEntry* pe1 = * (OverlapEntry**) pv1; - OverlapEntry* pe2 = * (OverlapEntry**) pv2; - - if (pe1->m_enlargement < pe2->m_enlargement) return -1; - if (pe1->m_enlargement > pe2->m_enlargement) return 1; - return 0; - } - }; // OverlapEntry - - friend class RTree; - friend class Node; - friend class BulkLoader; - }; // Index - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Leaf.cc b/spatialindex-1.8.5/src/rtree/Leaf.cc deleted file mode 100644 index 7cb4b1c..0000000 --- a/spatialindex-1.8.5/src/rtree/Leaf.cc +++ /dev/null @@ -1,151 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "RTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -Leaf::~Leaf() -{ -} - -Leaf::Leaf(libsupermesh::SpatialIndex::RTree::RTree* pTree, id_type id): Node(pTree, id, 0, pTree->m_leafCapacity) -{ -} - -NodePtr Leaf::chooseSubtree(const Region&, uint32_t, std::stack&) -{ - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - return NodePtr(this, &(m_pTree->m_leafPool)); -} - -NodePtr Leaf::findLeaf(const Region& mbr, id_type id, std::stack&) -{ - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - if (m_pIdentifier[cChild] == id && mbr == *(m_ptrMBR[cChild])) return NodePtr(this, &(m_pTree->m_leafPool)); - } - - return NodePtr(); -} - -void Leaf::split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Leaf::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_leafPool.acquire(); - pRight = m_pTree->m_leafPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - if (pRight.get() == 0) pRight = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(m_pDataLength[g1[cIndex]], m_pData[g1[cIndex]], *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g1[cIndex]] = 0; - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(m_pDataLength[g2[cIndex]], m_pData[g2[cIndex]], *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g2[cIndex]] = 0; - } -} - -void Leaf::deleteData(id_type id, std::stack& pathBuffer) -{ - uint32_t child; - - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == id) break; - } - - deleteEntry(child); - m_pTree->writeNode(this); - - std::stack toReinsert; - NodePtr ptrThis(this, &(m_pTree->m_leafPool)); - condenseTree(toReinsert, pathBuffer, ptrThis); - ptrThis.relinquish(); - - // re-insert eliminated nodes. - while (! toReinsert.empty()) - { - NodePtr n = toReinsert.top(); toReinsert.pop(); - m_pTree->deleteNode(n.get()); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - // keep this in the for loop. The tree height might change after insertions. - byte* overflowTable = new byte[m_pTree->m_stats.m_u32TreeHeight]; - memset(overflowTable, 0, m_pTree->m_stats.m_u32TreeHeight); - m_pTree->insertData_impl(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild], n->m_level, overflowTable); - n->m_pData[cChild] = 0; - delete[] overflowTable; - } - if (n.get() == this) n.relinquish(); - } -} diff --git a/spatialindex-1.8.5/src/rtree/Leaf.h b/spatialindex-1.8.5/src/rtree/Leaf.h deleted file mode 100644 index 9ea10e7..0000000 --- a/spatialindex-1.8.5/src/rtree/Leaf.h +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class Leaf : public Node - { - public: - virtual ~Leaf(); - - protected: - Leaf(RTree* pTree, id_type id); - - virtual NodePtr chooseSubtree(const Region& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& left, NodePtr& right); - - virtual void deleteData(id_type id, std::stack& pathBuffer); - - friend class RTree; - friend class BulkLoader; - }; // Leaf - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Makefile.am b/spatialindex-1.8.5/src/rtree/Makefile.am deleted file mode 100644 index e1bcd62..0000000 --- a/spatialindex-1.8.5/src/rtree/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = librtree.la -INCLUDES = -I../../include -librtree_la_SOURCES = BulkLoader.cc Index.cc Leaf.cc Node.cc RTree.cc Statistics.cc BulkLoader.h Index.h Leaf.h Node.h PointerPoolNode.h RTree.h Statistics.h diff --git a/spatialindex-1.8.5/src/rtree/Makefile.in b/spatialindex-1.8.5/src/rtree/Makefile.in deleted file mode 100644 index 85aeaf2..0000000 --- a/spatialindex-1.8.5/src/rtree/Makefile.in +++ /dev/null @@ -1,602 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/rtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -librtree_la_LIBADD = -am_librtree_la_OBJECTS = BulkLoader.lo Index.lo Leaf.lo Node.lo \ - RTree.lo Statistics.lo -librtree_la_OBJECTS = $(am_librtree_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(librtree_la_SOURCES) -DIST_SOURCES = $(librtree_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = librtree.la -INCLUDES = -I../../include -librtree_la_SOURCES = BulkLoader.cc Index.cc Leaf.cc Node.cc RTree.cc Statistics.cc BulkLoader.h Index.h Leaf.h Node.h PointerPoolNode.h RTree.h Statistics.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/rtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -librtree.la: $(librtree_la_OBJECTS) $(librtree_la_DEPENDENCIES) $(EXTRA_librtree_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(librtree_la_OBJECTS) $(librtree_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BulkLoader.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Leaf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTree.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Statistics.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/rtree/Node.cc b/spatialindex-1.8.5/src/rtree/Node.cc deleted file mode 100644 index 28ffc23..0000000 --- a/spatialindex-1.8.5/src/rtree/Node.cc +++ /dev/null @@ -1,1087 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -#include "RTree.h" -#include "Node.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -// -// libsupermesh::Tools::IObject interface -// -libsupermesh::Tools::IObject* Node::clone() -{ - throw libsupermesh::Tools::NotSupportedException("IObject::clone should never be called."); -} - -// -// libsupermesh::Tools::ISerializable interface -// -uint32_t Node::getByteArraySize() -{ - return - (sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(uint32_t) + - (m_children * (m_pTree->m_dimension * sizeof(double) * 2 + sizeof(id_type) + sizeof(uint32_t))) + - m_totalDataLength + - (2 * m_pTree->m_dimension * sizeof(double))); -} - -void Node::loadFromByteArray(const byte* ptr) -{ - m_nodeMBR = m_pTree->m_infiniteRegion; - - // skip the node type information, it is not needed. - ptr += sizeof(uint32_t); - - memcpy(&m_level, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&m_children, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - m_ptrMBR[u32Child] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[u32Child]) = m_pTree->m_infiniteRegion; - - memcpy(m_ptrMBR[u32Child]->m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[u32Child]->m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(&(m_pIdentifier[u32Child]), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(&(m_pDataLength[u32Child]), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[u32Child] > 0) - { - m_totalDataLength += m_pDataLength[u32Child]; - m_pData[u32Child] = new byte[m_pDataLength[u32Child]]; - memcpy(m_pData[u32Child], ptr, m_pDataLength[u32Child]); - ptr += m_pDataLength[u32Child]; - } - else - { - m_pData[u32Child] = 0; - } - - //m_nodeMBR.combineRegion(*(m_ptrMBR[u32Child])); - } - - memcpy(m_nodeMBR.m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -void Node::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - - *data = new byte[len]; - byte* ptr = *data; - - uint32_t nodeType; - - if (m_level == 0) nodeType = PersistentLeaf; - else nodeType = PersistentIndex; - - memcpy(ptr, &nodeType, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_level, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_children, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - memcpy(ptr, m_ptrMBR[u32Child]->m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[u32Child]->m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, &(m_pIdentifier[u32Child]), sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(ptr, &(m_pDataLength[u32Child]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[u32Child] > 0) - { - memcpy(ptr, m_pData[u32Child], m_pDataLength[u32Child]); - ptr += m_pDataLength[u32Child]; - } - } - - // store the node MBR for efficiency. This increases the node size a little bit. - memcpy(ptr, m_nodeMBR.m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pHigh, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); - - assert(len == (ptr - *data) + m_pTree->m_dimension * sizeof(double)); -} - -// -// libsupermesh::SpatialIndex::IEntry interface -// -libsupermesh::SpatialIndex::id_type Node::getIdentifier() const -{ - return m_identifier; -} - -void Node::getShape(IShape** out) const -{ - *out = new Region(m_nodeMBR); -} - -// -// libsupermesh::SpatialIndex::INode interface -// -uint32_t Node::getChildrenCount() const -{ - return m_children; -} - -libsupermesh::SpatialIndex::id_type Node::getChildIdentifier(uint32_t index) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pIdentifier[index]; -} - -void Node::getChildShape(uint32_t index, IShape** out) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - *out = new Region(*(m_ptrMBR[index])); -} - -void Node::getChildData(uint32_t index, uint32_t& length, byte** data) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - if (m_pData[index] == NULL) - { - length = 0; - data = NULL; - } - else - { - length = m_pDataLength[index]; - *data = m_pData[index]; - } -} - -uint32_t Node::getLevel() const -{ - return m_level; -} - -bool Node::isLeaf() const -{ - return (m_level == 0); -} - -bool Node::isIndex() const -{ - return (m_level != 0); -} - -// -// Internal -// - -Node::Node() : - m_pTree(0), - m_level(0), - m_identifier(-1), - m_children(0), - m_capacity(0), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ -} - -Node::Node(libsupermesh::SpatialIndex::RTree::RTree* pTree, id_type id, uint32_t level, uint32_t capacity) : - m_pTree(pTree), - m_level(level), - m_identifier(id), - m_children(0), - m_capacity(capacity), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ - m_nodeMBR.makeInfinite(m_pTree->m_dimension); - - try - { - m_pDataLength = new uint32_t[m_capacity + 1]; - m_pData = new byte*[m_capacity + 1]; - m_ptrMBR = new RegionPtr[m_capacity + 1]; - m_pIdentifier = new id_type[m_capacity + 1]; - } - catch (...) - { - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - throw; - } -} - -Node::~Node() -{ - if (m_pData != 0) - { - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - if (m_pData[u32Child] != 0) delete[] m_pData[u32Child]; - } - - delete[] m_pData; - } - - delete[] m_pDataLength; - delete[] m_ptrMBR; - delete[] m_pIdentifier; -} - -Node& Node::operator=(const Node&) -{ - throw libsupermesh::Tools::IllegalStateException("operator =: This should never be called."); -} - -void Node::insertEntry(uint32_t dataLength, byte* pData, Region& mbr, id_type id) -{ - assert(m_children < m_capacity); - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - m_totalDataLength += dataLength; - ++m_children; - - m_nodeMBR.combineRegion(mbr); -} - -void Node::deleteEntry(uint32_t index) -{ - assert(index >= 0 && index < m_children); - - // cache it, since I might need it for "touches" later. - RegionPtr ptrR = m_ptrMBR[index]; - - m_totalDataLength -= m_pDataLength[index]; - if (m_pData[index] != 0) delete[] m_pData[index]; - - if (m_children > 1 && index != m_children - 1) - { - m_pDataLength[index] = m_pDataLength[m_children - 1]; - m_pData[index] = m_pData[m_children - 1]; - m_ptrMBR[index] = m_ptrMBR[m_children - 1]; - m_pIdentifier[index] = m_pIdentifier[m_children - 1]; - } - - --m_children; - - // WARNING: index has now changed. Do not use it below here. - - if (m_children == 0) - { - m_nodeMBR = m_pTree->m_infiniteRegion; - } - else if (m_pTree->m_bTightMBRs && m_nodeMBR.touchesRegion(*ptrR)) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[u32Child]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[u32Child]->m_pHigh[cDim]); - } - } - } -} - -bool Node::insertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable) -{ - if (m_children < m_capacity) - { - bool adjusted = false; - - // this has to happen before insertEntry modifies m_nodeMBR. - bool b = m_nodeMBR.containsRegion(mbr); - - insertEntry(dataLength, pData, mbr, id); - m_pTree->writeNode(this); - - if ((! b) && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - adjusted = true; - } - - return adjusted; - } - else if (m_pTree->m_treeVariant == RV_RSTAR && (! pathBuffer.empty()) && overflowTable[m_level] == 0) - { - overflowTable[m_level] = 1; - - std::vector vReinsert, vKeep; - reinsertData(dataLength, pData, mbr, id, vReinsert, vKeep); - - uint32_t lReinsert = static_cast(vReinsert.size()); - uint32_t lKeep = static_cast(vKeep.size()); - - byte** reinsertdata = 0; - RegionPtr* reinsertmbr = 0; - id_type* reinsertid = 0; - uint32_t* reinsertlen = 0; - byte** keepdata = 0; - RegionPtr* keepmbr = 0; - id_type* keepid = 0; - uint32_t* keeplen = 0; - - try - { - reinsertdata = new byte*[lReinsert]; - reinsertmbr = new RegionPtr[lReinsert]; - reinsertid = new id_type[lReinsert]; - reinsertlen = new uint32_t[lReinsert]; - - keepdata = new byte*[m_capacity + 1]; - keepmbr = new RegionPtr[m_capacity + 1]; - keepid = new id_type[m_capacity + 1]; - keeplen = new uint32_t[m_capacity + 1]; - } - catch (...) - { - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - delete[] keepdata; - delete[] keepmbr; - delete[] keepid; - delete[] keeplen; - throw; - } - - uint32_t cIndex; - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - reinsertlen[cIndex] = m_pDataLength[vReinsert[cIndex]]; - reinsertdata[cIndex] = m_pData[vReinsert[cIndex]]; - reinsertmbr[cIndex] = m_ptrMBR[vReinsert[cIndex]]; - reinsertid[cIndex] = m_pIdentifier[vReinsert[cIndex]]; - } - - for (cIndex = 0; cIndex < lKeep; ++cIndex) - { - keeplen[cIndex] = m_pDataLength[vKeep[cIndex]]; - keepdata[cIndex] = m_pData[vKeep[cIndex]]; - keepmbr[cIndex] = m_ptrMBR[vKeep[cIndex]]; - keepid[cIndex] = m_pIdentifier[vKeep[cIndex]]; - } - - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - - m_pDataLength = keeplen; - m_pData = keepdata; - m_ptrMBR = keepmbr; - m_pIdentifier = keepid; - m_children = lKeep; - m_totalDataLength = 0; - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) m_totalDataLength += m_pDataLength[u32Child]; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[u32Child]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[u32Child]->m_pHigh[cDim]); - } - } - - m_pTree->writeNode(this); - - // Divertion from R*-Tree algorithm here. First adjust - // the path to the root, then start reinserts, to avoid complicated handling - // of changes to the same node from multiple insertions. - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - m_pTree->insertData_impl( - reinsertlen[cIndex], reinsertdata[cIndex], - *(reinsertmbr[cIndex]), reinsertid[cIndex], - m_level, overflowTable); - } - - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - - return true; - } - else - { - NodePtr n; - NodePtr nn; - split(dataLength, pData, mbr, id, n, nn); - - if (pathBuffer.empty()) - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = -1; - nn->m_identifier = -1; - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - NodePtr ptrR = m_pTree->m_indexPool.acquire(); - if (ptrR.get() == 0) - { - ptrR = NodePtr(new Index(m_pTree, m_pTree->m_rootID, m_level + 1), &(m_pTree->m_indexPool)); - } - else - { - //ptrR->m_pTree = m_pTree; - ptrR->m_identifier = m_pTree->m_rootID; - ptrR->m_level = m_level + 1; - ptrR->m_nodeMBR = m_pTree->m_infiniteRegion; - } - - ptrR->insertEntry(0, 0, n->m_nodeMBR, n->m_identifier); - ptrR->insertEntry(0, 0, nn->m_nodeMBR, nn->m_identifier); - - m_pTree->writeNode(ptrR.get()); - - m_pTree->m_stats.m_nodesInLevel[m_level] = 2; - m_pTree->m_stats.m_nodesInLevel.push_back(1); - m_pTree->m_stats.m_u32TreeHeight = m_level + 2; - } - else - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = m_identifier; - nn->m_identifier = -1; - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(n.get(), nn.get(), pathBuffer, overflowTable); - } - - return true; - } -} - -void Node::reinsertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& reinsert, std::vector& keep) -{ - ReinsertEntry** v = new ReinsertEntry*[m_capacity + 1]; - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - PointPtr nc = m_pTree->m_pointPool.acquire(); - m_nodeMBR.getCenter(*nc); - PointPtr c = m_pTree->m_pointPool.acquire(); - - for (uint32_t u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - try - { - v[u32Child] = new ReinsertEntry(u32Child, 0.0); - } - catch (...) - { - for (uint32_t i = 0; i < u32Child; ++i) delete v[i]; - delete[] v; - throw; - } - - m_ptrMBR[u32Child]->getCenter(*c); - - // calculate relative distance of every entry from the node MBR (ignore square root.) - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - double d = nc->m_pCoords[cDim] - c->m_pCoords[cDim]; - v[u32Child]->m_dist += d * d; - } - } - - // sort by increasing order of distances. - ::qsort(v, m_capacity + 1, sizeof(ReinsertEntry*), ReinsertEntry::compareReinsertEntry); - - uint32_t cReinsert = static_cast(std::floor((m_capacity + 1) * m_pTree->m_reinsertFactor)); - - uint32_t cCount; - - for (cCount = 0; cCount < cReinsert; ++cCount) - { - reinsert.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - for (cCount = cReinsert; cCount < m_capacity + 1; ++cCount) - { - keep.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - delete[] v; -} - -void Node::rtreeSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - uint32_t u32Child; - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - // use this mask array for marking visited entries. - byte* mask = new byte[m_capacity + 1]; - memset(mask, 0, m_capacity + 1); - - // insert new data in the node for easier manipulation. Data arrays are always - // by one larger than node capacity. - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - // m_totalDataLength does not need to be increased here. - - // initialize each group with the seed entries. - uint32_t seed1, seed2; - pickSeeds(seed1, seed2); - - group1.push_back(seed1); - group2.push_back(seed2); - - mask[seed1] = 1; - mask[seed2] = 1; - - // find MBR of each group. - RegionPtr mbr1 = m_pTree->m_regionPool.acquire(); - *mbr1 = *(m_ptrMBR[seed1]); - RegionPtr mbr2 = m_pTree->m_regionPool.acquire(); - *mbr2 = *(m_ptrMBR[seed2]); - - // count how many entries are left unchecked (exclude the seeds here.) - uint32_t cRemaining = m_capacity + 1 - 2; - - while (cRemaining > 0) - { - if (minimumLoad - group1.size() == cRemaining) - { - // all remaining entries must be assigned to group1 to comply with minimun load requirement. - for (u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - if (mask[u32Child] == 0) - { - group1.push_back(u32Child); - mask[u32Child] = 1; - --cRemaining; - } - } - } - else if (minimumLoad - group2.size() == cRemaining) - { - // all remaining entries must be assigned to group2 to comply with minimun load requirement. - for (u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - if (mask[u32Child] == 0) - { - group2.push_back(u32Child); - mask[u32Child] = 1; - --cRemaining; - } - } - } - else - { - // For all remaining entries compute the difference of the cost of grouping an - // entry in either group. When done, choose the entry that yielded the maximum - // difference. In case of linear split, select any entry (e.g. the first one.) - uint32_t sel; - double md1 = 0.0, md2 = 0.0; - double m = -std::numeric_limits::max(); - double d1, d2, d; - double a1 = mbr1->getArea(); - double a2 = mbr2->getArea(); - - RegionPtr a = m_pTree->m_regionPool.acquire(); - RegionPtr b = m_pTree->m_regionPool.acquire(); - - for (u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - if (mask[u32Child] == 0) - { - mbr1->getCombinedRegion(*a, *(m_ptrMBR[u32Child])); - d1 = a->getArea() - a1; - mbr2->getCombinedRegion(*b, *(m_ptrMBR[u32Child])); - d2 = b->getArea() - a2; - d = std::abs(d1 - d2); - - if (d > m) - { - m = d; - md1 = d1; md2 = d2; - sel = u32Child; - if (m_pTree->m_treeVariant== RV_LINEAR || m_pTree->m_treeVariant == RV_RSTAR) break; - } - } - } - - // determine the group where we should add the new entry. - int32_t group = -1; - - if (md1 < md2) - { - group1.push_back(sel); - group = 1; - } - else if (md2 < md1) - { - group2.push_back(sel); - group = 2; - } - else if (a1 < a2) - { - group1.push_back(sel); - group = 1; - } - else if (a2 < a1) - { - group2.push_back(sel); - group = 2; - } - else if (group1.size() < group2.size()) - { - group1.push_back(sel); - group = 1; - } - else if (group2.size() < group1.size()) - { - group2.push_back(sel); - group = 2; - } - else - { - group1.push_back(sel); - group = 1; - } - mask[sel] = 1; - --cRemaining; - if (group == 1) - { - mbr1->combineRegion(*(m_ptrMBR[sel])); - } - else - { - mbr2->combineRegion(*(m_ptrMBR[sel])); - } - } - } - - delete[] mask; -} - -void Node::rstarSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - RstarSplitEntry** dataLow = 0; - RstarSplitEntry** dataHigh = 0; - - try - { - dataLow = new RstarSplitEntry*[m_capacity + 1]; - dataHigh = new RstarSplitEntry*[m_capacity + 1]; - } - catch (...) - { - delete[] dataLow; - throw; - } - - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - // m_totalDataLength does not need to be increased here. - - uint32_t nodeSPF = static_cast( - std::floor((m_capacity + 1) * m_pTree->m_splitDistributionFactor)); - uint32_t splitDistribution = (m_capacity + 1) - (2 * nodeSPF) + 2; - - uint32_t u32Child = 0, cDim, cIndex; - - for (u32Child = 0; u32Child <= m_capacity; ++u32Child) - { - try - { - dataLow[u32Child] = new RstarSplitEntry(m_ptrMBR[u32Child].get(), u32Child, 0); - } - catch (...) - { - for (uint32_t i = 0; i < u32Child; ++i) delete dataLow[i]; - delete[] dataLow; - delete[] dataHigh; - throw; - } - - dataHigh[u32Child] = dataLow[u32Child]; - } - - double minimumMargin = std::numeric_limits::max(); - uint32_t splitAxis = std::numeric_limits::max(); - uint32_t sortOrder = std::numeric_limits::max(); - - // chooseSplitAxis. - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareLow); - ::qsort(dataHigh, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareHigh); - - // calculate sum of margins and overlap for all distributions. - double marginl = 0.0; - double marginh = 0.0; - - Region bbl1, bbl2, bbh1, bbh2; - - for (u32Child = 1; u32Child <= splitDistribution; ++u32Child) - { - uint32_t l = nodeSPF - 1 + u32Child; - - bbl1 = *(dataLow[0]->m_pRegion); - bbh1 = *(dataHigh[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bbl1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh1.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - bbl2 = *(dataLow[l]->m_pRegion); - bbh2 = *(dataHigh[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bbl2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh2.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - marginl += bbl1.getMargin() + bbl2.getMargin(); - marginh += bbh1.getMargin() + bbh2.getMargin(); - } // for (u32Child) - - double margin = std::min(marginl, marginh); - - // keep minimum margin as split axis. - if (margin < minimumMargin) - { - minimumMargin = margin; - splitAxis = cDim; - sortOrder = (marginl < marginh) ? 0 : 1; - } - - // increase the dimension according to which the data entries should be sorted. - for (u32Child = 0; u32Child <= m_capacity; ++u32Child) - { - dataLow[u32Child]->m_sortDim = cDim + 1; - } - } // for (cDim) - - for (u32Child = 0; u32Child <= m_capacity; ++u32Child) - { - dataLow[u32Child]->m_sortDim = splitAxis; - } - - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), (sortOrder == 0) ? RstarSplitEntry::compareLow : RstarSplitEntry::compareHigh); - - double ma = std::numeric_limits::max(); - double mo = std::numeric_limits::max(); - uint32_t splitPoint = std::numeric_limits::max(); - - Region bb1, bb2; - - for (u32Child = 1; u32Child <= splitDistribution; ++u32Child) - { - uint32_t l = nodeSPF - 1 + u32Child; - - bb1 = *(dataLow[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bb1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - bb2 = *(dataLow[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bb2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - double o = bb1.getIntersectingArea(bb2); - - if (o < mo) - { - splitPoint = u32Child; - mo = o; - ma = bb1.getArea() + bb2.getArea(); - } - else if (o == mo) - { - double a = bb1.getArea() + bb2.getArea(); - - if (a < ma) - { - splitPoint = u32Child; - ma = a; - } - } - } // for (u32Child) - - uint32_t l1 = nodeSPF - 1 + splitPoint; - - for (cIndex = 0; cIndex < l1; ++cIndex) - { - group1.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - for (cIndex = l1; cIndex <= m_capacity; ++cIndex) - { - group2.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - delete[] dataLow; - delete[] dataHigh; -} - -void Node::pickSeeds(uint32_t& index1, uint32_t& index2) -{ - double separation = -std::numeric_limits::max(); - double inefficiency = -std::numeric_limits::max(); - uint32_t cDim, u32Child, cIndex; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_RSTAR: - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - double leastLower = m_ptrMBR[0]->m_pLow[cDim]; - double greatestUpper = m_ptrMBR[0]->m_pHigh[cDim]; - uint32_t greatestLower = 0; - uint32_t leastUpper = 0; - double width; - - for (u32Child = 1; u32Child <= m_capacity; ++u32Child) - { - if (m_ptrMBR[u32Child]->m_pLow[cDim] > m_ptrMBR[greatestLower]->m_pLow[cDim]) greatestLower = u32Child; - if (m_ptrMBR[u32Child]->m_pHigh[cDim] < m_ptrMBR[leastUpper]->m_pHigh[cDim]) leastUpper = u32Child; - - leastLower = std::min(m_ptrMBR[u32Child]->m_pLow[cDim], leastLower); - greatestUpper = std::max(m_ptrMBR[u32Child]->m_pHigh[cDim], greatestUpper); - } - - width = greatestUpper - leastLower; - if (width <= 0) width = 1; - - double f = (m_ptrMBR[greatestLower]->m_pLow[cDim] - m_ptrMBR[leastUpper]->m_pHigh[cDim]) / width; - - if (f > separation) - { - index1 = leastUpper; - index2 = greatestLower; - separation = f; - } - } // for (cDim) - - if (index1 == index2) - { - if (index2 == 0) ++index2; - else --index2; - } - - break; - case RV_QUADRATIC: - // for each pair of Regions (account for overflow Region too!) - for (u32Child = 0; u32Child < m_capacity; ++u32Child) - { - double a = m_ptrMBR[u32Child]->getArea(); - - for (cIndex = u32Child + 1; cIndex <= m_capacity; ++cIndex) - { - // get the combined MBR of those two entries. - Region r; - m_ptrMBR[u32Child]->getCombinedRegion(r, *(m_ptrMBR[cIndex])); - - // find the inefficiency of grouping these entries together. - double d = r.getArea() - a - m_ptrMBR[cIndex]->getArea(); - - if (d > inefficiency) - { - inefficiency = d; - index1 = u32Child; - index2 = cIndex; - } - } // for (cIndex) - } // for (u32Child) - - break; - default: - throw libsupermesh::Tools::NotSupportedException("Node::pickSeeds: Tree variant not supported."); - } -} - -void Node::condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis) -{ - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - if (pathBuffer.empty()) - { - // eliminate root if it has only one child. - if (m_level != 0 && m_children == 1) - { - NodePtr ptrN = m_pTree->readNode(m_pIdentifier[0]); - m_pTree->deleteNode(ptrN.get()); - ptrN->m_identifier = m_pTree->m_rootID; - m_pTree->writeNode(ptrN.get()); - - m_pTree->m_stats.m_nodesInLevel.pop_back(); - m_pTree->m_stats.m_u32TreeHeight -= 1; - // HACK: pending deleteNode for deleted child will decrease nodesInLevel, later on. - m_pTree->m_stats.m_nodesInLevel[m_pTree->m_stats.m_u32TreeHeight - 1] = 2; - } - } - else - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrParent = m_pTree->readNode(cParent); - Index* p = static_cast(ptrParent.get()); - - // find the entry in the parent, that points to this node. - uint32_t child; - - for (child = 0; child != p->m_children; ++child) - { - if (p->m_pIdentifier[child] == m_identifier) break; - } - - if (m_children < minimumLoad) - { - // used space less than the minimum - // 1. eliminate node entry from the parent. deleteEntry will fix the parent's MBR. - p->deleteEntry(child); - // 2. add this node to the stack in order to reinsert its entries. - toReinsert.push(ptrThis); - } - else - { - // adjust the entry in 'p' to contain the new bounding region of this node. - *(p->m_ptrMBR[child]) = m_nodeMBR; - - // global recalculation necessary since the MBR can only shrink in size, - // due to data removal. - if (m_pTree->m_bTightMBRs) - { - for (uint32_t cDim = 0; cDim < p->m_nodeMBR.m_dimension; ++cDim) - { - p->m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - p->m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t u32Child = 0; u32Child < p->m_children; ++u32Child) - { - p->m_nodeMBR.m_pLow[cDim] = std::min(p->m_nodeMBR.m_pLow[cDim], p->m_ptrMBR[u32Child]->m_pLow[cDim]); - p->m_nodeMBR.m_pHigh[cDim] = std::max(p->m_nodeMBR.m_pHigh[cDim], p->m_ptrMBR[u32Child]->m_pHigh[cDim]); - } - } - } - } - - // write parent node back to storage. - m_pTree->writeNode(p); - - p->condenseTree(toReinsert, pathBuffer, ptrParent); - } -} diff --git a/spatialindex-1.8.5/src/rtree/Node.h b/spatialindex-1.8.5/src/rtree/Node.h deleted file mode 100644 index b08b676..0000000 --- a/spatialindex-1.8.5/src/rtree/Node.h +++ /dev/null @@ -1,199 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class RTree; - class Leaf; - class Index; - class Node; - - typedef libsupermesh::Tools::PoolPointer NodePtr; - - class Node : public libsupermesh::SpatialIndex::INode - { - public: - virtual ~Node(); - - // - // libsupermesh::Tools::IObject interface - // - virtual libsupermesh::Tools::IObject* clone(); - - // - // libsupermesh::Tools::ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // libsupermesh::SpatialIndex::IEntry interface - // - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - - // - // libsupermesh::SpatialIndex::INode interface - // - virtual uint32_t getChildrenCount() const; - virtual id_type getChildIdentifier(uint32_t index) const; - virtual void getChildShape(uint32_t index, IShape** out) const; - virtual void getChildData(uint32_t index, uint32_t& length, byte** data) const; - virtual uint32_t getLevel() const; - virtual bool isIndex() const; - virtual bool isLeaf() const; - - private: - Node(); - Node(RTree* pTree, id_type id, uint32_t level, uint32_t capacity); - - virtual Node& operator=(const Node&); - - virtual void insertEntry(uint32_t dataLength, byte* pData, Region& mbr, id_type id); - virtual void deleteEntry(uint32_t index); - - virtual bool insertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable); - virtual void reinsertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& reinsert, std::vector& keep); - - virtual void rtreeSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2); - virtual void rstarSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2); - - virtual void pickSeeds(uint32_t& index1, uint32_t& index2); - - virtual void condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis); - - virtual NodePtr chooseSubtree(const Region& mbr, uint32_t level, std::stack& pathBuffer) = 0; - virtual NodePtr findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer) = 0; - - virtual void split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& left, NodePtr& right) = 0; - - RTree* m_pTree; - // Parent of all nodes. - - uint32_t m_level; - // The level of the node in the tree. - // Leaves are always at level 0. - - id_type m_identifier; - // The unique ID of this node. - - uint32_t m_children; - // The number of children pointed by this node. - - uint32_t m_capacity; - // Specifies the node capacity. - - Region m_nodeMBR; - // The minimum bounding region enclosing all data contained in the node. - - byte** m_pData; - // The data stored in the node. - - RegionPtr* m_ptrMBR; - // The corresponding data MBRs. - - id_type* m_pIdentifier; - // The corresponding data identifiers. - - uint32_t* m_pDataLength; - - uint32_t m_totalDataLength; - - class RstarSplitEntry - { - public: - Region* m_pRegion; - uint32_t m_index; - uint32_t m_sortDim; - - RstarSplitEntry(Region* pr, uint32_t index, uint32_t dimension) : - m_pRegion(pr), m_index(index), m_sortDim(dimension) {} - - static int compareLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - assert(pe1->m_sortDim == pe2->m_sortDim); - - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] < pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] > pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return 1; - return 0; - } - - static int compareHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - assert(pe1->m_sortDim == pe2->m_sortDim); - - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return 1; - return 0; - } - }; // RstarSplitEntry - - class ReinsertEntry - { - public: - uint32_t m_index; - double m_dist; - - ReinsertEntry(uint32_t index, double dist) : m_index(index), m_dist(dist) {} - - static int compareReinsertEntry(const void* pv1, const void* pv2) - { - ReinsertEntry* pe1 = * (ReinsertEntry**) pv1; - ReinsertEntry* pe2 = * (ReinsertEntry**) pv2; - - if (pe1->m_dist < pe2->m_dist) return -1; - if (pe1->m_dist > pe2->m_dist) return 1; - return 0; - } - }; // ReinsertEntry - - // Needed to access protected members without having to cast from Node. - // It is more efficient than using member functions to access protected members. - friend class RTree; - friend class Leaf; - friend class Index; - friend class libsupermesh::Tools::PointerPool; - friend class BulkLoader; - }; // Node - } -} } diff --git a/spatialindex-1.8.5/src/rtree/PointerPoolNode.h b/spatialindex-1.8.5/src/rtree/PointerPoolNode.h deleted file mode 100644 index 1940a01..0000000 --- a/spatialindex-1.8.5/src/rtree/PointerPoolNode.h +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#ifndef __spatialindex_rtree_pointer_pool_node_h -#define __spatialindex_rtree_pointer_pool_node_h - -#include "Node.h" - -namespace libsupermesh { namespace Tools -{ - using namespace libsupermesh::SpatialIndex; - template<> class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - RTree::Node* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - if (! m_pool.empty()) - { - RTree::Node* p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - ++m_hits; - #endif - - return PoolPointer(p, this); - } - #ifndef NDEBUG - else - { - // fixme: well sort of... - ++m_pointerCount; - ++m_misses; - } - #endif - - return PoolPointer(); - } - - void release(RTree::Node* p) - { - if (p != 0) - { - if (m_pool.size() < m_capacity) - { - if (p->m_pData != 0) - { - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - // there is no need to set the pointer to zero, after deleting it, - // since it will be redeleted only if it is actually initialized again, - // a fact that will be depicted by variable m_children. - if (p->m_pData[cChild] != 0) delete[] p->m_pData[cChild]; - } - } - - p->m_level = 0; - p->m_identifier = -1; - p->m_children = 0; - p->m_totalDataLength = 0; - - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - protected: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - -#endif /* __spatialindex_rtree_pointer_pool_node_h */ diff --git a/spatialindex-1.8.5/src/rtree/RTree.cc b/spatialindex-1.8.5/src/rtree/RTree.cc deleted file mode 100644 index 381bfc4..0000000 --- a/spatialindex-1.8.5/src/rtree/RTree.cc +++ /dev/null @@ -1,1543 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include -#include "Node.h" -#include "Leaf.h" -#include "Index.h" -#include "BulkLoader.h" -#include "RTree.h" - -using namespace libsupermesh::SpatialIndex::RTree; -using namespace libsupermesh::SpatialIndex; - -libsupermesh::SpatialIndex::RTree::Data::Data(uint32_t len, byte* pData, Region& r, id_type id) - : m_id(id), m_region(r), m_pData(0), m_dataLength(len) -{ - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, pData, m_dataLength); - } -} - -libsupermesh::SpatialIndex::RTree::Data::~Data() -{ - delete[] m_pData; -} - -libsupermesh::SpatialIndex::RTree::Data* libsupermesh::SpatialIndex::RTree::Data::clone() -{ - return new Data(m_dataLength, m_pData, m_region, m_id); -} - -id_type libsupermesh::SpatialIndex::RTree::Data::getIdentifier() const -{ - return m_id; -} - -void libsupermesh::SpatialIndex::RTree::Data::getShape(IShape** out) const -{ - *out = new Region(m_region); -} - -void libsupermesh::SpatialIndex::RTree::Data::getData(uint32_t& len, byte** data) const -{ - len = m_dataLength; - *data = 0; - - if (m_dataLength > 0) - { - *data = new byte[m_dataLength]; - memcpy(*data, m_pData, m_dataLength); - } -} - -uint32_t libsupermesh::SpatialIndex::RTree::Data::getByteArraySize() -{ - return - sizeof(id_type) + - sizeof(uint32_t) + - m_dataLength + - m_region.getByteArraySize(); -} - -void libsupermesh::SpatialIndex::RTree::Data::loadFromByteArray(const byte* ptr) -{ - memcpy(&m_id, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - delete[] m_pData; - m_pData = 0; - - memcpy(&m_dataLength, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, ptr, m_dataLength); - ptr += m_dataLength; - } - - m_region.loadFromByteArray(ptr); -} - -void libsupermesh::SpatialIndex::RTree::Data::storeToByteArray(byte** data, uint32_t& len) -{ - // it is thread safe this way. - uint32_t regionsize; - byte* regiondata = 0; - m_region.storeToByteArray(®iondata, regionsize); - - len = sizeof(id_type) + sizeof(uint32_t) + m_dataLength + regionsize; - - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_id, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_dataLength, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - memcpy(ptr, m_pData, m_dataLength); - ptr += m_dataLength; - } - - memcpy(ptr, regiondata, regionsize); - delete[] regiondata; - // ptr += regionsize; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::returnRTree(libsupermesh::SpatialIndex::IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::SpatialIndex::ISpatialIndex* si = new libsupermesh::SpatialIndex::RTree::RTree(sm, ps); - return si; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::createNewRTree( - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - RTreeVariant rv, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = fillFactor; - ps.setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = indexCapacity; - ps.setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = leafCapacity; - ps.setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = dimension; - ps.setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = rv; - ps.setProperty("TreeVariant", var); - - ISpatialIndex* ret = returnRTree(sm, ps); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var = ps.getProperty("IndexIdentifier"); - indexIdentifier = var.m_val.llVal; - - return ret; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - libsupermesh::SpatialIndex::RTree::RTreeVariant rv, - id_type& indexIdentifier) -{ - libsupermesh::SpatialIndex::ISpatialIndex* tree = createNewRTree(sm, fillFactor, indexCapacity, leafCapacity, dimension, rv, indexIdentifier); - - uint32_t bindex = static_cast(std::floor(static_cast(indexCapacity * fillFactor))); - uint32_t bleaf = static_cast(std::floor(static_cast(leafCapacity * fillFactor))); - - libsupermesh::SpatialIndex::RTree::BulkLoader bl; - - switch (m) - { - case BLM_STR: - bl.bulkLoadUsingSTR(static_cast(tree), stream, bindex, bleaf, 10000, 100); - break; - default: - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Unknown bulk load method."); - break; - } - - return tree; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - libsupermesh::SpatialIndex::IStorageManager& sm, - libsupermesh::Tools::PropertySet& ps, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - RTreeVariant rv(RV_LINEAR); - double fillFactor(0.0); - uint32_t indexCapacity(0); - uint32_t leafCapacity(0); - uint32_t dimension(0); - uint32_t pageSize(0); - uint32_t numberOfPages(0); - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != RV_LINEAR && - var.m_val.lVal != RV_QUADRATIC && - var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of RTreeVariant type"); - - rv = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property FillFactor was not of type libsupermesh::Tools::VT_DOUBLE"); - - if (var.m_val.dblVal <= 0.0) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property FillFactor was less than 0.0"); - - if (((rv == RV_LINEAR || rv == RV_QUADRATIC) && var.m_val.dblVal > 0.5)) - throw libsupermesh::Tools::IllegalArgumentException( "createAndBulkLoadNewRTree: Property FillFactor must be in range (0.0, 0.5) for LINEAR or QUADRATIC index types"); - if ( var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property FillFactor must be in range (0.0, 1.0) for RSTAR index type"); - fillFactor = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - leafCapacity = var.m_val.ulVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property Dimension must be greater than 1"); - - dimension = var.m_val.ulVal; - } - - // page size - var = ps.getProperty("ExternalSortBufferPageSize"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferPageSize must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferPageSize must be greater than 1"); - - pageSize = var.m_val.ulVal; - } - - // number of pages - var = ps.getProperty("ExternalSortBufferTotalPages"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferTotalPages must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferTotalPages must be greater than 1"); - - numberOfPages = var.m_val.ulVal; - } - - libsupermesh::SpatialIndex::ISpatialIndex* tree = createNewRTree(sm, fillFactor, indexCapacity, leafCapacity, dimension, rv, indexIdentifier); - - uint32_t bindex = static_cast(std::floor(static_cast(indexCapacity * fillFactor))); - uint32_t bleaf = static_cast(std::floor(static_cast(leafCapacity * fillFactor))); - - libsupermesh::SpatialIndex::RTree::BulkLoader bl; - - switch (m) - { - case BLM_STR: - bl.bulkLoadUsingSTR(static_cast(tree), stream, bindex, bleaf, pageSize, numberOfPages); - break; - default: - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Unknown bulk load method."); - break; - } - - return tree; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::loadRTree(IStorageManager& sm, id_type indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = indexIdentifier; - ps.setProperty("IndexIdentifier", var); - - return returnRTree(sm, ps); -} - -libsupermesh::SpatialIndex::RTree::RTree::RTree(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_pStorageManager(&sm), - m_rootID(StorageManager::NewPage), - m_headerID(StorageManager::NewPage), - m_treeVariant(RV_RSTAR), - m_fillFactor(0.7), - m_indexCapacity(100), - m_leafCapacity(100), - m_nearMinimumOverlapFactor(32), - m_splitDistributionFactor(0.4), - m_reinsertFactor(0.3), - m_dimension(2), - m_bTightMBRs(true), - m_pointPool(500), - m_regionPool(1000), - m_indexPool(100), - m_leafPool(100) -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_init(&m_lock, NULL); -#endif - - libsupermesh::Tools::Variant var = ps.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType == libsupermesh::Tools::VT_LONGLONG) m_headerID = var.m_val.llVal; - else if (var.m_varType == libsupermesh::Tools::VT_LONG) m_headerID = var.m_val.lVal; - // for backward compatibility only. - else throw libsupermesh::Tools::IllegalArgumentException("RTree: Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - initOld(ps); - } - else - { - initNew(ps); - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = m_headerID; - ps.setProperty("IndexIdentifier", var); - } -} - -libsupermesh::SpatialIndex::RTree::RTree::~RTree() -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_destroy(&m_lock); -#endif - - storeHeader(); -} - -// -// ISpatialIndex interface -// - -void libsupermesh::SpatialIndex::RTree::RTree::insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - // convert the shape into a Region (R-Trees index regions only; i.e., approximations of the shapes). - RegionPtr mbr = m_regionPool.acquire(); - shape.getMBR(*mbr); - - byte* buffer = 0; - - if (len > 0) - { - buffer = new byte[len]; - memcpy(buffer, pData, len); - } - - insertData_impl(len, buffer, *mbr, id); - // the buffer is stored in the tree. Do not delete here. -} - -bool libsupermesh::SpatialIndex::RTree::RTree::deleteData(const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("deleteData: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - RegionPtr mbr = m_regionPool.acquire(); - shape.getMBR(*mbr); - bool ret = deleteData_impl(*mbr, id); - - return ret; -} - - -void libsupermesh::SpatialIndex::RTree::RTree::containsWhatQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsWhatQuery: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - try - { - std::stack st; - NodePtr root = readNode(m_rootID); - st.push(root); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - - if(n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if(query.containsShape(*(n->m_ptrMBR[cChild]))) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - } - else //not a leaf - { - if(query.containsShape(n->m_nodeMBR)) - { - visitSubTree(n, v); - } - else if(query.intersectsShape(n->m_nodeMBR)) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } - } - - } - catch (...) - { - throw; - } -} -void libsupermesh::SpatialIndex::RTree::RTree::intersectsWithQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsWithQuery: Shape has the wrong number of dimensions."); - rangeQuery(IntersectionQuery, query, v); -} - -void libsupermesh::SpatialIndex::RTree::RTree::pointLocationQuery(const Point& query, IVisitor& v) -{ - if (query.m_dimension != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape has the wrong number of dimensions."); - Region r(query, query); - rangeQuery(IntersectionQuery, r, v); -} - -void libsupermesh::SpatialIndex::RTree::RTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator& nnc) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::priority_queue, NNEntry::ascending> queue; - - queue.push(new NNEntry(m_rootID, 0, 0.0)); - - uint32_t count = 0; - double knearest = 0.0; - - while (! queue.empty()) - { - NNEntry* pFirst = queue.top(); - - // report all nearest neighbors with equal greatest distances. - // (neighbors can be more than k, if many happen to have the same greatest distance). - if (count >= k && pFirst->m_minDist > knearest) break; - - queue.pop(); - - if (pFirst->m_pEntry == 0) - { - // n is a leaf or an index. - NodePtr n = readNode(pFirst->m_id); - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (n->m_level == 0) - { - Data* e = new Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - // we need to compare the query with the actual data entry here, so we call the - // appropriate getMinimumDistance method of NearestNeighborComparator. - queue.push(new NNEntry(n->m_pIdentifier[cChild], e, nnc.getMinimumDistance(query, *e))); - } - else - { - queue.push(new NNEntry(n->m_pIdentifier[cChild], 0, nnc.getMinimumDistance(query, *(n->m_ptrMBR[cChild])))); - } - } - } - else - { - v.visitData(*(static_cast(pFirst->m_pEntry))); - ++(m_stats.m_u64QueryResults); - ++count; - knearest = pFirst->m_minDist; - delete pFirst->m_pEntry; - } - - delete pFirst; - } - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - if (e->m_pEntry != 0) delete e->m_pEntry; - delete e; - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - NNComparator nnc; - nearestNeighborQuery(k, query, v, nnc); -} - - -void libsupermesh::SpatialIndex::RTree::RTree::selfJoinQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("selfJoinQuery: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - RegionPtr mbr = m_regionPool.acquire(); - query.getMBR(*mbr); - selfJoinQuery(m_rootID, m_rootID, *mbr, v); -} - -void libsupermesh::SpatialIndex::RTree::RTree::queryStrategy(IQueryStrategy& qs) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - id_type next = m_rootID; - bool hasNext = true; - - while (hasNext) - { - NodePtr n = readNode(next); - qs.getNextEntry(*n, next, hasNext); - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::getIndexProperties(libsupermesh::Tools::PropertySet& out) const -{ - libsupermesh::Tools::Variant var; - - // dimension - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_dimension; - out.setProperty("Dimension", var); - - // index capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexCapacity; - out.setProperty("IndexCapacity", var); - - // leaf capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafCapacity; - out.setProperty("LeafCapacity", var); - - // R-tree variant - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = m_treeVariant; - out.setProperty("TreeVariant", var); - - // fill factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_fillFactor; - out.setProperty("FillFactor", var); - - // near minimum overlap factor - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_nearMinimumOverlapFactor; - out.setProperty("NearMinimumOverlapFactor", var); - - // split distribution factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_splitDistributionFactor; - out.setProperty("SplitDistributionFactor", var); - - // reinsert factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_reinsertFactor; - out.setProperty("ReinsertFactor", var); - - // tight MBRs - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = m_bTightMBRs; - out.setProperty("EnsureTightMBRs", var); - - // index pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexPool.getCapacity(); - out.setProperty("IndexPoolCapacity", var); - - // leaf pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafPool.getCapacity(); - out.setProperty("LeafPoolCapacity", var); - - // region pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_regionPool.getCapacity(); - out.setProperty("RegionPoolCapacity", var); - - // point pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_pointPool.getCapacity(); - out.setProperty("PointPoolCapacity", var); -} - -void libsupermesh::SpatialIndex::RTree::RTree::addCommand(ICommand* pCommand, CommandType ct) -{ - switch (ct) - { - case CT_NODEREAD: - m_readNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEWRITE: - m_writeNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEDELETE: - m_deleteNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - } -} - -bool libsupermesh::SpatialIndex::RTree::RTree::isIndexValid() -{ - bool ret = true; - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_level != m_stats.m_u32TreeHeight - 1) - { - std::cerr << "Invalid tree height." << std::endl; - return false; - } - - std::map nodesInLevel; - nodesInLevel.insert(std::pair(root->m_level, 1)); - - ValidateEntry e(root->m_nodeMBR, root); - st.push(e); - - while (! st.empty()) - { - e = st.top(); st.pop(); - - Region tmpRegion; - tmpRegion = m_infiniteRegion; - - for (uint32_t cDim = 0; cDim < tmpRegion.m_dimension; ++cDim) - { - tmpRegion.m_pLow[cDim] = std::numeric_limits::max(); - tmpRegion.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - tmpRegion.m_pLow[cDim] = std::min(tmpRegion.m_pLow[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pLow[cDim]); - tmpRegion.m_pHigh[cDim] = std::max(tmpRegion.m_pHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - - if (! (tmpRegion == e.m_pNode->m_nodeMBR)) - { - std::cerr << "Invalid parent information." << std::endl; - ret = false; - } - else if (! (tmpRegion == e.m_parentMBR)) - { - std::cerr << "Error in parent." << std::endl; - ret = false; - } - - if (e.m_pNode->m_level != 0) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - NodePtr ptrN = readNode(e.m_pNode->m_pIdentifier[cChild]); - ValidateEntry tmpEntry(*(e.m_pNode->m_ptrMBR[cChild]), ptrN); - - std::map::iterator itNodes = nodesInLevel.find(tmpEntry.m_pNode->m_level); - - if (itNodes == nodesInLevel.end()) - { - nodesInLevel.insert(std::pair(tmpEntry.m_pNode->m_level, 1l)); - } - else - { - nodesInLevel[tmpEntry.m_pNode->m_level] = nodesInLevel[tmpEntry.m_pNode->m_level] + 1; - } - - st.push(tmpEntry); - } - } - } - - uint32_t nodes = 0; - for (uint32_t cLevel = 0; cLevel < m_stats.m_u32TreeHeight; ++cLevel) - { - if (nodesInLevel[cLevel] != m_stats.m_nodesInLevel[cLevel]) - { - std::cerr << "Invalid nodesInLevel information." << std::endl; - ret = false; - } - - nodes += m_stats.m_nodesInLevel[cLevel]; - } - - if (nodes != m_stats.m_u32Nodes) - { - std::cerr << "Invalid number of nodes information." << std::endl; - ret = false; - } - - return ret; -} - -void libsupermesh::SpatialIndex::RTree::RTree::getStatistics(IStatistics** out) const -{ - *out = new Statistics(m_stats); -} - -void libsupermesh::SpatialIndex::RTree::RTree::initNew(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != RV_LINEAR && - var.m_val.lVal != RV_QUADRATIC && - var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of RTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor was not of type libsupermesh::Tools::VT_DOUBLE"); - - if (var.m_val.dblVal <= 0.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor was less than 0.0"); - - if (((m_treeVariant == RV_LINEAR || m_treeVariant == RV_QUADRATIC) && var.m_val.dblVal > 0.5)) - throw libsupermesh::Tools::IllegalArgumentException( "initNew: Property FillFactor must be in range " - "(0.0, 0.5) for LINEAR or QUADRATIC index types"); - if ( var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException( "initNew: Property FillFactor must be in range " - "(0.0, 1.0) for RSTAR index type"); - m_fillFactor = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_leafCapacity = var.m_val.ulVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be greater than 1"); - - m_dimension = var.m_val.ulVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); - - m_stats.m_u32TreeHeight = 1; - m_stats.m_nodesInLevel.push_back(0); - - Leaf root(this, -1); - m_rootID = writeNode(&root); - - storeHeader(); -} - -void libsupermesh::SpatialIndex::RTree::RTree::initOld(libsupermesh::Tools::PropertySet& ps) -{ - loadHeader(); - - // only some of the properties may be changed. - // the rest are just ignored. - - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != RV_LINEAR && - var.m_val.lVal != RV_QUADRATIC && - var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of RTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); -} - -void libsupermesh::SpatialIndex::RTree::RTree::storeHeader() -{ - const uint32_t headerSize = - sizeof(id_type) + // m_rootID - sizeof(RTreeVariant) + // m_treeVariant - sizeof(double) + // m_fillFactor - sizeof(uint32_t) + // m_indexCapacity - sizeof(uint32_t) + // m_leafCapacity - sizeof(uint32_t) + // m_nearMinimumOverlapFactor - sizeof(double) + // m_splitDistributionFactor - sizeof(double) + // m_reinsertFactor - sizeof(uint32_t) + // m_dimension - sizeof(char) + // m_bTightMBRs - sizeof(uint32_t) + // m_stats.m_nodes - sizeof(uint64_t) + // m_stats.m_data - sizeof(uint32_t) + // m_stats.m_treeHeight - m_stats.m_u32TreeHeight * sizeof(uint32_t); // m_stats.m_nodesInLevel - - byte* header = new byte[headerSize]; - byte* ptr = header; - - memcpy(ptr, &m_rootID, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_treeVariant, sizeof(RTreeVariant)); - ptr += sizeof(RTreeVariant); - memcpy(ptr, &m_fillFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_indexCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_leafCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_nearMinimumOverlapFactor, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_splitDistributionFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_reinsertFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c = (char) m_bTightMBRs; - memcpy(ptr, &c, sizeof(char)); - ptr += sizeof(char); - memcpy(ptr, &(m_stats.m_u32Nodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u64Data), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(ptr, &(m_stats.m_u32TreeHeight), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_u32TreeHeight; ++cLevel) - { - memcpy(ptr, &(m_stats.m_nodesInLevel[cLevel]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - m_pStorageManager->storeByteArray(m_headerID, headerSize, header); - - delete[] header; -} - -void libsupermesh::SpatialIndex::RTree::RTree::loadHeader() -{ - uint32_t headerSize; - byte* header = 0; - m_pStorageManager->loadByteArray(m_headerID, headerSize, &header); - - byte* ptr = header; - - memcpy(&m_rootID, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&m_treeVariant, ptr, sizeof(RTreeVariant)); - ptr += sizeof(RTreeVariant); - memcpy(&m_fillFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_indexCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_leafCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_nearMinimumOverlapFactor, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_splitDistributionFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_reinsertFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c; - memcpy(&c, ptr, sizeof(char)); - m_bTightMBRs = (c != 0); - ptr += sizeof(char); - memcpy(&(m_stats.m_u32Nodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u64Data), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(&(m_stats.m_u32TreeHeight), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_u32TreeHeight; ++cLevel) - { - uint32_t cNodes; - memcpy(&cNodes, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - m_stats.m_nodesInLevel.push_back(cNodes); - } - - delete[] header; -} - -void libsupermesh::SpatialIndex::RTree::RTree::insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id) -{ - assert(mbr.getDimension() == m_dimension); - - std::stack pathBuffer; - byte* overflowTable = 0; - - try - { - NodePtr root = readNode(m_rootID); - - overflowTable = new byte[root->m_level]; - memset(overflowTable, 0, root->m_level); - - NodePtr l = root->chooseSubtree(mbr, 0, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mbr, id, pathBuffer, overflowTable); - - delete[] overflowTable; - ++(m_stats.m_u64Data); - } - catch (...) - { - delete[] overflowTable; - throw; - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id, uint32_t level, byte* overflowTable) -{ - assert(mbr.getDimension() == m_dimension); - - std::stack pathBuffer; - NodePtr root = readNode(m_rootID); - NodePtr n = root->chooseSubtree(mbr, level, pathBuffer); - - assert(n->m_level == level); - - if (n.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - n->insertData(dataLength, pData, mbr, id, pathBuffer, overflowTable); -} - -bool libsupermesh::SpatialIndex::RTree::RTree::deleteData_impl(const Region& mbr, id_type id) -{ - assert(mbr.m_dimension == m_dimension); - - std::stack pathBuffer; - NodePtr root = readNode(m_rootID); - NodePtr l = root->findLeaf(mbr, id, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - - if (l.get() != 0) - { - Leaf* pL = static_cast(l.get()); - pL->deleteData(id, pathBuffer); - --(m_stats.m_u64Data); - return true; - } - - return false; -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::RTree::RTree::writeNode(Node* n) -{ - byte* buffer; - uint32_t dataLength; - n->storeToByteArray(&buffer, dataLength); - - id_type page; - if (n->m_identifier < 0) page = StorageManager::NewPage; - else page = n->m_identifier; - - try - { - m_pStorageManager->storeByteArray(page, dataLength, buffer); - delete[] buffer; - } - catch (InvalidPageException& e) - { - delete[] buffer; - std::cerr << e.what() << std::endl; - throw; - } - - if (n->m_identifier < 0) - { - n->m_identifier = page; - ++(m_stats.m_u32Nodes); - -#ifndef NDEBUG - try - { - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel.at(n->m_level) + 1; - } - catch(...) - { - throw libsupermesh::Tools::IllegalStateException("writeNode: writing past the end of m_nodesInLevel."); - } -#else - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] + 1; -#endif - } - - ++(m_stats.m_u64Writes); - - for (size_t cIndex = 0; cIndex < m_writeNodeCommands.size(); ++cIndex) - { - m_writeNodeCommands[cIndex]->execute(*n); - } - - return page; -} - -libsupermesh::SpatialIndex::RTree::NodePtr libsupermesh::SpatialIndex::RTree::RTree::readNode(id_type page) -{ - uint32_t dataLength; - byte* buffer; - - try - { - m_pStorageManager->loadByteArray(page, dataLength, &buffer); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - throw; - } - - try - { - uint32_t nodeType; - memcpy(&nodeType, buffer, sizeof(uint32_t)); - - NodePtr n; - - if (nodeType == PersistentIndex) n = m_indexPool.acquire(); - else if (nodeType == PersistentLeaf) n = m_leafPool.acquire(); - else throw libsupermesh::Tools::IllegalStateException("readNode: failed reading the correct node type information"); - - if (n.get() == 0) - { - if (nodeType == PersistentIndex) n = NodePtr(new Index(this, -1, 0), &m_indexPool); - else if (nodeType == PersistentLeaf) n = NodePtr(new Leaf(this, -1), &m_leafPool); - } - - //n->m_pTree = this; - n->m_identifier = page; - n->loadFromByteArray(buffer); - - ++(m_stats.m_u64Reads); - - for (size_t cIndex = 0; cIndex < m_readNodeCommands.size(); ++cIndex) - { - m_readNodeCommands[cIndex]->execute(*n); - } - - delete[] buffer; - return n; - } - catch (...) - { - delete[] buffer; - throw; - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::deleteNode(Node* n) -{ - try - { - m_pStorageManager->deleteByteArray(n->m_identifier); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - throw; - } - - --(m_stats.m_u32Nodes); - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] - 1; - - for (size_t cIndex = 0; cIndex < m_deleteNodeCommands.size(); ++cIndex) - { - m_deleteNodeCommands[cIndex]->execute(*n); - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_children > 0 && query.intersectsShape(root->m_nodeMBR)) st.push(root); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - - if (n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - bool b; - if (type == ContainmentQuery) b = query.containsShape(*(n->m_ptrMBR[cChild])); - else b = query.intersectsShape(*(n->m_ptrMBR[cChild])); - - if (b) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - } - else - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (query.intersectsShape(*(n->m_ptrMBR[cChild]))) st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::selfJoinQuery(id_type id1, id_type id2, const Region& r, IVisitor& vis) -{ - NodePtr n1 = readNode(id1); - NodePtr n2 = readNode(id2); - vis.visitNode(*n1); - vis.visitNode(*n2); - - for (uint32_t cChild1 = 0; cChild1 < n1->m_children; ++cChild1) - { - if (r.intersectsRegion(*(n1->m_ptrMBR[cChild1]))) - { - for (uint32_t cChild2 = 0; cChild2 < n2->m_children; ++cChild2) - { - if ( - r.intersectsRegion(*(n2->m_ptrMBR[cChild2])) && - n1->m_ptrMBR[cChild1]->intersectsRegion(*(n2->m_ptrMBR[cChild2]))) - { - if (n1->m_level == 0) - { - if (n1->m_pIdentifier[cChild1] != n2->m_pIdentifier[cChild2]) - { - assert(n2->m_level == 0); - - std::vector v; - Data e1(n1->m_pDataLength[cChild1], n1->m_pData[cChild1], *(n1->m_ptrMBR[cChild1]), n1->m_pIdentifier[cChild1]); - Data e2(n2->m_pDataLength[cChild2], n2->m_pData[cChild2], *(n2->m_ptrMBR[cChild2]), n2->m_pIdentifier[cChild2]); - v.push_back(&e1); - v.push_back(&e2); - vis.visitData(v); - } - } - else - { - Region rr = r.getIntersectingRegion(n1->m_ptrMBR[cChild1]->getIntersectingRegion(*(n2->m_ptrMBR[cChild2]))); - selfJoinQuery(n1->m_pIdentifier[cChild1], n2->m_pIdentifier[cChild2], rr, vis); - } - } - } - } - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::visitSubTree(NodePtr subTree, IVisitor& v) -{ - std::stack st; - st.push(subTree); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - v.visitNode(*n); - - if(n->m_level == 0) - { - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - else - { - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -std::ostream& libsupermesh::SpatialIndex::RTree::operator<<(std::ostream& os, const RTree& t) -{ - os << "Dimension: " << t.m_dimension << std::endl - << "Fill factor: " << t.m_fillFactor << std::endl - << "Index capacity: " << t.m_indexCapacity << std::endl - << "Leaf capacity: " << t.m_leafCapacity << std::endl - << "Tight MBRs: " << ((t.m_bTightMBRs) ? "enabled" : "disabled") << std::endl; - - if (t.m_treeVariant == RV_RSTAR) - { - os << "Near minimum overlap factor: " << t.m_nearMinimumOverlapFactor << std::endl - << "Reinsert factor: " << t.m_reinsertFactor << std::endl - << "Split distribution factor: " << t.m_splitDistributionFactor << std::endl; - } - - if (t.m_stats.getNumberOfNodesInLevel(0) > 0) - os << "Utilization: " << 100 * t.m_stats.getNumberOfData() / (t.m_stats.getNumberOfNodesInLevel(0) * t.m_leafCapacity) << "%" << std::endl - << t.m_stats; - - #ifndef NDEBUG - os << "Leaf pool hits: " << t.m_leafPool.m_hits << std::endl - << "Leaf pool misses: " << t.m_leafPool.m_misses << std::endl - << "Index pool hits: " << t.m_indexPool.m_hits << std::endl - << "Index pool misses: " << t.m_indexPool.m_misses << std::endl - << "Region pool hits: " << t.m_regionPool.m_hits << std::endl - << "Region pool misses: " << t.m_regionPool.m_misses << std::endl - << "Point pool hits: " << t.m_pointPool.m_hits << std::endl - << "Point pool misses: " << t.m_pointPool.m_misses << std::endl; - #endif - - return os; -} diff --git a/spatialindex-1.8.5/src/rtree/RTree.h b/spatialindex-1.8.5/src/rtree/RTree.h deleted file mode 100644 index 9fab977..0000000 --- a/spatialindex-1.8.5/src/rtree/RTree.h +++ /dev/null @@ -1,208 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Statistics.h" -#include "Node.h" -#include "PointerPoolNode.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class RTree : public ISpatialIndex - { - //class NNEntry; - - public: - RTree(IStorageManager&, libsupermesh::Tools::PropertySet&); - // String Value Description - // ---------------------------------------------- - // IndexIndentifier VT_LONG If specified an existing index will be openened from the supplied - // storage manager with the given index id. Behaviour is unspecified - // if the index id or the storage manager are incorrect. - // Dimension VT_ULONG Dimensionality of the data that will be inserted. - // IndexCapacity VT_ULONG The index node capacity. Default is 100. - // LeafCapactiy VT_ULONG The leaf node capacity. Default is 100. - // FillFactor VT_DOUBLE The fill factor. Default is 70% - // TreeVariant VT_LONG Can be one of Linear, Quadratic or Rstar. Default is Rstar - // NearMinimumOverlapFactor VT_ULONG Default is 32. - // SplitDistributionFactor VT_DOUBLE Default is 0.4 - // ReinsertFactor VT_DOUBLE Default is 0.3 - // EnsureTightMBRs VT_BOOL Default is true - // IndexPoolCapacity VT_LONG Default is 100 - // LeafPoolCapacity VT_LONG Default is 100 - // RegionPoolCapacity VT_LONG Default is 1000 - // PointPoolCapacity VT_LONG Default is 500 - - virtual ~RTree(); - - - - // - // ISpatialIndex interface - // - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type shapeIdentifier); - virtual bool deleteData(const IShape& shape, id_type id); - virtual void containsWhatQuery(const IShape& query, IVisitor& v); - virtual void intersectsWithQuery(const IShape& query, IVisitor& v); - virtual void pointLocationQuery(const Point& query, IVisitor& v); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator&); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v); - virtual void selfJoinQuery(const IShape& s, IVisitor& v); - virtual void queryStrategy(IQueryStrategy& qs); - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const; - virtual void addCommand(ICommand* pCommand, CommandType ct); - virtual bool isIndexValid(); - virtual void getStatistics(IStatistics** out) const; - - private: - void initNew(libsupermesh::Tools::PropertySet&); - void initOld(libsupermesh::Tools::PropertySet& ps); - void storeHeader(); - void loadHeader(); - - void insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id); - void insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id, uint32_t level, byte* overflowTable); - bool deleteData_impl(const Region& mbr, id_type id); - - id_type writeNode(Node*); - NodePtr readNode(id_type page); - void deleteNode(Node*); - - void rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v); - void selfJoinQuery(id_type id1, id_type id2, const Region& r, IVisitor& vis); - void visitSubTree(NodePtr subTree, IVisitor& v); - - IStorageManager* m_pStorageManager; - - id_type m_rootID, m_headerID; - - RTreeVariant m_treeVariant; - - double m_fillFactor; - - uint32_t m_indexCapacity; - - uint32_t m_leafCapacity; - - uint32_t m_nearMinimumOverlapFactor; - // The R*-Tree 'p' constant, for calculating nearly minimum overlap cost. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.1] - - double m_splitDistributionFactor; - // The R*-Tree 'm' constant, for calculating spliting distributions. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.2] - - double m_reinsertFactor; - // The R*-Tree 'p' constant, for removing entries at reinserts. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.3] - - uint32_t m_dimension; - - Region m_infiniteRegion; - - Statistics m_stats; - - bool m_bTightMBRs; - - libsupermesh::Tools::PointerPool m_pointPool; - libsupermesh::Tools::PointerPool m_regionPool; - libsupermesh::Tools::PointerPool m_indexPool; - libsupermesh::Tools::PointerPool m_leafPool; - - std::vector > m_writeNodeCommands; - std::vector > m_readNodeCommands; - std::vector > m_deleteNodeCommands; - -#ifdef HAVE_PTHREAD_H - pthread_mutex_t m_lock; -#endif - - class NNEntry - { - public: - id_type m_id; - IEntry* m_pEntry; - double m_minDist; - - NNEntry(id_type id, IEntry* e, double f) : m_id(id), m_pEntry(e), m_minDist(f) {} - ~NNEntry() {} - - struct ascending : public std::binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_minDist > __y->m_minDist; } - }; - }; // NNEntry - - class NNComparator : public INearestNeighborComparator - { - public: - double getMinimumDistance(const IShape& query, const IShape& entry) - { - return query.getMinimumDistance(entry); - } - - double getMinimumDistance(const IShape& query, const IData& data) - { - IShape* pS; - data.getShape(&pS); - double ret = query.getMinimumDistance(*pS); - delete pS; - return ret; - } - }; // NNComparator - - class ValidateEntry - { - public: - ValidateEntry(Region& r, NodePtr& pNode) : m_parentMBR(r), m_pNode(pNode) {} - - Region m_parentMBR; - NodePtr m_pNode; - }; // ValidateEntry - - friend class Node; - friend class Leaf; - friend class Index; - friend class BulkLoader; - - friend std::ostream& operator<<(std::ostream& os, const RTree& t); - }; // RTree - - std::ostream& operator<<(std::ostream& os, const RTree& t); - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Statistics.cc b/spatialindex-1.8.5/src/rtree/Statistics.cc deleted file mode 100644 index 3629d79..0000000 --- a/spatialindex-1.8.5/src/rtree/Statistics.cc +++ /dev/null @@ -1,183 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "Statistics.h" - -using namespace libsupermesh::SpatialIndex::RTree; - -Statistics::Statistics() -{ - reset(); -} - -Statistics::Statistics(const Statistics& s) -{ - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u32TreeHeight = s.m_u32TreeHeight; - m_nodesInLevel = s.m_nodesInLevel; -} - -Statistics::~Statistics() -{ -} - -Statistics& Statistics::operator=(const Statistics& s) -{ - if (this != &s) - { - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u32TreeHeight = s.m_u32TreeHeight; - m_nodesInLevel = s.m_nodesInLevel; - } - - return *this; -} - -uint64_t Statistics::getReads() const -{ - return m_u64Reads; -} - -uint64_t Statistics::getWrites() const -{ - return m_u64Writes; -} - -uint32_t Statistics::getNumberOfNodes() const -{ - return m_u32Nodes; -} - -uint64_t Statistics::getNumberOfData() const -{ - return m_u64Data; -} - -uint64_t Statistics::getSplits() const -{ - return m_u64Splits; -} - -uint64_t Statistics::getHits() const -{ - return m_u64Hits; -} - -uint64_t Statistics::getMisses() const -{ - return m_u64Misses; -} - -uint64_t Statistics::getAdjustments() const -{ - return m_u64Adjustments; -} - -uint64_t Statistics::getQueryResults() const -{ - return m_u64QueryResults; -} - -uint32_t Statistics::getTreeHeight() const -{ - return m_u32TreeHeight; -} - -uint32_t Statistics::getNumberOfNodesInLevel(uint32_t l) const -{ - uint32_t u32Nodes; - try - { - u32Nodes = m_nodesInLevel.at(l); - } - catch (...) - { - throw libsupermesh::Tools::IndexOutOfBoundsException(l); - } - - return u32Nodes; -} - -void Statistics::reset() -{ - m_u64Reads = 0; - m_u64Writes = 0; - m_u64Splits = 0; - m_u64Hits = 0; - m_u64Misses = 0; - m_u32Nodes = 0; - m_u64Adjustments = 0; - m_u64QueryResults = 0; - m_u64Data = 0; - m_u32TreeHeight = 0; - m_nodesInLevel.clear(); -} - -std::ostream& libsupermesh::SpatialIndex::RTree::operator<<(std::ostream& os, const Statistics& s) -{ - os << "Reads: " << s.m_u64Reads << std::endl - << "Writes: " << s.m_u64Writes << std::endl - << "Hits: " << s.m_u64Hits << std::endl - << "Misses: " << s.m_u64Misses << std::endl - << "Tree height: " << s.m_u32TreeHeight << std::endl - << "Number of data: " << s.m_u64Data << std::endl - << "Number of nodes: " << s.m_u32Nodes << std::endl; - - for (uint32_t u32Level = 0; u32Level < s.m_u32TreeHeight; ++u32Level) - { - os << "Level " << u32Level << " pages: " << s.m_nodesInLevel[u32Level] << std::endl; - } - - os << "Splits: " << s.m_u64Splits << std::endl - << "Adjustments: " << s.m_u64Adjustments << std::endl - << "Query results: " << s.m_u64QueryResults << std::endl; - - return os; -} diff --git a/spatialindex-1.8.5/src/rtree/Statistics.h b/spatialindex-1.8.5/src/rtree/Statistics.h deleted file mode 100644 index c7e2b0e..0000000 --- a/spatialindex-1.8.5/src/rtree/Statistics.h +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class RTree; - class Node; - class Leaf; - class Index; - - class Statistics : public libsupermesh::SpatialIndex::IStatistics - { - public: - Statistics(); - Statistics(const Statistics&); - virtual ~Statistics(); - Statistics& operator=(const Statistics&); - - // - // IStatistics interface - // - virtual uint64_t getReads() const; - virtual uint64_t getWrites() const; - virtual uint32_t getNumberOfNodes() const; - virtual uint64_t getNumberOfData() const; - - virtual uint64_t getSplits() const; - virtual uint64_t getHits() const; - virtual uint64_t getMisses() const; - virtual uint64_t getAdjustments() const; - virtual uint64_t getQueryResults() const; - virtual uint32_t getTreeHeight() const; - virtual uint32_t getNumberOfNodesInLevel(uint32_t l) const; - - private: - void reset(); - - uint64_t m_u64Reads; - - uint64_t m_u64Writes; - - uint64_t m_u64Splits; - - uint64_t m_u64Hits; - - uint64_t m_u64Misses; - - uint32_t m_u32Nodes; - - uint64_t m_u64Adjustments; - - uint64_t m_u64QueryResults; - - uint64_t m_u64Data; - - uint32_t m_u32TreeHeight; - - std::vector m_nodesInLevel; - - friend class RTree; - friend class Node; - friend class Index; - friend class Leaf; - friend class BulkLoader; - - friend std::ostream& operator<<(std::ostream& os, const Statistics& s); - }; // Statistics - - std::ostream& operator<<(std::ostream& os, const Statistics& s); - } -} } diff --git a/spatialindex-1.8.5/src/spatialindex/LineSegment.cc b/spatialindex-1.8.5/src/spatialindex/LineSegment.cc deleted file mode 100644 index f7c35df..0000000 --- a/spatialindex-1.8.5/src/spatialindex/LineSegment.cc +++ /dev/null @@ -1,500 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -LineSegment::LineSegment() - : m_dimension(0), m_pStartPoint(0), m_pEndPoint(0) -{ -} - -LineSegment::LineSegment(const double* pStartPoint, const double* pEndPoint, uint32_t dimension) - : m_dimension(dimension) -{ - // no need to initialize arrays to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - memcpy(m_pStartPoint, pStartPoint, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, pEndPoint, m_dimension * sizeof(double)); -} - -LineSegment::LineSegment(const Point& startPoint, const Point& endPoint) - : m_dimension(startPoint.m_dimension) -{ - if (startPoint.m_dimension != endPoint.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::LineSegment: Points have different dimensionalities." - ); - - // no need to initialize arrays to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - memcpy(m_pStartPoint, startPoint.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, endPoint.m_pCoords, m_dimension * sizeof(double)); -} - -LineSegment::LineSegment(const LineSegment& l) - : m_dimension(l.m_dimension) -{ - // no need to initialize arrays to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - memcpy(m_pStartPoint, l.m_pStartPoint, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, l.m_pEndPoint, m_dimension * sizeof(double)); -} - -LineSegment::~LineSegment() -{ - delete[] m_pStartPoint; - delete[] m_pEndPoint; -} - -LineSegment& LineSegment::operator=(const LineSegment& l) -{ - if (this != &l) - { - makeDimension(l.m_dimension); - memcpy(m_pStartPoint, l.m_pStartPoint, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, l.m_pEndPoint, m_dimension * sizeof(double)); - } - - return *this; -} - -bool LineSegment::operator==(const LineSegment& l) const -{ - if (m_dimension != l.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::operator==: LineSegments have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pStartPoint[i] < l.m_pStartPoint[i] - std::numeric_limits::epsilon() || - m_pStartPoint[i] > l.m_pStartPoint[i] + std::numeric_limits::epsilon()) return false; - - if ( - m_pEndPoint[i] < l.m_pEndPoint[i] - std::numeric_limits::epsilon() || - m_pEndPoint[i] > l.m_pEndPoint[i] + std::numeric_limits::epsilon()) return false; - } - - return true; -} - -// -// IObject interface -// -LineSegment* LineSegment::clone() -{ - return new LineSegment(*this); -} - -// -// ISerializable interface -// -uint32_t LineSegment::getByteArraySize() -{ - return (sizeof(uint32_t) + m_dimension * sizeof(double) * 2); -} - -void LineSegment::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - makeDimension(dimension); - memcpy(m_pStartPoint, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pEndPoint, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void LineSegment::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, m_pStartPoint, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pEndPoint, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IShape interface -// -bool LineSegment::intersectsShape(const IShape& s) const -{ - const LineSegment* ps = dynamic_cast(&s); - if (ps != 0) return intersectsLineSegment(*ps); - - const Region* pr = dynamic_cast(&s); - if (pr != 0) return intersectsRegion(*pr); - - throw libsupermesh::Tools::IllegalStateException( - "LineSegment::intersectsShape: Not implemented yet!" - ); -} - -bool LineSegment::containsShape(const IShape&) const -{ - return false; -} - -bool LineSegment::touchesShape(const IShape&) const -{ - throw libsupermesh::Tools::IllegalStateException( - "LineSegment::touchesShape: Not implemented yet!" - ); -} - -void LineSegment::getCenter(Point& out) const -{ - double* coords = new double[m_dimension]; - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - coords[cDim] = - (std::abs(m_pStartPoint[cDim] - m_pEndPoint[cDim]) / 2.0) + - std::min(m_pStartPoint[cDim], m_pEndPoint[cDim]); - } - - out = Point(coords, m_dimension); - delete[] coords; -} - -uint32_t LineSegment::getDimension() const -{ - return m_dimension; -} - -void LineSegment::getMBR(Region& out) const -{ - double* low = new double[m_dimension]; - double* high = new double[m_dimension]; - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - low[cDim] = std::min(m_pStartPoint[cDim], m_pEndPoint[cDim]); - high[cDim] = std::max(m_pStartPoint[cDim], m_pEndPoint[cDim]); - } - - out = Region(low, high, m_dimension); - delete[] low; - delete[] high; -} - -double LineSegment::getArea() const -{ - return 0.0; -} - -double LineSegment::getMinimumDistance(const IShape& s) const -{ - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) - { - return getMinimumDistance(*ppt); - } - -/* - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->getMinimumDistance(*this); - } -*/ - - throw libsupermesh::Tools::IllegalStateException( - "LineSegment::getMinimumDistance: Not implemented yet!" - ); -} - -double LineSegment::getMinimumDistance(const Point& p) const -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getMinimumDistance: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getMinimumDistance: Distance for high dimensional spaces not supported!" - ); - - if (m_pEndPoint[0] >= m_pStartPoint[0] - std::numeric_limits::epsilon() && - m_pEndPoint[0] <= m_pStartPoint[0] + std::numeric_limits::epsilon()) return std::abs(p.m_pCoords[0] - m_pStartPoint[0]); - - if (m_pEndPoint[1] >= m_pStartPoint[1] - std::numeric_limits::epsilon() && - m_pEndPoint[1] <= m_pStartPoint[1] + std::numeric_limits::epsilon()) return std::abs(p.m_pCoords[1] - m_pStartPoint[1]); - - double x1 = m_pStartPoint[0]; - double x2 = m_pEndPoint[0]; - double x0 = p.m_pCoords[0]; - double y1 = m_pStartPoint[1]; - double y2 = m_pEndPoint[1]; - double y0 = p.m_pCoords[1]; - - return std::abs((x2 - x1) * (y1 - y0) - (x1 - x0) * (y2 - y1)) / (std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); -} - -bool LineSegment::intersectsRegion(const Region& r) const -{ - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::intersectsRegion: only supported for 2 dimensions" - ); - - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::intersectsRegion: LineSegment and Region have different number of dimensions." - ); - - return r.intersectsLineSegment((*this)); -} - -bool LineSegment::intersectsLineSegment(const LineSegment& l) const -{ - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::intersectsLineSegment: only supported for 2 dimensions" - ); - - if (m_dimension != l.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::intersectsLineSegment: LineSegments have different number of dimensions." - ); - - // use Geometry::intersects - Point p1, p2, p3, p4; - p1 = Point(m_pStartPoint, 2); - p2 = Point(m_pEndPoint, 2); - p3 = Point(l.m_pStartPoint, 2); - p4 = Point(l.m_pEndPoint, 2); - return intersects(p1, p2, p3, p4); -} - -// assuming moving from start to end, positive distance is from right hand side. -double LineSegment::getRelativeMinimumDistance(const Point& p) const -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMinimumDistance: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMinimumDistance: Distance for high dimensional spaces not supported!" - ); - - if (m_pEndPoint[0] >= m_pStartPoint[0] - std::numeric_limits::epsilon() && - m_pEndPoint[0] <= m_pStartPoint[0] + std::numeric_limits::epsilon()) - { - if (m_pStartPoint[1] < m_pEndPoint[1]) return m_pStartPoint[0] - p.m_pCoords[0]; - if (m_pStartPoint[1] >= m_pEndPoint[1]) return p.m_pCoords[0] - m_pStartPoint[0]; - } - - if (m_pEndPoint[1] >= m_pStartPoint[1] - std::numeric_limits::epsilon() && - m_pEndPoint[1] <= m_pStartPoint[1] + std::numeric_limits::epsilon()) - { - if (m_pStartPoint[0] < m_pEndPoint[0]) return p.m_pCoords[1] - m_pStartPoint[1]; - if (m_pStartPoint[0] >= m_pEndPoint[0]) return m_pStartPoint[1] - p.m_pCoords[1]; - } - - double x1 = m_pStartPoint[0]; - double x2 = m_pEndPoint[0]; - double x0 = p.m_pCoords[0]; - double y1 = m_pStartPoint[1]; - double y2 = m_pEndPoint[1]; - double y0 = p.m_pCoords[1]; - - return ((x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)) / (std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); -} - -double LineSegment::getRelativeMaximumDistance(const Region& r) const -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMaximumDistance: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMaximumDistance: Distance for high dimensional spaces not supported!" - ); - - // clockwise. - double d1 = getRelativeMinimumDistance(Point(r.m_pLow, 2)); - - double coords[2]; - coords[0] = r.m_pLow[0]; - coords[1] = r.m_pHigh[1]; - double d2 = getRelativeMinimumDistance(Point(coords, 2)); - - double d3 = getRelativeMinimumDistance(Point(r.m_pHigh, 2)); - - coords[0] = r.m_pHigh[0]; - coords[1] = r.m_pLow[1]; - double d4 = getRelativeMinimumDistance(Point(coords, 2)); - - return std::max(d1, std::max(d2, std::max(d3, d4))); -} - -double LineSegment::getAngleOfPerpendicularRay() -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getAngleOfPerpendicularRay: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getAngleOfPerpendicularRay: Distance for high dimensional spaces not supported!" - ); - - if (m_pStartPoint[0] >= m_pEndPoint[0] - std::numeric_limits::epsilon() && - m_pStartPoint[0] <= m_pEndPoint[0] + std::numeric_limits::epsilon()) return 0.0; - - if (m_pStartPoint[1] >= m_pEndPoint[1] - std::numeric_limits::epsilon() && - m_pStartPoint[1] <= m_pEndPoint[1] + std::numeric_limits::epsilon()) return M_PI_2; - - return std::atan(-(m_pStartPoint[0] - m_pEndPoint[0]) / (m_pStartPoint[1] - m_pEndPoint[1])); -} - -void LineSegment::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pStartPoint[cIndex] = std::numeric_limits::max(); - m_pEndPoint[cIndex] = std::numeric_limits::max(); - } -} - -void LineSegment::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pStartPoint; - delete[] m_pEndPoint; - - // remember that this is not a constructor. The object will be destructed normally if - // something goes wrong (bad_alloc), so we must take care not to leave the object at an intermediate state. - m_pStartPoint = 0; - m_pEndPoint = 0; - - m_dimension = dimension; - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - } -} - -// compute double the area of the triangle created by points a, b and c (only for 2 dimensional points) -double LineSegment::doubleAreaTriangle(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - double *pA, *pB, *pC; - pA = a.m_pCoords; pB = b.m_pCoords; pC = c.m_pCoords; - return (((pB[0] - pA[0]) * (pC[1] - pA[1])) - ((pC[0] - pA[0]) * (pB[1] - pA[1]))); -} - -// determine whether point c is to the left of the segment comprised of points a & b (2-d only) -bool LineSegment::leftOf(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - return (doubleAreaTriangle(a, b, c) > 0); -} - -// determine whether all 3 points are on the same line -bool LineSegment::collinear(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - return (doubleAreaTriangle(a, b, c) == 0); -} - -// determine whether the segment comprised of a, b and segment of c, d intersect (exclusive of their endpoints..hence the "Proper") -bool LineSegment::intersectsProper(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c, const libsupermesh::SpatialIndex::Point &d) { - if ( collinear(a, b, c) || collinear(a, b, d) || - collinear(c, d, a) || collinear(c, d, b)) { - return false; - } - return ((leftOf(a, b, c) ^ leftOf(a, b, d)) && - (leftOf(c, d, a) ^ leftOf(c, d, b))); -} - -// if the points are collinear, is c between a & b -bool LineSegment::between(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - if ( !collinear(a, b, c) ) { - return false; - } - double *pA, *pB, *pC; - pA = a.m_pCoords; pB = b.m_pCoords; pC = c.m_pCoords; - if ( pA[0] != pB[0] ) { // a & b are not on the same vertical, compare on x axis - return between(pA[0], pB[0], pC[0]); - } else { // a & b are a vertical segment, we need to compare on y axis - return between(pA[1], pB[1], pC[1]); - } -} - -bool LineSegment::between(double a, double b, double c) { - return ( ((a <= c) && (c <= b)) || ((a >= c) && (c >= b)) ); -} - -// intersection test, including endpoints -bool LineSegment::intersects(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c, const libsupermesh::SpatialIndex::Point &d) { - if (intersectsProper(a, b, c, d)) { - return true; - } - else if ( between(a, b, c) || between(a, b, d) || - between(c, d, a) || between(c, d, b) ) { - return true; - } - else { - return false; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const LineSegment& l) -{ - for (uint32_t cDim = 0; cDim < l.m_dimension; ++cDim) - { - os << l.m_pStartPoint[cDim] << ", " << l.m_pEndPoint[cDim] << " "; - } - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/Makefile.am b/spatialindex-1.8.5/src/spatialindex/Makefile.am deleted file mode 100644 index 7e80c20..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = liblibrary.la -INCLUDES = -I../../include -liblibrary_la_SOURCES = Point.cc Region.cc LineSegment.cc MovingPoint.cc MovingRegion.cc TimePoint.cc TimeRegion.cc SpatialIndexImpl.cc diff --git a/spatialindex-1.8.5/src/spatialindex/Makefile.in b/spatialindex-1.8.5/src/spatialindex/Makefile.in deleted file mode 100644 index d36e313..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Makefile.in +++ /dev/null @@ -1,587 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/spatialindex -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -liblibrary_la_LIBADD = -am_liblibrary_la_OBJECTS = Point.lo Region.lo LineSegment.lo \ - MovingPoint.lo MovingRegion.lo TimePoint.lo TimeRegion.lo \ - SpatialIndexImpl.lo -liblibrary_la_OBJECTS = $(am_liblibrary_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(liblibrary_la_SOURCES) -DIST_SOURCES = $(liblibrary_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = liblibrary.la -INCLUDES = -I../../include -liblibrary_la_SOURCES = Point.cc Region.cc LineSegment.cc MovingPoint.cc MovingRegion.cc TimePoint.cc TimeRegion.cc SpatialIndexImpl.cc -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/spatialindex/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/spatialindex/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -liblibrary.la: $(liblibrary_la_OBJECTS) $(liblibrary_la_DEPENDENCIES) $(EXTRA_liblibrary_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(liblibrary_la_OBJECTS) $(liblibrary_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineSegment.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MovingPoint.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MovingRegion.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Point.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Region.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SpatialIndexImpl.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimePoint.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimeRegion.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/spatialindex/MovingPoint.cc b/spatialindex-1.8.5/src/spatialindex/MovingPoint.cc deleted file mode 100644 index 32b737d..0000000 --- a/spatialindex-1.8.5/src/spatialindex/MovingPoint.cc +++ /dev/null @@ -1,334 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -MovingPoint::MovingPoint() -{ -} - -MovingPoint::MovingPoint( const double* pCoords, - const double* pVCoords, - const IInterval& ti, - uint32_t dimension) -{ - initialize( pCoords, - pVCoords, - ti.getLowerBound(), - ti.getUpperBound(), - dimension); -} - -MovingPoint::MovingPoint( const double* pCoords, - const double* pVCoords, - double tStart, - double tEnd, - uint32_t dimension) -{ - initialize(pCoords, pVCoords, tStart, tEnd, dimension); -} - -MovingPoint::MovingPoint( const Point& p, - const Point& vp, - const IInterval& ti) -{ - if (p.m_dimension != vp.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingPoint: Points have different number of dimensions."); - - initialize( p.m_pCoords, - vp.m_pCoords, - ti.getLowerBound(), - ti.getUpperBound(), - p.m_dimension); -} - -MovingPoint::MovingPoint(const Point& p, const Point& vp, double tStart, double tEnd) -{ - if (p.m_dimension != vp.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingPoint: Points have different number of dimensions."); - - initialize( p.m_pCoords, - vp.m_pCoords, - tStart, - tEnd, - p.m_dimension); -} - -MovingPoint::MovingPoint(const MovingPoint& p) -{ - m_startTime = p.m_startTime; - m_endTime = p.m_endTime; - m_pCoords = 0; - - m_dimension = p.m_dimension; - - try - { - m_pCoords = new double[m_dimension]; - m_pVCoords = new double[m_dimension]; - } - catch (...) - { - delete[] m_pCoords; - throw; - } - - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pVCoords, p.m_pVCoords, m_dimension * sizeof(double)); -} - -MovingPoint::~MovingPoint() -{ - delete[] m_pVCoords; -} - -void MovingPoint::initialize( - const double* pCoords, const double* pVCoords, - double tStart, double tEnd, uint32_t dimension) -{ - m_dimension = dimension; - m_startTime = tStart; - m_endTime = tEnd; - m_pCoords = 0; - - if (m_endTime <= m_startTime) - throw libsupermesh::Tools::IllegalArgumentException("MovingPoint: Cannot support degenerate time intervals."); - - try - { - m_pCoords = new double[m_dimension]; - m_pVCoords = new double[m_dimension]; - } - catch (...) - { - delete[] m_pCoords; - throw; - } - - // first store the point coordinates, than the point velocities. - memcpy(m_pCoords, pCoords, m_dimension * sizeof(double)); - memcpy(m_pVCoords, pVCoords, m_dimension * sizeof(double)); -} - -MovingPoint& MovingPoint::operator=(const MovingPoint& p) -{ - if (this != &p) - { - makeDimension(p.m_dimension); - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pVCoords, p.m_pVCoords, m_dimension * sizeof(double)); - - m_startTime = p.m_startTime; - m_endTime = p.m_endTime; - } - - return *this; -} - -bool MovingPoint::operator==(const MovingPoint& p) const -{ - if ( - m_startTime < p.m_startTime - std::numeric_limits::epsilon() || - m_startTime > p.m_startTime + std::numeric_limits::epsilon() || - m_endTime < p.m_endTime - std::numeric_limits::epsilon() || - m_endTime > p.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t cDim = 0; cDim < 2 * m_dimension; ++cDim) - { - if ( - m_pCoords[cDim] < p.m_pCoords[cDim] - std::numeric_limits::epsilon() || - m_pCoords[cDim] > p.m_pCoords[cDim] + std::numeric_limits::epsilon() || - m_pVCoords[cDim] < p.m_pVCoords[cDim] - std::numeric_limits::epsilon() || - m_pVCoords[cDim] > p.m_pVCoords[cDim] + std::numeric_limits::epsilon()) - return false; - } - - return true; -} - -double MovingPoint::getCoord(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - if (t >= m_endTime) return m_pCoords[d] + m_pVCoords[d] * (m_endTime - m_startTime); - else if (t <= m_startTime) return m_pCoords[d] + m_pVCoords[d] * m_startTime; - else return m_pCoords[d] + m_pVCoords[d] * (t - m_startTime); -} - -double MovingPoint::getProjectedCoord(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pCoords[d] + m_pVCoords[d] * (t - m_startTime); -} - -double MovingPoint::getVCoord(uint32_t d) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pVCoords[d]; -} - -void MovingPoint::getPointAtTime(double t, Point& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - out.m_pCoords[cDim] = getCoord(cDim, t); - } -} - -// -// IObject interface -// -MovingPoint* MovingPoint::clone() -{ - return new MovingPoint(*this); -} - -// -// ISerializable interface -// -uint32_t MovingPoint::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + 2 * m_dimension * sizeof(double)); -} - -void MovingPoint::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pCoords, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pVCoords, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void MovingPoint::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, m_pCoords, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pVCoords, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IEvolvingShape interface -// -void MovingPoint::getVMBR(Region& out) const -{ - out.makeDimension(m_dimension); - memcpy(out.m_pLow, m_pVCoords, m_dimension * sizeof(double)); - memcpy(out.m_pHigh, m_pVCoords, m_dimension * sizeof(double)); -} - -void MovingPoint::getMBRAtTime(double t, Region& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - out.m_pLow[cDim] = getCoord(cDim, t); - out.m_pHigh[cDim] = getCoord(cDim, t); - } -} - -void MovingPoint::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pCoords[cIndex] = std::numeric_limits::max(); - m_pVCoords[cIndex] = -std::numeric_limits::max(); - } - - m_startTime = std::numeric_limits::max(); - m_endTime = -std::numeric_limits::max(); -} - -void MovingPoint::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pCoords; - delete[] m_pVCoords; - m_pCoords = 0; m_pVCoords = 0; - - m_dimension = dimension; - m_pCoords = new double[m_dimension]; - m_pVCoords = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const MovingPoint& pt) -{ - uint32_t i; - - os << "Coords: "; - for (i = 0; i < pt.m_dimension; ++i) - { - os << pt.m_pCoords[i] << " "; - } - - os << "VCoords: "; - for (i = 0; i < pt.m_dimension; ++i) - { - os << pt.m_pVCoords[i] << " "; - } - - os << ", Start: " << pt.m_startTime << ", End: " << pt.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/MovingRegion.cc b/spatialindex-1.8.5/src/spatialindex/MovingRegion.cc deleted file mode 100644 index cc0fc73..0000000 --- a/spatialindex-1.8.5/src/spatialindex/MovingRegion.cc +++ /dev/null @@ -1,1242 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -/* - * Does not support degenerate time intervals or shrinking regions. -*/ - - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -MovingRegion::MovingRegion() - : TimeRegion(), m_pVLow(0), m_pVHigh(0) -{ -} - -MovingRegion::MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - const IInterval& ivT, uint32_t dimension) -{ - initialize(pLow, pHigh, pVLow, pVHigh, ivT.getLowerBound(), ivT.getUpperBound(), dimension); -} - -MovingRegion::MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension) -{ - initialize(pLow, pHigh, pVLow, pVHigh, tStart, tEnd, dimension); -} - -MovingRegion::MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - const IInterval& ivT) -{ - if (low.m_dimension != high.m_dimension || low.m_dimension != vlow.m_dimension || vlow.m_dimension != vhigh.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize( - low.m_pCoords, high.m_pCoords, vlow.m_pCoords, vhigh.m_pCoords, - ivT.getLowerBound(), ivT.getUpperBound(), low.m_dimension); -} - -MovingRegion::MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - double tStart, double tEnd) -{ - if (low.m_dimension != high.m_dimension || low.m_dimension != vlow.m_dimension || vlow.m_dimension != vhigh.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize( - low.m_pCoords, high.m_pCoords, vlow.m_pCoords, vhigh.m_pCoords, - tStart, tEnd, low.m_dimension); -} - -MovingRegion::MovingRegion( - const Region& mbr, const Region& vbr, const IInterval& ivT) -{ - if (mbr.m_dimension != vbr.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize(mbr.m_pLow, mbr.m_pHigh, vbr.m_pLow, vbr.m_pHigh, ivT.getLowerBound(), ivT.getUpperBound(), mbr.m_dimension); -} - -MovingRegion::MovingRegion( - const Region& mbr, const Region& vbr, double tStart, double tEnd) -{ - if (mbr.m_dimension != vbr.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize(mbr.m_pLow, mbr.m_pHigh, vbr.m_pLow, vbr.m_pHigh, tStart, tEnd, mbr.m_dimension); -} - -MovingRegion::MovingRegion(const MovingPoint& low, const MovingPoint& high) -{ - m_startTime = low.m_startTime; - m_endTime = high.m_endTime;; - m_dimension = low.m_dimension; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - if (m_endTime <= m_startTime) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: Cannot support degenerate time intervals."); - - if (low.m_dimension != high.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - - } - catch (...) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - throw; - } - - memcpy(m_pLow, low.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pHigh, high.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pVLow, low.m_pVCoords, m_dimension * sizeof(double)); - memcpy(m_pVHigh, high.m_pVCoords, m_dimension * sizeof(double)); -} - -MovingRegion::MovingRegion(const MovingRegion& r) -{ - m_startTime = r.m_startTime; - m_endTime = r.m_endTime; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - m_dimension = r.m_dimension; - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - throw; - } - - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - memcpy(m_pVLow, r.m_pVLow, m_dimension * sizeof(double)); - memcpy(m_pVHigh, r.m_pVHigh, m_dimension * sizeof(double)); -} - -void MovingRegion::initialize( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension) -{ - m_startTime = tStart; - m_endTime = tEnd; - m_dimension = dimension; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - if (m_endTime <= m_startTime) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: Cannot support degenerate time intervals."); - -#ifndef NDEBUG - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (pLow[cDim] > pHigh[cDim]) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: Low point has larger coordinates than High point."); - } -#endif - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - throw; - } - - // first store the point coordinates, than the point velocities. - memcpy(m_pLow, pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, pHigh, m_dimension * sizeof(double)); - memcpy(m_pVLow, pVLow, m_dimension * sizeof(double)); - memcpy(m_pVHigh, pVHigh, m_dimension * sizeof(double)); -} - -MovingRegion::~MovingRegion() -{ - delete[] m_pVLow; - delete[] m_pVHigh; -} - -MovingRegion& MovingRegion::operator=(const MovingRegion& r) -{ - if(this != &r) - { - makeDimension(r.m_dimension); - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - memcpy(m_pVLow, r.m_pVLow, m_dimension * sizeof(double)); - memcpy(m_pVHigh, r.m_pVHigh, m_dimension * sizeof(double)); - - m_startTime = r.m_startTime; - m_endTime = r.m_endTime; - - assert(m_startTime < m_endTime); - } - - return *this; -} - -bool MovingRegion::operator==(const MovingRegion& r) const -{ - if (m_startTime < r.m_startTime - std::numeric_limits::epsilon() || - m_startTime > r.m_startTime + std::numeric_limits::epsilon() || - m_endTime < r.m_endTime - std::numeric_limits::epsilon() || - m_endTime > r.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pLow[i] < r.m_pLow[i] - std::numeric_limits::epsilon() || - m_pLow[i] > r.m_pLow[i] + std::numeric_limits::epsilon() || - m_pHigh[i] < r.m_pHigh[i] - std::numeric_limits::epsilon() || - m_pHigh[i] > r.m_pHigh[i] + std::numeric_limits::epsilon() || - m_pVLow[i] < r.m_pVLow[i] - std::numeric_limits::epsilon() || - m_pVLow[i] > r.m_pVLow[i] + std::numeric_limits::epsilon() || - m_pVHigh[i] < r.m_pVHigh[i] - std::numeric_limits::epsilon() || - m_pVHigh[i] > r.m_pVHigh[i] + std::numeric_limits::epsilon()) - return false; - } - return true; -} - -bool MovingRegion::isShrinking() const -{ - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (m_pVHigh[cDim] < m_pVLow[cDim]) return true; - } - return false; -} - -// assumes that the region is not moving before and after start and end time. -double MovingRegion::getLow(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - if (t > m_endTime) return m_pLow[d] + m_pVLow[d] * (m_endTime - m_startTime); - else if (t < m_startTime) return m_pLow[d]; - else return m_pLow[d] + m_pVLow[d] * (t - m_startTime); -} - -// assumes that the region is not moving before and after start and end time. -double MovingRegion::getHigh(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - if (t > m_endTime) return m_pHigh[d] + m_pVHigh[d] * (m_endTime - m_startTime); - else if (t < m_startTime) return m_pHigh[d]; - else return m_pHigh[d] + m_pVHigh[d] * (t - m_startTime); -} - -// assuming that the region kept moving. -double MovingRegion::getExtrapolatedLow(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pLow[d] + m_pVLow[d] * (t - m_startTime); -} - -// assuming that the region kept moving. -double MovingRegion::getExtrapolatedHigh(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pHigh[d] + m_pVHigh[d] * (t - m_startTime); -} - -double MovingRegion::getVLow(uint32_t d) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pVLow[d]; -} - -double MovingRegion::getVHigh(uint32_t d) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pVHigh[d]; -} - -bool MovingRegion::intersectsRegionInTime(const MovingRegion& r) const -{ - libsupermesh::Tools::Interval ivOut; - return intersectsRegionInTime(r, ivOut); -} - -bool MovingRegion::intersectsRegionInTime(const MovingRegion& r, IInterval& ivOut) const -{ - return intersectsRegionInTime(r, r, ivOut); -} - -// if tmin, tmax are infinity then this will not work correctly (everything will always intersect). -// does not work for shrinking regions. -// does not work with degenerate time-intervals. -// -// WARNING: this will return true even if one region completely contains the other, since -// their areas do intersect in that case! -// -// there are various cases here: -// 1. one region contains the other. -// 2. one boundary of one region is always contained indide the other region, while the other -// boundary is not (so no boundaries will ever intersect). -// 3. either the upper or lower boundary of one region intersects a boundary of the other. -bool MovingRegion::intersectsRegionInTime(const IInterval& ivPeriod, const MovingRegion& r, IInterval& ivOut) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsRegionInTime: MovingRegions have different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(r.m_startTime < r.m_endTime); - assert(ivPeriod.getLowerBound() < ivPeriod.getUpperBound()); - assert(isShrinking() == false && r.isShrinking() == false); - - // this is needed, since we are assuming below that the two regions have some point of intersection - // inside itPeriod. - if (containsRegionInTime(ivPeriod, r) || r.containsRegionInTime(ivPeriod, *this)) - { - ivOut = ivPeriod; - return true; - } - - double tmin = std::max(m_startTime, r.m_startTime); - double tmax = std::min(m_endTime, r.m_endTime); - - // the regions do not intersect in time. - if (tmax <= tmin) return false; - - tmin = std::max(tmin, ivPeriod.getLowerBound()); - tmax = std::min(tmax, ivPeriod.getUpperBound()); - - // the regions intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return false; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - // I use projected low and high because they are faster and it does not matter. - // The are also necessary for calculating the intersection point with reference time instant 0.0. - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= r.m_startTime && tmax <= r.m_endTime); - - // completely above or bellow in i-th dimension - if ( - (r.getExtrapolatedLow(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) && - r.getExtrapolatedLow(cDim, tmax) >= getExtrapolatedHigh(cDim, tmax)) || - (r.getExtrapolatedHigh(cDim, tmin) < getExtrapolatedLow(cDim, tmin) && - r.getExtrapolatedHigh(cDim, tmax) <= getExtrapolatedLow(cDim, tmax))) - return false; - - // otherwise they intersect inside this interval for sure. Care needs to be taken since - // intersection does not necessarily mean that two line segments intersect. It could be - // that one line segment is completely above/below another, in which case there is no intersection - // point inside tmin, tmax, even though the two region areas do intersect. - - if (r.getExtrapolatedLow(cDim, tmin) > getExtrapolatedHigh(cDim, tmin)) // r above *this at tmin - { - tmin = (getExtrapolatedHigh(cDim, 0.0) - r.getExtrapolatedLow(cDim, 0.0)) / (r.getVLow(cDim) - getVHigh(cDim)); - } - else if (r.getExtrapolatedHigh(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) // r below *this at tmin - { - tmin = (getExtrapolatedLow(cDim, 0.0) - r.getExtrapolatedHigh(cDim, 0.0)) / (r.getVHigh(cDim) - getVLow(cDim)); - } - // else they do not intersect and the boundary might be completely contained in this region. - - if (r.getExtrapolatedLow(cDim, tmax) > getExtrapolatedHigh(cDim, tmax)) // r above *this at tmax - { - tmax = (getExtrapolatedHigh(cDim, 0.0) - r.getExtrapolatedLow(cDim, 0.0)) / (r.getVLow(cDim) - getVHigh(cDim)); - } - else if (r.getExtrapolatedHigh(cDim, tmax) < getExtrapolatedLow(cDim, tmax)) // r below *this at tmax - { - tmax = (getExtrapolatedLow(cDim, 0.0) - r.getExtrapolatedHigh(cDim, 0.0)) / (r.getVHigh(cDim) - getVLow(cDim)); - } - // else they do not intersect and the boundary might be completely contained in this region. - - assert(tmin <= tmax); - } - - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= r.m_startTime && tmax <= r.m_endTime); - - ivOut.setBounds(tmin, tmax); - - return true; -} - -bool MovingRegion::containsRegionInTime(const MovingRegion& r) const -{ - return containsRegionInTime(r, r); -} - -// does not work for shrinking regions. -// works fine for infinite bounds (both tmin and tmax). -// does not work with degenerate time-intervals. -// -// finds if during the intersecting time-interval of r and ivPeriod, r is completely contained in *this. -bool MovingRegion::containsRegionInTime(const IInterval& ivPeriod, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsRegionInTime: MovingRegions have different number of dimensions."); - - assert(isShrinking() == false && r.isShrinking() == false); - - double tmin = std::max(ivPeriod.getLowerBound(), r.m_startTime); - double tmax = std::min(ivPeriod.getUpperBound(), r.m_endTime); - - // it should be contained in time. - // it does not make sense if this region is not defined for any part ot [tmin, tmax]. - if (tmax <= tmin || tmin < m_startTime || tmax > m_endTime) return false; - - double intersectionTime; - - // no need to take projected coordinates here, since tmin and tmax are always contained in - // the regions intersecting time-intervals. - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= r.m_startTime && tmax <= r.m_endTime); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - // it should be contained at start time. - if (r.getExtrapolatedHigh(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) || - r.getExtrapolatedLow(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) return false; - - // this will take care of infinite bounds. - if (r.m_pVHigh[cDim] != m_pVHigh[cDim]) - { - intersectionTime = (getExtrapolatedHigh(cDim, 0.0) - r.getExtrapolatedHigh(cDim, 0.0)) / (r.m_pVHigh[cDim] - m_pVHigh[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && r.m_pVHigh[cDim] > m_pVHigh[cDim]) return false; - } - - if (r.m_pVLow[cDim] != m_pVLow[cDim]) - { - intersectionTime = (getExtrapolatedLow(cDim, 0.0) - r.getExtrapolatedLow(cDim, 0.0)) / (r.m_pVLow[cDim] - m_pVLow[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && r.m_pVLow[cDim] < m_pVLow[cDim]) return false; - } - } - - return true; -} - -bool MovingRegion::containsRegionAfterTime(double t, const MovingRegion& r) const -{ - libsupermesh::Tools::Interval ivT(t, r.m_endTime); - return containsRegionInTime(ivT, r); -} - -// Returns the area swept by the rectangle in time, in d-dimensional space (without -// including the temporal dimension, that is). -// This is what Saltenis calls Margin (which is different than what Beckmann proposes, -// where he computes only the wireframe -- instead of the surface/volume/etc. -- of the MBR in any dimension). -double MovingRegion::getProjectedSurfaceAreaInTime() const -{ - return getProjectedSurfaceAreaInTime(*this); -} - -double MovingRegion::getProjectedSurfaceAreaInTime(const IInterval& ivI) const -{ - double tmin = std::max(ivI.getLowerBound(), m_startTime); - double tmax = std::min(ivI.getUpperBound(), m_endTime); - - assert(tmin > -std::numeric_limits::max()); - assert(tmax < std::numeric_limits::max()); - assert(tmin <= tmax); - - if (tmin >= tmax - std::numeric_limits::epsilon() && - tmin <= tmax + std::numeric_limits::epsilon()) - return 0.0; - - double dx1, dx2, dx3; - double dv1, dv2, dv3; - double H = tmax - tmin; - - if (m_dimension == 3) - { - dx3 = getExtrapolatedHigh(2, tmin) - getExtrapolatedLow(2, tmin); - dv3 = getVHigh(2) - getVLow(2); - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return - H * (dx1 + dx2 + dx3 + dx1*dx2 + dx1*dx3 + dx2*dx3) + - H*H * (dv1 + dv2 + dv3 + dx1*dv2 + dv1*dx2 + dx1*dv3 + - dv1*dx3 + dx2*dv3 + dv2*dx3) / 2.0 + - H*H*H * (dv1*dv2 + dv1*dv3 + dv2*dv3) / 3.0; - } - else if (m_dimension == 2) - { - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return H * (dx1 + dx2) + H * H * (dv1 + dv2) / 2.0; - } - else if (m_dimension == 1) - { - // marioh: why not use the increase of the length of the interval here? - return 0.0; - } - else - { - throw libsupermesh::Tools::IllegalStateException("getProjectedSurfaceAreaInTime: unsupported dimensionality."); - } -} - -double MovingRegion::getCenterDistanceInTime(const MovingRegion& r) const -{ - - return getCenterDistanceInTime(r, r); -} - -double MovingRegion::getCenterDistanceInTime(const IInterval& ivI, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getCenterDistanceInTime: MovingRegions have different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(r.m_startTime < r.m_endTime); - assert(ivI.getLowerBound() < ivI.getUpperBound()); - - double tmin = std::max(m_startTime, r.m_startTime); - double tmax = std::min(m_endTime, r.m_endTime); - - // the regions do not intersect in time. - if (tmax <= tmin) return 0.0; - - tmin = std::max(tmin, ivI.getLowerBound()); - tmax = std::min(tmax, ivI.getUpperBound()); - - // the regions intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return 0.0; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - if (tmin >= tmax - std::numeric_limits::epsilon() && - tmin <= tmax + std::numeric_limits::epsilon()) - return 0.0; - - double H = tmax - tmin; - - double* dx = new double[m_dimension]; - double* dv = new double[m_dimension]; - double a = 0.0, b = 0.0, c = 0.0, f = 0.0, l = 0.0, m = 0.0, n = 0.0; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - dx[cDim] = - (r.getExtrapolatedLow(cDim, tmin) + r.getExtrapolatedHigh(cDim, tmin)) / 2.0 - - (getExtrapolatedLow(cDim, tmin) + getExtrapolatedHigh(cDim, tmin)) / 2.0; - dv[cDim] = - (r.getVLow(cDim) + r.getVHigh(cDim)) / 2.0 - - (getVLow(cDim) + getVHigh(cDim)) / 2.0; - } - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - a += dv[cDim] * dv[cDim]; - b += 2.0 * dx[cDim] * dv[cDim]; - c += dx[cDim] * dx[cDim]; - } - - if (a == 0.0 && c == 0.0) return 0.0; - if (a == 0.0) return H * std::sqrt(c); - if (c == 0.0) return H * H * std::sqrt(a) / 2.0; - - f = std::sqrt(a * H * H + b * H + c); - l = 2.0 * a * H + b; - m = 4.0 * a * c - b * b; - n = 2.0 * std::sqrt(a); - - delete[] dx; - delete[] dv; - - return (l * f + log(l / n + f) * m / n - b * std::sqrt(c) - std::log(b / n + std::sqrt(c)) * m / n) / (4.0 * a); -} - -// does not work with degenerate time-intervals. -bool MovingRegion::intersectsRegionAtTime(double t, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsRegionAtTime: MovingRegions have different number of dimensions."); - - // do they contain the time instant? - if (! (m_startTime <= t && t < m_endTime && r.m_startTime <= t && t < r.m_endTime)) return false; - - // do they intersect at that time instant? - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (getExtrapolatedLow(i, t) > r.getExtrapolatedHigh(i, t) || getExtrapolatedHigh(i, t) < r.getExtrapolatedLow(i, t)) return false; - } - return true; -} - -// does not work with degenerate time-intervals. -bool MovingRegion::containsRegionAtTime(double t, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsRegionAtTime: MovingRegions have different number of dimensions."); - - // do they contain the time instant? - if (! (m_startTime <= t && t < m_endTime && r.m_startTime <= t && t < r.m_endTime)) return false; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (getExtrapolatedLow(cDim, t) > r.getExtrapolatedLow(cDim, t) || getExtrapolatedHigh(cDim, t) < getExtrapolatedHigh(cDim, t)) return false; - } - return true; -} - -bool MovingRegion::intersectsPointInTime(const MovingPoint& p) const -{ - libsupermesh::Tools::Interval ivOut; - return intersectsPointInTime(p, ivOut); -} - -bool MovingRegion::intersectsPointInTime(const MovingPoint& p, IInterval& ivOut) const -{ - return intersectsPointInTime(p, p, ivOut); -} - -// if tmin, tmax are infinity then this will not work correctly (everything will always intersect). -// does not work for shrinking regions. -// does not work with degenerate time-intervals. -// FIXME: don't know what happens if tmin is negative infinity. -// -// WARNING: This will return true even if the region completely contains the point, since -// in that case the point trajectory intersects the region area! -bool MovingRegion::intersectsPointInTime(const IInterval& ivPeriod, const MovingPoint& p, IInterval& ivOut) const -{ - if (m_dimension != p.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsPointInTime: MovingPoint has different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(p.m_startTime < p.m_endTime); - assert(ivPeriod.getLowerBound() < ivPeriod.getUpperBound()); - assert(isShrinking() == false); - - if (containsPointInTime(ivPeriod, p)) - { - ivOut = ivPeriod; - return true; - } - - double tmin = std::max(m_startTime, p.m_startTime); - double tmax = std::min(m_endTime, p.m_endTime); - - // the shapes do not intersect in time. - if (tmax <= tmin) return false; - - tmin = std::max(tmin, ivPeriod.getLowerBound()); - tmax = std::min(tmax, ivPeriod.getUpperBound()); - - // the shapes intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return false; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= p.m_startTime && tmax <= p.m_endTime); - - // completely above or bellow in i-th dimension - if ((p.getProjectedCoord(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) && - p.getProjectedCoord(cDim, tmax) >= getExtrapolatedHigh(cDim, tmax)) || - (p.getProjectedCoord(cDim, tmin) < getExtrapolatedLow(cDim, tmin) && - p.getProjectedCoord(cDim, tmax) <= getExtrapolatedLow(cDim, tmax))) - return false; - - // otherwise they intersect inside this interval for sure, since we know that the point is not contained, - // so there is no need to check for 0 divisors, negative values, etc... - - // adjust tmin - if (p.getProjectedCoord(cDim, tmin) > getExtrapolatedHigh(cDim, tmin)) // p above *this at tmin - { - tmin = (getExtrapolatedHigh(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVHigh(cDim)); - } - else if (p.getProjectedCoord(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) // p below *this at tmin - { - tmin = (getExtrapolatedLow(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVLow(cDim)); - } - - // adjust tmax - if (p.getProjectedCoord(cDim, tmax) > getExtrapolatedHigh(cDim, tmax)) // p above *this at tmax - { - tmax = (getExtrapolatedHigh(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVHigh(cDim)); - } - else if (p.getProjectedCoord(cDim, tmax) < getExtrapolatedLow(cDim, tmax)) // p below *this at tmax - { - tmax = (getExtrapolatedLow(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVLow(cDim)); - } - - if (tmin > tmax) return false; - } - - ivOut.setBounds(tmin, tmax); - - return true; -} - -bool MovingRegion::containsPointInTime(const MovingPoint& p) const -{ - return containsPointInTime(p, p); -} - -// does not work for shrinking regions. -// works fine for infinite bounds (both tmin and tmax). -// does not work with degenerate time-intervals. -// -// finds if during the intersecting time-interval of p and ivPeriod, p is completely contained in *this. -bool MovingRegion::containsPointInTime(const IInterval& ivPeriod, const MovingPoint& p) const -{ - if (m_dimension != p.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsPointInTime: MovingPoint has different number of dimensions."); - - assert(isShrinking() == false); - - double tmin = std::max(ivPeriod.getLowerBound(), p.m_startTime); - double tmax = std::min(ivPeriod.getUpperBound(), p.m_endTime); - - // it should be contained in time. - if (tmax <= tmin || tmin < m_startTime || tmax > m_endTime) return false; - - double intersectionTime; - - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= p.m_startTime && tmax <= p.m_endTime); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - // it should be contained at start time. - if (p.getProjectedCoord(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) || - p.getProjectedCoord(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) return false; - - if (p.m_pVCoords[cDim] != m_pVHigh[cDim]) - { - intersectionTime = (getExtrapolatedHigh(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.m_pVCoords[cDim] - m_pVHigh[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && p.m_pVCoords[cDim] > m_pVHigh[cDim]) return false; - } - - if (p.m_pVCoords[cDim] != m_pVLow[cDim]) - { - intersectionTime = (getExtrapolatedLow(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.m_pVCoords[cDim] - m_pVLow[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && p.m_pVCoords[cDim] < m_pVLow[cDim]) return false; - } - } - - return true; -} - -void MovingRegion::combineRegionInTime(const MovingRegion& r) -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("combineRegionInTime: MovingRegions have different number of dimensions."); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(getExtrapolatedLow(cDim, m_startTime), r.getExtrapolatedLow(cDim, m_startTime)); - m_pHigh[cDim] = std::max(getExtrapolatedHigh(cDim, m_startTime), r.getExtrapolatedHigh(cDim, m_startTime)); - m_pVLow[cDim] = std::min(m_pVLow[cDim], r.m_pVLow[cDim]); - m_pVHigh[cDim] = std::max(m_pVHigh[cDim], r.m_pVHigh[cDim]); - } - - // m_startTime should be modified at the end, since it affects the - // calculation of extrapolated coordinates. - m_startTime = std::min(m_startTime, r.m_startTime); - m_endTime = std::max(m_endTime, r.m_endTime); -} - -void MovingRegion::getCombinedRegionInTime(MovingRegion& out, const MovingRegion& in) const -{ - if (m_dimension != in.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getCombinedProjectedRegionInTime: MovingRegions have different number of dimensions."); - - out = *this; - out.combineRegionInTime(in); -} - -void MovingRegion::combineRegionAfterTime(double t, const MovingRegion& r) -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("combineRegionInTime: MovingRegions have different number of dimensions."); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(getExtrapolatedLow(cDim, t), r.getExtrapolatedLow(cDim, t)); - m_pHigh[cDim] = std::max(getExtrapolatedHigh(cDim, t), r.getExtrapolatedHigh(cDim, t)); - m_pVLow[cDim] = std::min(m_pVLow[cDim], r.m_pVLow[cDim]); - m_pVHigh[cDim] = std::max(m_pVHigh[cDim], r.m_pVHigh[cDim]); - } - - // m_startTime should be modified at the end, since it affects the - // calculation of extrapolated coordinates. - m_startTime = t; - m_endTime = std::max(m_endTime, r.m_endTime); - if (t >= m_endTime) m_endTime = std::numeric_limits::max(); -} - -void MovingRegion::getCombinedRegionAfterTime(double t, MovingRegion& out, const MovingRegion& in) const -{ - if (m_dimension != in.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getCombinedProjectedRegionInTime: MovingRegions have different number of dimensions."); - - out = *this; - out.combineRegionAfterTime(t, in); -} - -double MovingRegion::getIntersectingAreaInTime(const MovingRegion& r) const -{ - return getIntersectingAreaInTime(r, r); -} - -double MovingRegion::getIntersectingAreaInTime(const IInterval& ivI, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getIntersectingAreaInTime: MovingRegions have different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(r.m_startTime < r.m_endTime); - assert(ivI.getLowerBound() < ivI.getUpperBound()); - assert(isShrinking() == false && r.isShrinking() == false); - - double tmin = std::max(m_startTime, r.m_startTime); - double tmax = std::min(m_endTime, r.m_endTime); - - // the regions do not intersect in time. - if (tmax <= tmin) return 0.0; - - tmin = std::max(tmin, ivI.getLowerBound()); - tmax = std::min(tmax, ivI.getUpperBound()); - - // the regions intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return 0.0; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - libsupermesh::Tools::Interval ivIn(tmin, tmax); - libsupermesh::Tools::Interval ivOut(ivIn); - - if (! intersectsRegionInTime(ivIn, r, ivOut)) return 0.0; - - ivIn = ivOut; - tmin = ivIn.getLowerBound(); - tmax = ivIn.getUpperBound(); - assert(tmin <= tmax); - - assert(tmin >= ivI.getLowerBound() && tmax <= ivI.getUpperBound()); - - if (containsRegionInTime(ivIn, r)) - { - return r.getAreaInTime(ivIn); - } - else if (r.containsRegionInTime(ivIn, *this)) - { - return getAreaInTime(ivIn); - } - - MovingRegion x = *this; - CrossPoint c; - std::priority_queue, CrossPoint::ascending> pq; - - // find points of intersection in all dimensions. - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (getLow(i, tmin) > r.getLow(i, tmin)) - { - x.m_pLow[i] = m_pLow[i]; - x.m_pVLow[i] = m_pVLow[i]; - - if (getLow(i, tmax) < r.getLow(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 0; - c.m_t = (getExtrapolatedLow(i, 0.0) - r.getExtrapolatedLow(i, 0.0)) / (r.getVLow(i) - getVLow(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = &r; - pq.push(c); - } - } - else - { - x.m_pLow[i] = r.m_pLow[i]; - x.m_pVLow[i] = r.m_pVLow[i]; - - if (r.getLow(i, tmax) < getLow(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 0; - c.m_t = (getExtrapolatedLow(i, 0.0) - r.getExtrapolatedLow(i, 0.0)) / (r.getVLow(i) - getVLow(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = this; - pq.push(c); - } - } - - if (getHigh(i, tmin) < r.getHigh(i, tmin)) - { - x.m_pHigh[i] = m_pHigh[i]; - x.m_pVHigh[i] = m_pVHigh[i]; - - if (getHigh(i, tmax) > r.getHigh(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 1; - c.m_t = (getExtrapolatedHigh(i, 0.0) - r.getExtrapolatedHigh(i, 0.0)) / (r.getVHigh(i) - getVHigh(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = &r; - pq.push(c); - } - } - else - { - x.m_pHigh[i] = r.m_pHigh[i]; - x.m_pVHigh[i] = r.m_pVHigh[i]; - - if (r.getHigh(i, tmax) > getHigh(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 1; - c.m_t = (getExtrapolatedHigh(i, 0.0) - r.getExtrapolatedHigh(i, 0.0)) / (r.getVHigh(i) - getVHigh(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = this; - pq.push(c); - } - } - } - - // add up the total area of the intersecting pieces. - double area = 0.0; -#ifndef NDEBUG - double _t = -std::numeric_limits::max(); -#endif - - while (! pq.empty()) - { - c = pq.top(); pq.pop(); -#ifndef NDEBUG - assert(_t <= c.m_t); - _t = c.m_t; -#endif - - // needed in case two consecutive points have the same intersection time. - if (c.m_t > tmin) area += x.getAreaInTime(libsupermesh::Tools::Interval(tmin, c.m_t)); - - if (c.m_boundary == 0) - { - x.m_pLow[c.m_dimension] = c.m_to->m_pLow[c.m_dimension]; - x.m_pVLow[c.m_dimension] = c.m_to->m_pVLow[c.m_dimension]; - } - else - { - x.m_pHigh[c.m_dimension] = c.m_to->m_pHigh[c.m_dimension]; - x.m_pVHigh[c.m_dimension] = c.m_to->m_pVHigh[c.m_dimension]; - } - - tmin = c.m_t; - } - - // ... and the last piece - if (tmax > tmin) area += x.getAreaInTime(libsupermesh::Tools::Interval(tmin, tmax)); - - return area; -} - -// -// IObject interface -// -MovingRegion* MovingRegion::clone() -{ - return new MovingRegion(*this); -} - -// -// ISerializable interface -// -uint32_t MovingRegion::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + 4 * m_dimension * sizeof(double)); -} - -void MovingRegion::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pHigh, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pVLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pVHigh, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void MovingRegion::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, m_pLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pHigh, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pVLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pVHigh, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IEvolvingShape interface -// -void MovingRegion::getVMBR(Region& out) const -{ - out.makeDimension(m_dimension); - memcpy(out.m_pLow, m_pVLow, m_dimension * sizeof(double)); - memcpy(out.m_pHigh, m_pVHigh, m_dimension * sizeof(double)); -} - -void MovingRegion::getMBRAtTime(double t, Region& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - out.m_pLow[cDim] = getLow(cDim, t); - out.m_pHigh[cDim] = getHigh(cDim, t); - } -} - -// -// ITimeShape interface -// -double MovingRegion::getAreaInTime() const -{ - return getAreaInTime(*this); -} - -// this computes the area/volume/etc. swept by the Region in time. -double MovingRegion::getAreaInTime(const IInterval& ivI) const -{ - double tmin = std::max(ivI.getLowerBound(), m_startTime); - double tmax = std::min(ivI.getUpperBound(), m_endTime); - - assert(tmin > -std::numeric_limits::max()); - assert(tmax < std::numeric_limits::max()); - assert(tmin <= tmax); - - if (tmin >= tmax - std::numeric_limits::epsilon() && - tmin <= tmax + std::numeric_limits::epsilon()) - return 0.0; - - double dx1, dx2, dx3; - double dv1, dv2, dv3; - double H = tmax - tmin; - - if (m_dimension == 3) - { - dx3 = getExtrapolatedHigh(2, tmin) - getExtrapolatedLow(2, tmin); - dv3 = getVHigh(2) - getVLow(2); - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return - H * dx1 * dx2 * dx3 + H * H * (dx1 * dx2 * dv3 + (dx1 * dv2 + dv1 * dx2) * dx3) / 2.0 + - H * H * H * ((dx1 * dv2 + dv1 * dx2) * dv3 + dv1 * dv2 * dx3) / 3.0 + H * H * H * H * dv1 * dv2 * dv3 / 4.0; - } - else if (m_dimension == 2) - { - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return H * dx1 * dx2 + H * H * (dx1 * dv2 + dv1 * dx2) / 2.0 + H * H * H * dv1 * dv2 / 3.0; - } - else if (m_dimension == 1) - { - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return H * dx1 + H * H * dv1 / 2.0; - } - else - { - throw libsupermesh::Tools::NotSupportedException("getAreaInTime: unsupported dimensionality."); - } -} - -double MovingRegion::getIntersectingAreaInTime(const ITimeShape& r) const -{ - return getIntersectingAreaInTime(r, r); -} - -double MovingRegion::getIntersectingAreaInTime(const IInterval&, const ITimeShape& in) const -{ - const MovingRegion* pr = dynamic_cast(&in); - if (pr != 0) return getIntersectingAreaInTime(*pr); - - throw libsupermesh::Tools::IllegalStateException("getIntersectingAreaInTime: Not implemented yet!"); -} - -void MovingRegion::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pLow[cIndex] = std::numeric_limits::max(); - m_pHigh[cIndex] = -std::numeric_limits::max(); - m_pVLow[cIndex] = std::numeric_limits::max(); - m_pVHigh[cIndex] = -std::numeric_limits::max(); - } - - m_startTime = -std::numeric_limits::max(); - m_endTime = std::numeric_limits::max(); -} - -void MovingRegion::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - m_dimension = dimension; - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const MovingRegion& r) -{ - uint32_t i; - - os << "Low: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pLow[i] << " "; - } - - os << ", High: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pHigh[i] << " "; - } - - os << "VLow: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pVLow[i] << " "; - } - - os << ", VHigh: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pVHigh[i] << " "; - } - - os << ", Start: " << r.m_startTime << ", End: " << r.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/Point.cc b/spatialindex-1.8.5/src/spatialindex/Point.cc deleted file mode 100644 index 3f077b2..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Point.cc +++ /dev/null @@ -1,273 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -Point::Point() - : m_dimension(0), m_pCoords(0) -{ -} - -Point::Point(const double* pCoords, uint32_t dimension) - : m_dimension(dimension) -{ - // no need to initialize m_pCoords to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pCoords = new double[m_dimension]; - memcpy(m_pCoords, pCoords, m_dimension * sizeof(double)); -} - -Point::Point(const Point& p) - : m_dimension(p.m_dimension) -{ - // no need to initialize m_pCoords to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pCoords = new double[m_dimension]; - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); -} - -Point::~Point() -{ - delete[] m_pCoords; -} - -Point& Point::operator=(const Point& p) -{ - if (this != &p) - { - makeDimension(p.m_dimension); - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - } - - return *this; -} - -bool Point::operator==(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Point::operator==: Points have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pCoords[i] < p.m_pCoords[i] - std::numeric_limits::epsilon() || - m_pCoords[i] > p.m_pCoords[i] + std::numeric_limits::epsilon()) return false; - } - - return true; -} - -// -// IObject interface -// -Point* Point::clone() -{ - return new Point(*this); -} - -// -// ISerializable interface -// -uint32_t Point::getByteArraySize() -{ - return (sizeof(uint32_t) + m_dimension * sizeof(double)); -} - -void Point::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - makeDimension(dimension); - memcpy(m_pCoords, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void Point::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, m_pCoords, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IShape interface -// -bool Point::intersectsShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->containsPoint(*this); - } - - throw libsupermesh::Tools::IllegalStateException( - "Point::intersectsShape: Not implemented yet!" - ); -} - -bool Point::containsShape(const IShape&) const -{ - return false; -} - -bool Point::touchesShape(const IShape& s) const -{ - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) - { - if (*this == *ppt) return true; - return false; - } - - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->touchesPoint(*this); - } - - throw libsupermesh::Tools::IllegalStateException( - "Point::touchesShape: Not implemented yet!" - ); -} - -void Point::getCenter(Point& out) const -{ - out = *this; -} - -uint32_t Point::getDimension() const -{ - return m_dimension; -} - -void Point::getMBR(Region& out) const -{ - out = Region(m_pCoords, m_pCoords, m_dimension); -} - -double Point::getArea() const -{ - return 0.0; -} - -double Point::getMinimumDistance(const IShape& s) const -{ - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) - { - return getMinimumDistance(*ppt); - } - - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->getMinimumDistance(*this); - } - - throw libsupermesh::Tools::IllegalStateException( - "Point::getMinimumDistance: Not implemented yet!" - ); -} - -double Point::getMinimumDistance(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Point::getMinimumDistance: Shapes have different number of dimensions." - ); - - double ret = 0.0; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - ret += std::pow(m_pCoords[cDim] - p.m_pCoords[cDim], 2.0); - } - - return std::sqrt(ret); -} - -double Point::getCoordinate(uint32_t index) const -{ - if (index >= m_dimension) - throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pCoords[index]; -} - -void Point::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pCoords[cIndex] = std::numeric_limits::max(); - } -} - -void Point::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pCoords; - - // remember that this is not a constructor. The object will be destructed normally if - // something goes wrong (bad_alloc), so we must take care not to leave the object at an intermediate state. - m_pCoords = 0; - - m_dimension = dimension; - m_pCoords = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const Point& pt) -{ - for (uint32_t cDim = 0; cDim < pt.m_dimension; ++cDim) - { - os << pt.m_pCoords[cDim] << " "; - } - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/Region.cc b/spatialindex-1.8.5/src/spatialindex/Region.cc deleted file mode 100644 index 50bb32a..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Region.cc +++ /dev/null @@ -1,603 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include -#include - -using namespace libsupermesh::SpatialIndex; - -Region::Region() - : m_dimension(0), m_pLow(0), m_pHigh(0) -{ -} - -Region::Region(const double* pLow, const double* pHigh, uint32_t dimension) -{ - initialize(pLow, pHigh, dimension); -} - -Region::Region(const Point& low, const Point& high) -{ - if (low.m_dimension != high.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::Region: arguments have different number of dimensions." - ); - - initialize(low.m_pCoords, high.m_pCoords, low.m_dimension); -} - -Region::Region(const Region& r) -{ - initialize(r.m_pLow, r.m_pHigh, r.m_dimension); -} - -void Region::initialize(const double* pLow, const double* pHigh, uint32_t dimension) -{ - m_pLow = 0; - m_dimension = dimension; - -#ifndef NDEBUG - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if ((pLow[cDim] > pHigh[cDim])) - { - // check for infinitive region - if (!(pLow[cDim] == std::numeric_limits::max() || - pHigh[cDim] == -std::numeric_limits::max() )) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::initialize: Low point has larger coordinates than High point." - " Neither point is infinity." - ); - } - } -#endif - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - throw; - } - - memcpy(m_pLow, pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, pHigh, m_dimension * sizeof(double)); -} - -Region::~Region() -{ - delete[] m_pLow; - delete[] m_pHigh; -} - -Region& Region::operator=(const Region& r) -{ - if(this != &r) - { - makeDimension(r.m_dimension); - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - } - - return *this; -} - -bool Region::operator==(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::operator==: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pLow[i] < r.m_pLow[i] - std::numeric_limits::epsilon() || - m_pLow[i] > r.m_pLow[i] + std::numeric_limits::epsilon() || - m_pHigh[i] < r.m_pHigh[i] - std::numeric_limits::epsilon() || - m_pHigh[i] > r.m_pHigh[i] + std::numeric_limits::epsilon()) - return false; - } - return true; -} - -// -// IObject interface -// -Region* Region::clone() -{ - return new Region(*this); -} - -// -// ISerializable interface -// -uint32_t Region::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * m_dimension * sizeof(double)); -} - -void Region::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - makeDimension(dimension); - memcpy(m_pLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pHigh, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void Region::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, m_pLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pHigh, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IShape interface -// -bool Region::intersectsShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return intersectsRegion(*pr); - - const LineSegment* pls = dynamic_cast(&s); - if (pls != 0) return intersectsLineSegment(*pls); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return containsPoint(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::intersectsShape: Not implemented yet!" - ); -} - -bool Region::containsShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return containsRegion(*pr); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return containsPoint(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::containsShape: Not implemented yet!" - ); -} - -bool Region::touchesShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return touchesRegion(*pr); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return touchesPoint(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::touchesShape: Not implemented yet!" - ); -} - -void Region::getCenter(Point& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t i = 0; i < m_dimension; ++i) - { - out.m_pCoords[i] = (m_pLow[i] + m_pHigh[i]) / 2.0; - } -} - -uint32_t Region::getDimension() const -{ - return m_dimension; -} - -void Region::getMBR(Region& out) const -{ - out = *this; -} - -double Region::getArea() const -{ - double area = 1.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - area *= m_pHigh[i] - m_pLow[i]; - } - - return area; -} - -double Region::getMinimumDistance(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return getMinimumDistance(*pr); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return getMinimumDistance(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::getMinimumDistance: Not implemented yet!" - ); -} - -bool Region::intersectsRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::intersectsRegion: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (m_pLow[i] > r.m_pHigh[i] || m_pHigh[i] < r.m_pLow[i]) return false; - } - return true; -} - -bool Region::containsRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::containsRegion: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (m_pLow[i] > r.m_pLow[i] || m_pHigh[i] < r.m_pHigh[i]) return false; - } - return true; -} - -bool Region::touchesRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::touchesRegion: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - (m_pLow[i] >= r.m_pLow[i] + std::numeric_limits::epsilon() && - m_pLow[i] <= r.m_pLow[i] - std::numeric_limits::epsilon()) || - (m_pHigh[i] >= r.m_pHigh[i] + std::numeric_limits::epsilon() && - m_pHigh[i] <= r.m_pHigh[i] - std::numeric_limits::epsilon())) - return false; - } - return true; -} - - -double Region::getMinimumDistance(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getMinimumDistance: Regions have different number of dimensions." - ); - - double ret = 0.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - double x = 0.0; - - if (r.m_pHigh[i] < m_pLow[i]) - { - x = std::abs(r.m_pHigh[i] - m_pLow[i]); - } - else if (m_pHigh[i] < r.m_pLow[i]) - { - x = std::abs(r.m_pLow[i] - m_pHigh[i]); - } - - ret += x * x; - } - - return std::sqrt(ret); -} - -bool Region::intersectsLineSegment(const LineSegment& in) const -{ - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "Region::intersectsLineSegment: only supported for 2 dimensions" - ); - - if (m_dimension != in.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::intersectsRegion: Region and LineSegment have different number of dimensions." - ); - - // there may be a more efficient method, but this suffices for now - Point ll = Point(m_pLow, 2); - Point ur = Point(m_pHigh, 2); - // fabricate ul and lr coordinates and points - double c_ul[2] = {m_pLow[0], m_pHigh[1]}; - double c_lr[2] = {m_pHigh[0], m_pLow[1]}; - Point ul = Point(&c_ul[0], 2); - Point lr = Point(&c_lr[0], 2); - - // Points/LineSegment for the segment - Point p1 = Point(in.m_pStartPoint, 2); - Point p2 = Point(in.m_pEndPoint, 2); - - - //Check whether either or both the endpoints are within the region OR - //whether any of the bounding segments of the Region intersect the segment - return (containsPoint(p1) || containsPoint(p2) || - in.intersectsShape(LineSegment(ll, ul)) || in.intersectsShape(LineSegment(ul, ur)) || - in.intersectsShape(LineSegment(ur, lr)) || in.intersectsShape(LineSegment(lr, ll))); - -} - -bool Region::containsPoint(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::containsPoint: Point has different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (m_pLow[i] > p.getCoordinate(i) || m_pHigh[i] < p.getCoordinate(i)) return false; - } - return true; -} - -bool Region::touchesPoint(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::touchesPoint: Point has different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - (m_pLow[i] >= p.getCoordinate(i) - std::numeric_limits::epsilon() && - m_pLow[i] <= p.getCoordinate(i) + std::numeric_limits::epsilon()) || - (m_pHigh[i] >= p.getCoordinate(i) - std::numeric_limits::epsilon() && - m_pHigh[i] <= p.getCoordinate(i) + std::numeric_limits::epsilon())) - return true; - } - return false; -} - -double Region::getMinimumDistance(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getMinimumDistance: Point has different number of dimensions." - ); - - double ret = 0.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (p.getCoordinate(i) < m_pLow[i]) - { - ret += std::pow(m_pLow[i] - p.getCoordinate(i), 2.0); - } - else if (p.getCoordinate(i) > m_pHigh[i]) - { - ret += std::pow(p.getCoordinate(i) - m_pHigh[i], 2.0); - } - } - - return std::sqrt(ret); -} - -Region Region::getIntersectingRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getIntersectingRegion: Regions have different number of dimensions." - ); - - Region ret; - ret.makeInfinite(m_dimension); - - // check for intersection. - // marioh: avoid function call since this is called billions of times. - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (m_pLow[cDim] > r.m_pHigh[cDim] || m_pHigh[cDim] < r.m_pLow[cDim]) return ret; - } - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - ret.m_pLow[cDim] = std::max(m_pLow[cDim], r.m_pLow[cDim]); - ret.m_pHigh[cDim] = std::min(m_pHigh[cDim], r.m_pHigh[cDim]); - } - - return ret; -} - -double Region::getIntersectingArea(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getIntersectingArea: Regions have different number of dimensions." - ); - - double ret = 1.0; - double f1, f2; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (m_pLow[cDim] > r.m_pHigh[cDim] || m_pHigh[cDim] < r.m_pLow[cDim]) return 0.0; - - f1 = std::max(m_pLow[cDim], r.m_pLow[cDim]); - f2 = std::min(m_pHigh[cDim], r.m_pHigh[cDim]); - ret *= f2 - f1; - } - - return ret; -} - -/* - * Returns the margin of a region. It is calcuated as the sum of 2^(d-1) * width, in each dimension. - * It is actually the sum of all edges, no matter what the dimensionality is. -*/ -double Region::getMargin() const -{ - double mul = std::pow(2.0, static_cast(m_dimension) - 1.0); - double margin = 0.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - margin += (m_pHigh[i] - m_pLow[i]) * mul; - } - - return margin; -} - -void Region::combineRegion(const Region& r) -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::combineRegion: Region has different number of dimensions." - ); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(m_pLow[cDim], r.m_pLow[cDim]); - m_pHigh[cDim] = std::max(m_pHigh[cDim], r.m_pHigh[cDim]); - } -} - -void Region::combinePoint(const Point& p) -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::combinePoint: Point has different number of dimensions." - ); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(m_pLow[cDim], p.m_pCoords[cDim]); - m_pHigh[cDim] = std::max(m_pHigh[cDim], p.m_pCoords[cDim]); - } -} - -void Region::getCombinedRegion(Region& out, const Region& in) const -{ - if (m_dimension != in.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getCombinedRegion: Regions have different number of dimensions." - ); - - out = *this; - out.combineRegion(in); -} - -double Region::getLow(uint32_t index) const -{ - if (index >= m_dimension) - throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pLow[index]; -} - -double Region::getHigh(uint32_t index) const -{ - if (index >= m_dimension) - throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pHigh[index]; -} - -void Region::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pLow[cIndex] = std::numeric_limits::max(); - m_pHigh[cIndex] = -std::numeric_limits::max(); - } -} - -void Region::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pLow; - delete[] m_pHigh; - - // remember that this is not a constructor. The object will be destructed normally if - // something goes wrong (bad_alloc), so we must take care not to leave the object at an intermediate state. - m_pLow = 0; m_pHigh = 0; - - m_dimension = dimension; - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const Region& r) -{ - uint32_t i; - - os << "Low: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pLow[i] << " "; - } - - os << ", High: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pHigh[i] << " "; - } - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc b/spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc deleted file mode 100644 index 816064c..0000000 --- a/spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "../rtree/RTree.h" -#include "../mvrtree/MVRTree.h" -#include "../tprtree/TPRTree.h" - -libsupermesh::SpatialIndex::InvalidPageException::InvalidPageException(id_type id) -{ - std::ostringstream s; - s << "Unknown page id " << id; - m_error = s.str(); -} - -std::string libsupermesh::SpatialIndex::InvalidPageException::what() -{ - return "InvalidPageException: " + m_error; -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const ISpatialIndex& i) -{ - const libsupermesh::SpatialIndex::RTree::RTree* pRTree = dynamic_cast(&i); - if (pRTree != 0) - { - os << *pRTree; - return os; - } - - const libsupermesh::SpatialIndex::MVRTree::MVRTree* pMVRTree = dynamic_cast(&i); - if (pMVRTree != 0) - { - os << *pMVRTree; - return os; - } - - const libsupermesh::SpatialIndex::TPRTree::TPRTree* pTPRTree = dynamic_cast(&i); - if (pTPRTree != 0) - { - os << *pTPRTree; - return os; - } - - std::cerr << "ISpatialIndex operator<<: Not implemented yet for this index type." << std::endl; - return os; -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const IStatistics& s) -{ - const libsupermesh::SpatialIndex::RTree::Statistics* pRTreeStats = dynamic_cast(&s); - if (pRTreeStats != 0) - { - os << *pRTreeStats; - return os; - } - - const libsupermesh::SpatialIndex::MVRTree::Statistics* pMVRTreeStats = dynamic_cast(&s); - if (pMVRTreeStats != 0) - { - os << * pMVRTreeStats; - return os; - } - - const libsupermesh::SpatialIndex::TPRTree::Statistics* pTPRTreeStats = dynamic_cast(&s); - if (pTPRTreeStats != 0) - { - os << * pTPRTreeStats; - return os; - } - - std::cerr << "IStatistics operator<<: Not implemented yet for this index type." << std::endl; - return os; -} - diff --git a/spatialindex-1.8.5/src/spatialindex/TimePoint.cc b/spatialindex-1.8.5/src/spatialindex/TimePoint.cc deleted file mode 100644 index 78b85ec..0000000 --- a/spatialindex-1.8.5/src/spatialindex/TimePoint.cc +++ /dev/null @@ -1,308 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -TimePoint::TimePoint() - : Point(), m_startTime(-std::numeric_limits::max()), m_endTime(std::numeric_limits::max()) -{ -} - -TimePoint::TimePoint(const double* pCoords, const IInterval& ti, uint32_t dimension) - : Point(pCoords, dimension), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimePoint::TimePoint(const double* pCoords, double tStart, double tEnd, uint32_t dimension) - : Point(pCoords, dimension), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimePoint::TimePoint(const Point& p, const IInterval& ti) - : Point(p), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimePoint::TimePoint(const Point& p, double tStart, double tEnd) - : Point(p), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimePoint::TimePoint(const TimePoint& p) - : m_startTime(p.m_startTime), m_endTime(p.m_endTime) -{ - m_dimension = p.m_dimension; - - m_pCoords = new double[m_dimension]; - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); -} - -TimePoint::~TimePoint() -{ -} - -TimePoint& TimePoint::operator=(const TimePoint& p) -{ - if (this != &p) - { - makeDimension(p.m_dimension); - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - m_startTime = p.m_startTime; - m_endTime = p.m_endTime; - } - - return *this; -} - -bool TimePoint::operator==(const TimePoint& p) const -{ - if ( - m_startTime < p.m_startTime - std::numeric_limits::epsilon() || - m_startTime > p.m_startTime + std::numeric_limits::epsilon() || - m_endTime < p.m_endTime - std::numeric_limits::epsilon() || - m_endTime > p.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if ( - m_pCoords[cDim] < p.m_pCoords[cDim] - std::numeric_limits::epsilon() || - m_pCoords[cDim] > p.m_pCoords[cDim] + std::numeric_limits::epsilon()) - return false; - } - - return true; -} - -// -// IObject interface -// -TimePoint* TimePoint::clone() -{ - return new TimePoint(*this); -} - -// -// ISerializable interface -// -uint32_t TimePoint::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + m_dimension * sizeof(double)); -} - -void TimePoint::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pCoords, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void TimePoint::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, m_pCoords, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// ITimeShape interface -// -bool TimePoint::intersectsShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return pr->containsPointInTime(*this); - - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimePoint::intersectsShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimePoint::containsShapeInTime(const ITimeShape&) const -{ - return false; -} - -bool TimePoint::containsShapeInTime(const IInterval&, const ITimeShape&) const -{ - return false; -} - -bool TimePoint::touchesShapeInTime(const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -bool TimePoint::touchesShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -double TimePoint::getAreaInTime() const -{ - return 0.0; -} - -double TimePoint::getAreaInTime(const IInterval&) const -{ - return 0.0; -} - -double TimePoint::getIntersectingAreaInTime(const ITimeShape&) const -{ - return 0.0; -} - -double TimePoint::getIntersectingAreaInTime(const IInterval&, const ITimeShape&) const -{ - return 0.0; -} - -// -// IInterval interface -// -libsupermesh::Tools::IInterval& TimePoint::operator=(const libsupermesh::Tools::IInterval& i) -{ - if (this != &i) - { - m_startTime = i.getLowerBound(); - m_endTime = i.getUpperBound(); - } - - return *this; -} - -double TimePoint::getLowerBound() const -{ - return m_startTime; -} - -double TimePoint::getUpperBound() const -{ - return m_endTime; -} - -void TimePoint::setBounds(double l, double h) -{ - assert(l <= h); - - m_startTime = l; - m_endTime = h; -} - -bool TimePoint::intersectsInterval(const IInterval& ti) const -{ - return intersectsInterval(ti.getIntervalType(), ti.getLowerBound(), ti.getUpperBound()); -} - -bool TimePoint::intersectsInterval(libsupermesh::Tools::IntervalType, const double start, const double end) const -{ - //if (m_startTime != start && - // (m_startTime >= end || m_endTime <= start)) return false; - if (m_startTime >= end || m_endTime <= start) return false; - - return true; -} - -bool TimePoint::containsInterval(const IInterval& ti) const -{ - if (m_startTime <= ti.getLowerBound() && m_endTime >= ti.getUpperBound()) return true; - return false; -} - -libsupermesh::Tools::IntervalType TimePoint::getIntervalType() const -{ - return libsupermesh::Tools::IT_RIGHTOPEN; -} - -void TimePoint::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pCoords[cIndex] = std::numeric_limits::max(); - } - - m_startTime = std::numeric_limits::max(); - m_endTime = -std::numeric_limits::max(); -} - -void TimePoint::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - m_dimension = dimension; - - delete[] m_pCoords; - m_pCoords = 0; - - m_pCoords = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const TimePoint& pt) -{ - uint32_t i; - - for (i = 0; i < pt.m_dimension; ++i) - { - os << pt.m_pCoords[i] << " "; - } - - os << ", Start: " << pt.m_startTime << ", End: " << pt.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/TimeRegion.cc b/spatialindex-1.8.5/src/spatialindex/TimeRegion.cc deleted file mode 100644 index 0f38e66..0000000 --- a/spatialindex-1.8.5/src/spatialindex/TimeRegion.cc +++ /dev/null @@ -1,430 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include - -using namespace libsupermesh::SpatialIndex; - -TimeRegion::TimeRegion() - : Region(), m_startTime(-std::numeric_limits::max()), m_endTime(std::numeric_limits::max()) -{ -} - -TimeRegion::TimeRegion(const double* pLow, const double* pHigh, const IInterval& ti, uint32_t dimension) - : Region(pLow, pHigh, dimension), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimeRegion::TimeRegion(const double* pLow, const double* pHigh, double tStart, double tEnd, uint32_t dimension) - : Region(pLow, pHigh, dimension), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimeRegion::TimeRegion(const Point& low, const Point& high, const IInterval& ti) - : Region(low, high), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimeRegion::TimeRegion(const Point& low, const Point& high, double tStart, double tEnd) - : Region(low, high), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimeRegion::TimeRegion(const Region& r, const IInterval& ti) - : Region(r), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimeRegion::TimeRegion(const Region& r, double tStart, double tEnd) - : Region(r), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimeRegion::TimeRegion(const TimePoint& low, const TimePoint& high) - : Region((Point&) low, (Point&) high), m_startTime(low.m_startTime), m_endTime(high.m_endTime) -{ -} - -TimeRegion::TimeRegion(const TimeRegion& r) - : m_startTime(r.m_startTime), m_endTime(r.m_endTime) -{ - m_dimension = r.m_dimension; - m_pLow = 0; - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - throw; - } - - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); -} - -TimeRegion::~TimeRegion() -{ -} - -TimeRegion& TimeRegion::operator=(const TimeRegion& r) -{ - if(this != &r) - { - makeDimension(r.m_dimension); - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - - m_startTime = r.m_startTime; - m_endTime = r.m_endTime; - } - - return *this; -} - -bool TimeRegion::operator==(const TimeRegion& r) const -{ - if (m_startTime < r.m_startTime - std::numeric_limits::epsilon() || - m_startTime > r.m_startTime + std::numeric_limits::epsilon() || - m_endTime < r.m_endTime - std::numeric_limits::epsilon() || - m_endTime > r.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pLow[i] < r.m_pLow[i] - std::numeric_limits::epsilon() || - m_pLow[i] > r.m_pLow[i] + std::numeric_limits::epsilon() || - m_pHigh[i] < r.m_pHigh[i] - std::numeric_limits::epsilon() || - m_pHigh[i] > r.m_pHigh[i] + std::numeric_limits::epsilon()) - return false; - } - return true; -} - -bool TimeRegion::intersectsRegionInTime(const TimeRegion& r) const -{ - // they should just intersect in time. - // check if they intersect in time first. - // the first check is needed for the following case: - // m_endTime == m_startTime == r.m_startTime. - // For open ended intervals this should be considered as an intersection - // (takes care of degenarate intervals) - //if (m_startTime != r.m_startTime && - // (m_startTime >= r.m_endTime || m_endTime <= r.m_startTime)) - if (! intersectsInterval(r)) return false; - return Region::intersectsRegion(r); -} - -bool TimeRegion::containsRegionInTime(const TimeRegion& r) const -{ - // it should be contained in time. - if (! containsInterval(r)) return false; - return Region::containsRegion(r); -} - -bool TimeRegion::touchesRegionInTime(const TimeRegion& r) const -{ - // they should just intersect in time. - //if (m_startTime != r.m_startTime && - // (m_startTime >= r.m_endTime || m_endTime <= r.m_startTime)) - if (!intersectsInterval(r)) return false; - return Region::touchesRegion(r); -} - -bool TimeRegion::containsPointInTime(const TimePoint& p) const -{ - // it should be contained in time. - //if (p.m_startTime < m_startTime || p.m_endTime > m_endTime) return false; - if (containsInterval(p)) return false; - return Region::containsPoint(p); -} - -bool TimeRegion::touchesPointInTime(const TimePoint& p) const -{ - // they should just intersect in time. - //if (m_startTime != p.m_startTime && - // (m_startTime >= p.m_endTime || m_endTime <= p.m_startTime)) - if (intersectsInterval(p)) return false; - return Region::touchesPoint(p); -} - -void TimeRegion::combineRegionInTime(const TimeRegion& r) -{ - Region::combineRegion(r); - - m_startTime = std::min(m_startTime, r.m_startTime); - m_endTime = std::max(m_endTime, r.m_endTime); -} - -void TimeRegion::getCombinedRegionInTime(TimeRegion& out, const TimeRegion& in) const -{ - Region::getCombinedRegion(out, in); - - out.m_startTime = std::min(m_startTime, in.m_startTime); - out.m_endTime = std::max(m_endTime, in.m_endTime); -} - -// -// IObject interface -// -TimeRegion* TimeRegion::clone() -{ - return new TimeRegion(*this); -} - -// -// ISerializable interface -// -uint32_t TimeRegion::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + 2 * m_dimension * sizeof(double)); -} - -void TimeRegion::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pHigh, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void TimeRegion::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, m_pLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pHigh, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// ITimeShape interface -// -bool TimeRegion::intersectsShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return intersectsRegionInTime(*pr); - - const TimePoint* ppt = dynamic_cast(&in); - if (ppt != 0) return containsPointInTime(*ppt); - - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::intersectsShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::containsShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return containsRegionInTime(*pr); - - const TimePoint* ppt = dynamic_cast(&in); - if (ppt != 0) return containsPointInTime(*ppt); - - throw libsupermesh::Tools::IllegalStateException("containsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::containsShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("containsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::touchesShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return touchesRegionInTime(*pr); - - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::touchesShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -double TimeRegion::getAreaInTime() const -{ - throw libsupermesh::Tools::IllegalStateException("getAreaInTime: Not implemented yet!"); -} - -double TimeRegion::getAreaInTime(const IInterval&) const -{ - throw libsupermesh::Tools::IllegalStateException("getAreaInTime: Not implemented yet!"); -} - -double TimeRegion::getIntersectingAreaInTime(const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("getIntersectingAreaInTime: Not implemented yet!"); -} - -double TimeRegion::getIntersectingAreaInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("getIntersectingAreaInTime: Not implemented yet!"); -} - -// -// IInterval interface -// -libsupermesh::Tools::IInterval& TimeRegion::operator=(const libsupermesh::Tools::IInterval& i) -{ - if (this != &i) - { - m_startTime = i.getLowerBound(); - m_endTime = i.getUpperBound(); - } - - return *this; -} - -double TimeRegion::getLowerBound() const -{ - return m_startTime; -} - -double TimeRegion::getUpperBound() const -{ - return m_endTime; -} - -void TimeRegion::setBounds(double l, double h) -{ - assert(m_startTime <= m_endTime); - - m_startTime = l; - m_endTime = h; -} - -bool TimeRegion::intersectsInterval(const IInterval& ti) const -{ - return intersectsInterval(ti.getIntervalType(), ti.getLowerBound(), ti.getUpperBound()); -} - -bool TimeRegion::intersectsInterval(libsupermesh::Tools::IntervalType, const double start, const double end) const -{ - //if (m_startTime != start && - // (m_startTime >= end || m_endTime <= start)) return false; - // this will not work for degenarate intervals. - if (m_startTime >= end || m_endTime <= start) return false; - - return true; -} - -bool TimeRegion::containsInterval(const IInterval& ti) const -{ - if (m_startTime <= ti.getLowerBound() && m_endTime >= ti.getUpperBound()) return true; - return false; -} - -libsupermesh::Tools::IntervalType TimeRegion::getIntervalType() const -{ - return libsupermesh::Tools::IT_RIGHTOPEN; -} - -void TimeRegion::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pLow[cIndex] = std::numeric_limits::max(); - m_pHigh[cIndex] = -std::numeric_limits::max(); - } - - m_startTime = std::numeric_limits::max(); - m_endTime = -std::numeric_limits::max(); -} - -void TimeRegion::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - m_dimension = dimension; - - delete[] m_pLow; - delete[] m_pHigh; - m_pLow = 0; m_pHigh = 0; - - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const TimeRegion& r) -{ - uint32_t i; - - os << "Low: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pLow[i] << " "; - } - - os << ", High: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pHigh[i] << " "; - } - - os << ", Start: " << r.m_startTime << ", End: " << r.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/storagemanager/Buffer.cc b/spatialindex-1.8.5/src/storagemanager/Buffer.cc deleted file mode 100644 index 2fadce3..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Buffer.cc +++ /dev/null @@ -1,159 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include "Buffer.h" - -Buffer::Buffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_capacity(10), - m_bWriteThrough(false), - m_pStorageManager(&sm), - m_u64Hits(0) -{ - libsupermesh::Tools::Variant var = ps.getProperty("Capacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("Property Capacity must be libsupermesh::Tools::VT_ULONG"); - m_capacity = var.m_val.ulVal; - } - - var = ps.getProperty("WriteThrough"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("Property WriteThrough must be libsupermesh::Tools::VT_BOOL"); - m_bWriteThrough = var.m_val.blVal; - } -} - -Buffer::~Buffer() -{ - flush(); -} - -void Buffer::flush() -{ - for (std::map::iterator it = m_buffer.begin(); it != m_buffer.end(); ++it) - { - if ((*it).second->m_bDirty) - { - id_type page = (*it).first; - m_pStorageManager->storeByteArray(page, (*it).second->m_length, (*it).second->m_pData); - } - delete (*it).second; - } -} - -void Buffer::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - std::map::iterator it = m_buffer.find(page); - - if (it != m_buffer.end()) - { - ++m_u64Hits; - len = (*it).second->m_length; - *data = new byte[len]; - memcpy(*data, (*it).second->m_pData, len); - } - else - { - m_pStorageManager->loadByteArray(page, len, data); - addEntry(page, new Entry(len, static_cast(*data))); - } -} - -void Buffer::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - if (page == NewPage) - { - m_pStorageManager->storeByteArray(page, len, data); - assert(m_buffer.find(page) == m_buffer.end()); - addEntry(page, new Entry(len, data)); - } - else - { - if (m_bWriteThrough) - { - m_pStorageManager->storeByteArray(page, len, data); - } - - Entry* e = new Entry(len, data); - if (m_bWriteThrough == false) e->m_bDirty = true; - - std::map::iterator it = m_buffer.find(page); - if (it != m_buffer.end()) - { - delete (*it).second; - (*it).second = e; - if (m_bWriteThrough == false) ++m_u64Hits; - } - else - { - addEntry(page, e); - } - } -} - -void Buffer::deleteByteArray(const id_type page) -{ - std::map::iterator it = m_buffer.find(page); - if (it != m_buffer.end()) - { - delete (*it).second; - m_buffer.erase(it); - } - - m_pStorageManager->deleteByteArray(page); -} - -void Buffer::clear() -{ - for (std::map::iterator it = m_buffer.begin(); it != m_buffer.end(); ++it) - { - if ((*it).second->m_bDirty) - { - id_type page = (*it).first; - m_pStorageManager->storeByteArray(page, ((*it).second)->m_length, static_cast(((*it).second)->m_pData)); - } - - delete (*it).second; - } - - m_buffer.clear(); - m_u64Hits = 0; -} - -uint64_t Buffer::getHits() -{ - return m_u64Hits; -} diff --git a/spatialindex-1.8.5/src/storagemanager/Buffer.h b/spatialindex-1.8.5/src/storagemanager/Buffer.h deleted file mode 100644 index 6db5e93..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Buffer.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class Buffer : public IBuffer - { - public: - Buffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps); - // String Value Description - // ---------------------------------------------- - // Capacity VT_ULONG Buffer maximum capacity. - // WriteThrough VT_BOOL Enable or disable write through policy. - - virtual ~Buffer(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - virtual void clear(); - virtual uint64_t getHits(); - - protected: - class Entry - { - public: - Entry(uint32_t l, const byte* const d) : m_pData(0), m_length(l), m_bDirty(false) - { - m_pData = new byte[m_length]; - memcpy(m_pData, d, m_length); - } - - ~Entry() { delete[] m_pData; } - - byte* m_pData; - uint32_t m_length; - bool m_bDirty; - }; // Entry - - virtual void addEntry(id_type page, Entry* pEntry) = 0; - virtual void removeEntry() = 0; - - uint32_t m_capacity; - bool m_bWriteThrough; - IStorageManager* m_pStorageManager; - std::map m_buffer; - uint64_t m_u64Hits; - }; // Buffer - } -} } diff --git a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc b/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc deleted file mode 100644 index 4dd2ff8..0000000 --- a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc +++ /dev/null @@ -1,517 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include - -// For checking if a file exists - hobu -#include - -#include -#include "DiskStorageManager.h" -#include - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -bool CheckFilesExists(libsupermesh::Tools::PropertySet& ps) -{ - bool bExists = false; - - std::string filename(""); - std::string idx("idx"); - std::string dat("dat"); - - libsupermesh::Tools::Variant idx_name; - libsupermesh::Tools::Variant dat_name; - libsupermesh::Tools::Variant fn; - - idx_name = ps.getProperty("FileNameIdx"); - dat_name = ps.getProperty("FileNameDat"); - fn = ps.getProperty("FileName"); - - if (idx_name.m_varType != libsupermesh::Tools::VT_EMPTY) dat = std::string(idx_name.m_val.pcVal); - if (dat_name.m_varType != libsupermesh::Tools::VT_EMPTY) idx = std::string(dat_name.m_val.pcVal); - if (fn.m_varType != libsupermesh::Tools::VT_EMPTY) filename = std::string(fn.m_val.pcVal); - - struct stat stats; - - std::ostringstream os; - int ret; - os << filename <<"."<(baseName.c_str()); - ps.setProperty("FileName", var); - // .idx and .dat extensions will be added. - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = pageSize; - ps.setProperty("PageSize", var); - // specify the page size. Since the index may also contain user defined data - // there is no way to know how big a single node may become. The storage manager - // will use multiple pages per node if needed. Off course this will slow down performance. - - return returnDiskStorageManager(ps); -} - -libsupermesh::SpatialIndex::IStorageManager* libsupermesh::SpatialIndex::StorageManager::loadDiskStorageManager(std::string& baseName) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast(baseName.c_str()); - ps.setProperty("FileName", var); - // .idx and .dat extensions will be added. - - return returnDiskStorageManager(ps); -} - -DiskStorageManager::DiskStorageManager(libsupermesh::Tools::PropertySet& ps) : m_pageSize(0), m_nextPage(-1), m_buffer(0) -{ - libsupermesh::Tools::Variant var; - - // Open/Create flag. - bool bOverwrite = false; - bool bFileExists = false; - std::streamoff length = 0; - - var = ps.getProperty("Overwrite"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property Overwrite must be libsupermesh::Tools::VT_BOOL"); - bOverwrite = var.m_val.blVal; - } - - // storage filename. - var = ps.getProperty("FileName"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (!(var.m_varType == libsupermesh::Tools::VT_PCHAR || - var.m_varType == libsupermesh::Tools::VT_PWCHAR)) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property FileName must be libsupermesh::Tools::VT_PCHAR or libsupermesh::Tools::VT_PWCHAR"); - - std::string idx("idx"); - std::string dat("dat"); - - libsupermesh::Tools::Variant idx_name = ps.getProperty("FileNameIdx"); - if (idx_name.m_varType != libsupermesh::Tools::VT_EMPTY) idx = std::string(idx_name.m_val.pcVal); - - libsupermesh::Tools::Variant dat_name = ps.getProperty("FileNameDat"); - if (dat_name.m_varType != libsupermesh::Tools::VT_EMPTY) dat = std::string(dat_name.m_val.pcVal); - - std::string sIndexFile = std::string(var.m_val.pcVal) + "." + idx; - std::string sDataFile = std::string(var.m_val.pcVal) + "." + dat; - - // check if file exists. - bFileExists = CheckFilesExists(ps); - - // check if file can be read/written. - if (bFileExists == true && bOverwrite == false) - { - std::ios_base::openmode mode = std::ios::in | std::ios::out | std::ios::binary; - m_indexFile.open(sIndexFile.c_str(), mode); - m_dataFile.open(sDataFile.c_str(), mode); - - if (m_indexFile.fail() || m_dataFile.fail()) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Index/Data file cannot be read/writen."); - } - else - { - std::ios_base::openmode mode = std::ios::in | std::ios::out | std::ios::binary | std::ios::trunc; - m_indexFile.open(sIndexFile.c_str(), mode); - m_dataFile.open(sDataFile.c_str(), mode); - - if (m_indexFile.fail() || m_dataFile.fail()) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Index/Data file cannot be created."); - - } - } - else - { - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property FileName was not specified."); - } - - // get current length of file - m_indexFile.seekg (0, m_indexFile.end); - length = m_indexFile.tellg(); - m_indexFile.seekg (0, m_indexFile.beg); - - // find page size. - if ((bOverwrite == true) || (length == 0) || (bFileExists == false)) - { - var = ps.getProperty("PageSize"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property PageSize must be libsupermesh::Tools::VT_ULONG"); - m_pageSize = var.m_val.ulVal; - m_nextPage = 0; - } - else - { - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: A new storage manager is created and property PageSize was not specified."); - } - } - else - { - m_indexFile.read(reinterpret_cast(&m_pageSize), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Failed reading pageSize."); - - m_indexFile.read(reinterpret_cast(&m_nextPage), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Failed reading nextPage."); - } - - // create buffer. - m_buffer = new byte[m_pageSize]; - memset(m_buffer, 0, m_pageSize); - - if ((bOverwrite == false) && (length > 0)) - { - uint32_t count; - id_type page, id; - - // load empty pages in memory. - m_indexFile.read(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cCount = 0; cCount < count; ++cCount) - { - m_indexFile.read(reinterpret_cast(&page), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - m_emptyPages.insert(page); - } - - // load index table in memory. - m_indexFile.read(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cCount = 0; cCount < count; ++cCount) - { - Entry* e = new Entry(); - - m_indexFile.read(reinterpret_cast(&id), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.read(reinterpret_cast(&(e->m_length)), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - uint32_t count2; - m_indexFile.read(reinterpret_cast(&count2), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cCount2 = 0; cCount2 < count2; ++cCount2) - { - m_indexFile.read(reinterpret_cast(&page), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - e->m_pages.push_back(page); - } - m_pageIndex.insert(std::pair(id, e)); - } - } -} - -DiskStorageManager::~DiskStorageManager() -{ - flush(); - m_indexFile.close(); - m_dataFile.close(); - if (m_buffer != 0) delete[] m_buffer; - - std::map::iterator it; - for (it = m_pageIndex.begin(); it != m_pageIndex.end(); ++it) delete (*it).second; -} - -void DiskStorageManager::flush() -{ - m_indexFile.seekp(0, std::ios_base::beg); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.write(reinterpret_cast(&m_pageSize), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.write(reinterpret_cast(&m_nextPage), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - uint32_t count = static_cast(m_emptyPages.size()); - m_indexFile.write(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (std::set::const_iterator it = m_emptyPages.begin(); it != m_emptyPages.end(); ++it) - { - m_indexFile.write(reinterpret_cast(&(*it)), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - } - - count = static_cast(m_pageIndex.size()); - m_indexFile.write(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (std::map::iterator it = m_pageIndex.begin(); it != m_pageIndex.end(); ++it) - { - m_indexFile.write(reinterpret_cast(&((*it).first)), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.write(reinterpret_cast(&((*it).second->m_length)), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - count = static_cast((*it).second->m_pages.size()); - m_indexFile.write(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cIndex = 0; cIndex < count; ++cIndex) - { - m_indexFile.write(reinterpret_cast(&((*it).second->m_pages[cIndex])), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - } - } - - m_indexFile.flush(); - m_dataFile.flush(); -} - -void DiskStorageManager::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - std::map::iterator it = m_pageIndex.find(page); - - if (it == m_pageIndex.end()) - throw InvalidPageException(page); - - std::vector& pages = (*it).second->m_pages; - uint32_t cNext = 0; - uint32_t cTotal = static_cast(pages.size()); - - len = (*it).second->m_length; - *data = new byte[len]; - - byte* ptr = *data; - uint32_t cLen; - uint32_t cRem = len; - - do - { - m_dataFile.seekg(pages[cNext] * m_pageSize, std::ios_base::beg); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - m_dataFile.read(reinterpret_cast(m_buffer), m_pageSize); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - cLen = (cRem > m_pageSize) ? m_pageSize : cRem; - memcpy(ptr, m_buffer, cLen); - - ptr += cLen; - cRem -= cLen; - ++cNext; - } - while (cNext < cTotal); -} - -void DiskStorageManager::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - if (page == NewPage) - { - Entry* e = new Entry(); - e->m_length = len; - - const byte* ptr = data; - id_type cPage; - uint32_t cRem = len; - uint32_t cLen; - - while (cRem > 0) - { - if (! m_emptyPages.empty()) - { - cPage = *m_emptyPages.begin(); - m_emptyPages.erase(m_emptyPages.begin()); - } - else - { - cPage = m_nextPage; - ++m_nextPage; - } - - cLen = (cRem > m_pageSize) ? m_pageSize : cRem; - memcpy(m_buffer, ptr, cLen); - - m_dataFile.seekp(cPage * m_pageSize, std::ios_base::beg); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - m_dataFile.write(reinterpret_cast(m_buffer), m_pageSize); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - ptr += cLen; - cRem -= cLen; - e->m_pages.push_back(cPage); - } - - page = e->m_pages[0]; - m_pageIndex.insert(std::pair(page, e)); - } - else - { - // find the entry. - std::map::iterator it = m_pageIndex.find(page); - - // check if it exists. - if (it == m_pageIndex.end()) - throw InvalidPageException(page); - - Entry* oldEntry = (*it).second; - - m_pageIndex.erase(it); - - Entry* e = new Entry(); - e->m_length = len; - - const byte* ptr = data; - id_type cPage; - uint32_t cRem = len; - uint32_t cLen, cNext = 0; - - while (cRem > 0) - { - if (cNext < oldEntry->m_pages.size()) - { - cPage = oldEntry->m_pages[cNext]; - ++cNext; - } - else if (! m_emptyPages.empty()) - { - cPage = *m_emptyPages.begin(); - m_emptyPages.erase(m_emptyPages.begin()); - } - else - { - cPage = m_nextPage; - ++m_nextPage; - } - - cLen = (cRem > m_pageSize) ? m_pageSize : cRem; - memcpy(m_buffer, ptr, cLen); - - m_dataFile.seekp(cPage * m_pageSize, std::ios_base::beg); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - m_dataFile.write(reinterpret_cast(m_buffer), m_pageSize); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - ptr += cLen; - cRem -= cLen; - e->m_pages.push_back(cPage); - } - - while (cNext < oldEntry->m_pages.size()) - { - m_emptyPages.insert(oldEntry->m_pages[cNext]); - ++cNext; - } - - m_pageIndex.insert(std::pair(page, e)); - delete oldEntry; - } -} - -void DiskStorageManager::deleteByteArray(const id_type page) -{ - std::map::iterator it = m_pageIndex.find(page); - - if (it == m_pageIndex.end()) - throw InvalidPageException(page); - - for (uint32_t cIndex = 0; cIndex < (*it).second->m_pages.size(); ++cIndex) - { - m_emptyPages.insert((*it).second->m_pages[cIndex]); - } - - delete (*it).second; - m_pageIndex.erase(it); -} diff --git a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h b/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h deleted file mode 100644 index 8cade5a..0000000 --- a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class DiskStorageManager : public libsupermesh::SpatialIndex::IStorageManager - { - public: - DiskStorageManager(libsupermesh::Tools::PropertySet&); - virtual ~DiskStorageManager(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - private: - class Entry - { - public: - uint32_t m_length; - std::vector m_pages; - }; - - protected: - std::fstream m_dataFile; - std::fstream m_indexFile; - uint32_t m_pageSize; - id_type m_nextPage; - std::set m_emptyPages; - std::map m_pageIndex; - - byte* m_buffer; - }; // DiskStorageManager - } -} } diff --git a/spatialindex-1.8.5/src/storagemanager/Makefile.am b/spatialindex-1.8.5/src/storagemanager/Makefile.am deleted file mode 100644 index 430ab3d..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libstoragemanager.la -INCLUDES = -I../../include -libstoragemanager_la_SOURCES = Buffer.h Buffer.cc DiskStorageManager.cc MemoryStorageManager.cc RandomEvictionsBuffer.cc DiskStorageManager.h MemoryStorageManager.h RandomEvictionsBuffer.h diff --git a/spatialindex-1.8.5/src/storagemanager/Makefile.in b/spatialindex-1.8.5/src/storagemanager/Makefile.in deleted file mode 100644 index 56b87c9..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Makefile.in +++ /dev/null @@ -1,600 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/storagemanager -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libstoragemanager_la_LIBADD = -am_libstoragemanager_la_OBJECTS = Buffer.lo DiskStorageManager.lo \ - MemoryStorageManager.lo RandomEvictionsBuffer.lo -libstoragemanager_la_OBJECTS = $(am_libstoragemanager_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libstoragemanager_la_SOURCES) -DIST_SOURCES = $(libstoragemanager_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libstoragemanager.la -INCLUDES = -I../../include -libstoragemanager_la_SOURCES = Buffer.h Buffer.cc DiskStorageManager.cc MemoryStorageManager.cc RandomEvictionsBuffer.cc DiskStorageManager.h MemoryStorageManager.h RandomEvictionsBuffer.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/storagemanager/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/storagemanager/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libstoragemanager.la: $(libstoragemanager_la_OBJECTS) $(libstoragemanager_la_DEPENDENCIES) $(EXTRA_libstoragemanager_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libstoragemanager_la_OBJECTS) $(libstoragemanager_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Buffer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DiskStorageManager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemoryStorageManager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RandomEvictionsBuffer.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc b/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc deleted file mode 100644 index 3a73bb4..0000000 --- a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc +++ /dev/null @@ -1,141 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include - -#include -#include "MemoryStorageManager.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -libsupermesh::SpatialIndex::IStorageManager* libsupermesh::SpatialIndex::StorageManager::returnMemoryStorageManager(libsupermesh::Tools::PropertySet& ps) -{ - IStorageManager* sm = new MemoryStorageManager(ps); - return sm; -} - -libsupermesh::SpatialIndex::IStorageManager* libsupermesh::SpatialIndex::StorageManager::createNewMemoryStorageManager() -{ - libsupermesh::Tools::PropertySet ps; - return returnMemoryStorageManager(ps); -} - -MemoryStorageManager::MemoryStorageManager(libsupermesh::Tools::PropertySet&) -{ -} - -MemoryStorageManager::~MemoryStorageManager() -{ - for (std::vector::iterator it = m_buffer.begin(); it != m_buffer.end(); ++it) delete *it; -} - -void MemoryStorageManager::flush() -{ -} - -void MemoryStorageManager::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - Entry* e; - try - { - e = m_buffer.at(page); - if (e == 0) throw InvalidPageException(page); - } - catch (std::out_of_range) - { - throw InvalidPageException(page); - } - - len = e->m_length; - *data = new byte[len]; - - memcpy(*data, e->m_pData, len); -} - -void MemoryStorageManager::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - if (page == NewPage) - { - Entry* e = new Entry(len, data); - - if (m_emptyPages.empty()) - { - m_buffer.push_back(e); - page = m_buffer.size() - 1; - } - else - { - page = m_emptyPages.top(); m_emptyPages.pop(); - m_buffer[page] = e; - } - } - else - { - Entry* e_old; - try - { - e_old = m_buffer.at(page); - if (e_old == 0) throw InvalidPageException(page); - } - catch (std::out_of_range) - { - throw InvalidPageException(page); - } - - Entry* e = new Entry(len, data); - - delete e_old; - m_buffer[page] = e; - } -} - -void MemoryStorageManager::deleteByteArray(const id_type page) -{ - Entry* e; - try - { - e = m_buffer.at(page); - if (e == 0) throw InvalidPageException(page); - } - catch (std::out_of_range) - { - throw InvalidPageException(page); - } - - m_buffer[page] = 0; - m_emptyPages.push(page); - - delete e; -} - diff --git a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h b/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h deleted file mode 100644 index b93ff5c..0000000 --- a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class MemoryStorageManager : public libsupermesh::SpatialIndex::IStorageManager - { - public: - MemoryStorageManager(libsupermesh::Tools::PropertySet&); - - virtual ~MemoryStorageManager(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - private: - class Entry - { - public: - byte* m_pData; - uint32_t m_length; - - Entry(uint32_t l, const byte* const d) : m_pData(0), m_length(l) - { - m_pData = new byte[m_length]; - memcpy(m_pData, d, m_length); - } - - ~Entry() { delete[] m_pData; } - }; // Entry - - std::vector m_buffer; - std::stack m_emptyPages; - }; // MemoryStorageManager - } -} } diff --git a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc b/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc deleted file mode 100644 index bb54c9d..0000000 --- a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#ifndef HAVE_SRAND48 -#include -#endif - -#include -#include "RandomEvictionsBuffer.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -IBuffer* libsupermesh::SpatialIndex::StorageManager::returnRandomEvictionsBuffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - IBuffer* b = new RandomEvictionsBuffer(sm, ps); - return b; -} - -IBuffer* libsupermesh::SpatialIndex::StorageManager::createNewRandomEvictionsBuffer(IStorageManager& sm, uint32_t capacity, bool bWriteThrough) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = capacity; - ps.setProperty("Capacity", var); - - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = bWriteThrough; - ps.setProperty("WriteThrough", var); - - return returnRandomEvictionsBuffer(sm, ps); -} - -RandomEvictionsBuffer::RandomEvictionsBuffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : Buffer(sm, ps) -{ - srand48(static_cast(time(0))); -} - -RandomEvictionsBuffer::~RandomEvictionsBuffer() -{ -} - -void RandomEvictionsBuffer::addEntry(id_type page, Entry* e) -{ - assert(m_buffer.size() <= m_capacity); - - if (m_buffer.size() == m_capacity) removeEntry(); - assert(m_buffer.find(page) == m_buffer.end()); - m_buffer.insert(std::pair(page, e)); -} - -void RandomEvictionsBuffer::removeEntry() -{ - if (m_buffer.size() == 0) return; - - double random; - - random = drand48(); - - uint32_t entry = static_cast(floor(((double) m_buffer.size()) * random)); - - std::map::iterator it = m_buffer.begin(); - for (uint32_t cIndex = 0; cIndex < entry; cIndex++) ++it; - - if ((*it).second->m_bDirty) - { - id_type page = (*it).first; - m_pStorageManager->storeByteArray(page, ((*it).second)->m_length, (const byte *) ((*it).second)->m_pData); - } - - delete (*it).second; - m_buffer.erase(it); -} diff --git a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h b/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h deleted file mode 100644 index c3ab6ce..0000000 --- a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Buffer.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class RandomEvictionsBuffer : public Buffer - { - public: - RandomEvictionsBuffer(IStorageManager&, libsupermesh::Tools::PropertySet& ps); - // see Buffer.h for available properties. - - virtual ~RandomEvictionsBuffer(); - - virtual void addEntry(id_type page, Buffer::Entry* pEntry); - virtual void removeEntry(); - }; // RandomEvictionsBuffer - } -} } diff --git a/spatialindex-1.8.5/src/tools/Makefile.am b/spatialindex-1.8.5/src/tools/Makefile.am deleted file mode 100755 index 5ee481a..0000000 --- a/spatialindex-1.8.5/src/tools/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libtools.la -INCLUDES = -I../../include -libtools_la_SOURCES = Tools.cc - -if !RAND_IS_CONFIG -libtools_la_SOURCES += rand48.cc -endif \ No newline at end of file diff --git a/spatialindex-1.8.5/src/tools/Makefile.in b/spatialindex-1.8.5/src/tools/Makefile.in deleted file mode 100644 index 22aeb64..0000000 --- a/spatialindex-1.8.5/src/tools/Makefile.in +++ /dev/null @@ -1,582 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@RAND_IS_CONFIG_FALSE@am__append_1 = rand48.cc -subdir = src/tools -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libtools_la_LIBADD = -am__libtools_la_SOURCES_DIST = Tools.cc rand48.cc -@RAND_IS_CONFIG_FALSE@am__objects_1 = rand48.lo -am_libtools_la_OBJECTS = Tools.lo $(am__objects_1) -libtools_la_OBJECTS = $(am_libtools_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libtools_la_SOURCES) -DIST_SOURCES = $(am__libtools_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libtools.la -INCLUDES = -I../../include -libtools_la_SOURCES = Tools.cc $(am__append_1) -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tools/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/tools/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libtools.la: $(libtools_la_OBJECTS) $(libtools_la_DEPENDENCIES) $(EXTRA_libtools_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libtools_la_OBJECTS) $(libtools_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Tools.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand48.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/tools/Tools.cc b/spatialindex-1.8.5/src/tools/Tools.cc deleted file mode 100644 index dcd518d..0000000 --- a/spatialindex-1.8.5/src/tools/Tools.cc +++ /dev/null @@ -1,1305 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#ifndef HAVE_SRAND48 -#include -#endif - -#include - -#if (defined _WIN32 || defined _WIN64 || defined WIN32 || defined WIN64) -#include -#define mkdir _mkdir -#endif - -#if HAVE_PTHREAD_H -#if !defined(_POSIX_THREADS) -#include // for sched_yield() -#endif -#endif - -libsupermesh::Tools::IndexOutOfBoundsException::IndexOutOfBoundsException(size_t i) -{ - std::ostringstream s; - s << "Invalid index " << i; - m_error = s.str(); -} - -std::string libsupermesh::Tools::IndexOutOfBoundsException::what() -{ - return "IndexOutOfBoundsException: " + m_error; -} - -libsupermesh::Tools::IllegalArgumentException::IllegalArgumentException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::IllegalArgumentException::what() -{ - return "IllegalArgumentException: " + m_error; -} - -libsupermesh::Tools::IllegalStateException::IllegalStateException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::IllegalStateException::what() -{ - return "IllegalStateException: " + m_error; -} - -libsupermesh::Tools::EndOfStreamException::EndOfStreamException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::EndOfStreamException::what() -{ - return "EndOfStreamException: " + m_error; -} - -libsupermesh::Tools::ResourceLockedException::ResourceLockedException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::ResourceLockedException::what() -{ - return "ResourceLockedException: " + m_error; -} - -libsupermesh::Tools::NotSupportedException::NotSupportedException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::NotSupportedException::what() -{ - return "NotSupportedException: " + m_error; -} - -libsupermesh::Tools::Variant::Variant() : m_varType(VT_EMPTY) -{ -} - -libsupermesh::Tools::PropertySet::PropertySet(const byte* data) -{ - loadFromByteArray(data); -} - -libsupermesh::Tools::PropertySet::~PropertySet() -{ -} - -libsupermesh::Tools::PropertySet::PropertySet() -{ -} -void libsupermesh::Tools::PropertySet::loadFromByteArray(const byte* ptr) -{ - m_propertySet.clear(); - - uint32_t numberOfProperties; - memcpy(&numberOfProperties, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - Variant v; - - for (uint32_t cIndex = 0; cIndex < numberOfProperties; ++cIndex) - { - std::string s(reinterpret_cast(ptr)); - ptr += s.size() + 1; - memcpy(&(v.m_varType), ptr, sizeof(VariantType)); - ptr += sizeof(VariantType); - - switch (v.m_varType) - { - case VT_SHORT: - int16_t s; - memcpy(&s, ptr, sizeof(int16_t)); - ptr += sizeof(int16_t); - v.m_val.iVal = s; - break; - case VT_LONG: - int32_t l; - memcpy(&l, ptr, sizeof(int32_t)); - ptr += sizeof(int32_t); - v.m_val.lVal = l; - break; - case VT_LONGLONG: - int64_t ll; - memcpy(&ll, ptr, sizeof(int64_t)); - ptr += sizeof(int64_t); - v.m_val.llVal = ll; - break; - case VT_BYTE: - byte b; - memcpy(&b, ptr, sizeof(byte)); - ptr += sizeof(byte); - v.m_val.bVal = b; - break; - case VT_FLOAT: - float f; - memcpy(&f, ptr, sizeof(float)); - ptr += sizeof(float); - v.m_val.fltVal = f; - break; - case VT_DOUBLE: - double d; - memcpy(&d, ptr, sizeof(double)); - ptr += sizeof(double); - v.m_val.dblVal = d; - break; - case VT_CHAR: - char c; - memcpy(&c, ptr, sizeof(char)); - ptr += sizeof(char); - v.m_val.cVal = c; - break; - case VT_USHORT: - uint16_t us; - memcpy(&us, ptr, sizeof(uint16_t)); - ptr += sizeof(uint16_t); - v.m_val.uiVal = us; - break; - case VT_ULONG: - uint32_t ul; - memcpy(&ul, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - v.m_val.ulVal = ul; - break; - case VT_ULONGLONG: - uint64_t ull; - memcpy(&ull, ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - v.m_val.ullVal = ull; - break; - case VT_BOOL: - byte bl; - memcpy(&bl, ptr, sizeof(byte)); - ptr += sizeof(byte); - v.m_val.blVal = (bl != 0); - break; - default: - throw IllegalStateException( - "libsupermesh::Tools::PropertySet::PropertySet: Deserialization problem." - ); - } - - m_propertySet.insert(std::pair(s, v)); - } -} - -uint32_t libsupermesh::Tools::PropertySet::getByteArraySize() -{ - uint32_t size = sizeof(uint32_t); - std::map::iterator it; - - for (it = m_propertySet.begin(); it != m_propertySet.end(); ++it) - { - switch ((*it).second.m_varType) - { - case VT_SHORT: - size += sizeof(int16_t); - break; - case VT_LONG: - size += sizeof(int32_t); - break; - case VT_LONGLONG: - size += sizeof(int64_t); - break; - case VT_BYTE: - size += sizeof(byte); - break; - case VT_FLOAT: - size += sizeof(float); - break; - case VT_DOUBLE: - size += sizeof(double); - break; - case VT_CHAR: - size += sizeof(char); - break; - case VT_USHORT: - size += sizeof(uint16_t); - break; - case VT_ULONG: - size += sizeof(uint32_t); - break; - case VT_ULONGLONG: - size += sizeof(uint64_t); - break; - case VT_BOOL: - size += sizeof(byte); - break; - default: - throw NotSupportedException( - "libsupermesh::Tools::PropertySet::getSize: Unknown type." - ); - } - size += static_cast((*it).first.size()) + 1 + sizeof(VariantType); - } - - return size; -} - -void libsupermesh::Tools::PropertySet::storeToByteArray(byte** data, uint32_t& length) -{ - length = getByteArraySize(); - *data = new byte[length]; - byte* ptr = *data; - - uint32_t numberOfProperties = static_cast(m_propertySet.size()); - memcpy(ptr, &numberOfProperties, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - std::map::iterator it; - - for (it = m_propertySet.begin(); it != m_propertySet.end(); ++it) - { - size_t strSize = (*it).first.size(); - memcpy(ptr, (*it).first.c_str(), strSize); - ptr += strSize; - *ptr = 0; - ++ptr; - - memcpy(ptr, &((*it).second.m_varType), sizeof(VariantType)); - ptr += sizeof(VariantType); - - switch ((*it).second.m_varType) - { - case VT_SHORT: - memcpy(ptr, &((*it).second.m_val.iVal), sizeof(int16_t)); - ptr += sizeof(int16_t); - break; - case VT_LONG: - memcpy(ptr, &((*it).second.m_val.lVal), sizeof(int32_t)); - ptr += sizeof(int32_t); - break; - case VT_LONGLONG: - memcpy(ptr, &((*it).second.m_val.llVal), sizeof(int64_t)); - ptr += sizeof(int64_t); - break; - case VT_BYTE: - memcpy(ptr, &((*it).second.m_val.bVal), sizeof(byte)); - ptr += sizeof(byte); - break; - case VT_FLOAT: - memcpy(ptr, &((*it).second.m_val.fltVal), sizeof(float)); - ptr += sizeof(float); - break; - case VT_DOUBLE: - memcpy(ptr, &((*it).second.m_val.dblVal), sizeof(double)); - ptr += sizeof(double); - break; - case VT_CHAR: - memcpy(ptr, &((*it).second.m_val.cVal), sizeof(char)); - ptr += sizeof(char); - break; - case VT_USHORT: - memcpy(ptr, &((*it).second.m_val.uiVal), sizeof(uint16_t)); - ptr += sizeof(uint16_t); - break; - case VT_ULONG: - memcpy(ptr, &((*it).second.m_val.ulVal), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - break; - case VT_ULONGLONG: - memcpy(ptr, &((*it).second.m_val.ullVal), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - break; - case VT_BOOL: - byte bl; - bl = (*it).second.m_val.blVal; - memcpy(ptr, &bl, sizeof(byte)); - ptr += sizeof(byte); - break; - default: - throw NotSupportedException( - "libsupermesh::Tools::PropertySet::getData: Cannot serialize a variant of this type." - ); - } - } - - assert(ptr == (*data) + length); -} - -libsupermesh::Tools::Variant libsupermesh::Tools::PropertySet::getProperty(std::string property) const -{ - std::map::const_iterator it = m_propertySet.find(property); - - if (it != m_propertySet.end()) return (*it).second; - else return Variant(); -} - -void libsupermesh::Tools::PropertySet::setProperty(std::string property, Variant const& v) -{ - std::pair::iterator, bool> ret; - std::map::iterator it; - - ret = m_propertySet.insert(std::pair(property, v)); - - // If we weren't able to insert because it is already in the map - // update our existing value - if (ret.second == false) ret.first->second = v; -} - -void libsupermesh::Tools::PropertySet::removeProperty(std::string property) -{ - std::map::iterator it = m_propertySet.find(property); - if (it != m_propertySet.end()) m_propertySet.erase(it); -} - -libsupermesh::Tools::Interval::Interval() : m_type(IT_RIGHTOPEN), m_low(0.0), m_high(0.0) -{ -} - -libsupermesh::Tools::Interval::Interval(IntervalType t, double l, double h) : m_type(t), m_low(l), m_high(h) -{ - assert(l < h); -} - -libsupermesh::Tools::Interval::Interval(double l, double h) : m_type(IT_RIGHTOPEN), m_low(l), m_high(h) -{ - assert(l < h); -} - -libsupermesh::Tools::Interval::Interval(const Interval& iv) -{ - m_low = iv.m_low; - m_high = iv.m_high; - m_type = iv.m_type; -} - -libsupermesh::Tools::IInterval& libsupermesh::Tools::Interval::operator=(const libsupermesh::Tools::IInterval& iv) -{ - if (this != &iv) - { - m_low = iv.getLowerBound(); - m_high = iv.getUpperBound(); - m_type = iv.getIntervalType(); - } - - return *this; -} - -bool libsupermesh::Tools::Interval::operator==(const Interval& iv) const -{ - if ( - m_type == iv.m_type && - m_low >= iv.m_low - std::numeric_limits::epsilon() && - m_low <= iv.m_low + std::numeric_limits::epsilon() && - m_high >= iv.m_high - std::numeric_limits::epsilon() && - m_high <= iv.m_high + std::numeric_limits::epsilon()) - return true; - - return false; -} - -bool libsupermesh::Tools::Interval::operator!=(const Interval& iv) const -{ - return ! (*this == iv); -} - -double libsupermesh::Tools::Interval::getLowerBound() const -{ - return m_low; -} - -double libsupermesh::Tools::Interval::getUpperBound() const -{ - return m_high; -} - -void libsupermesh::Tools::Interval::setBounds(double l, double h) -{ - assert(l <= h); - - m_low = l; - m_high = h; -} - -bool libsupermesh::Tools::Interval::intersectsInterval(const IInterval& i) const -{ - return intersectsInterval(i.getIntervalType(), i.getLowerBound(), i.getUpperBound()); -} - -bool libsupermesh::Tools::Interval::intersectsInterval(IntervalType type, const double low, const double high) const -{ - if (m_high < m_low) - throw IllegalStateException( - "libsupermesh::Tools::Interval::intersectsInterval: high boundary is smaller than low boundary." - ); - - if (m_low > high || m_high < low) return false; - if ((m_low > low && m_low < high) || (m_high > low && m_high < high)) return true; - - switch (m_type) - { - case IT_CLOSED: - if (m_low == high) - { - if (type == IT_CLOSED || type == IT_LEFTOPEN) return true; - else return false; - } - else if (m_high == low) - { - if (type == IT_CLOSED || type == IT_RIGHTOPEN) return true; - else return false; - } - break; - case IT_OPEN: - if (m_low == high || m_high == low) return false; - break; - case IT_RIGHTOPEN: - if (m_low == high) - { - if (type == IT_CLOSED || type == IT_LEFTOPEN) return true; - else return false; - } - else if (m_high == low) - { - return false; - } - break; - case IT_LEFTOPEN: - if (m_low == high) - { - return false; - } - else if (m_high == low) - { - if (type == IT_CLOSED || type == IT_RIGHTOPEN) return true; - else return false; - } - break; - } - - return true; -} - -bool libsupermesh::Tools::Interval::containsInterval(const IInterval& i) const -{ - if (m_high < m_low) - throw IllegalStateException( - "libsupermesh::Tools::Interval::containsInterval: high boundary is smaller than low boundary." - ); - - double low = i.getLowerBound(); - double high = i.getUpperBound(); - IntervalType type = i.getIntervalType(); - - if (m_low < low && m_high > high) return true; - if (m_low > low || m_high < high) return false; - - switch (m_type) - { - case IT_CLOSED: - break; - case IT_OPEN: - if ((m_low == low && m_high == high && type != IT_OPEN) || - (m_low == low && (type == IT_CLOSED || type == IT_RIGHTOPEN)) || - (m_high == high && ( type == IT_CLOSED || type == IT_LEFTOPEN))) - return false; - break; - case IT_RIGHTOPEN: - if (m_high == high && (type == IT_CLOSED || type == IT_LEFTOPEN)) - return false; - break; - case IT_LEFTOPEN: - if (m_low == low && (type == IT_CLOSED || type == IT_RIGHTOPEN)) - return false; - break; - } - - return true; -} - -libsupermesh::Tools::IntervalType libsupermesh::Tools::Interval::getIntervalType() const -{ - return m_type; -} - -libsupermesh::Tools::Random::Random() -{ - m_pBuffer = 0; - initDrand(static_cast(time(0)), 0xD31A); -} - -libsupermesh::Tools::Random::Random(uint32_t seed, uint16_t xsubi0) -{ - m_pBuffer = 0; - initDrand(seed, xsubi0); -} - -libsupermesh::Tools::Random::~Random() -{ - delete[] m_pBuffer; -} - -void libsupermesh::Tools::Random::initDrand(uint32_t seed, uint16_t xsubi0) -{ - m_pBuffer = new uint16_t[3]; - m_pBuffer[0] = static_cast(xsubi0); - uint32_t mask = 0xFFFF; - m_pBuffer[1] = static_cast(seed & mask); - mask = mask << 16; - m_pBuffer[2] = static_cast((seed & mask) >> 16); - -#ifdef BUILD_OS_CYGWIN - srand48(*(reinterpret_cast(m_pBuffer))); - // BUG: There is a bug in cygwin gcc 3.4.4. srand48 needs to be called - // even if we are using the functions that take the seed as a parameter. - // This does not affect random number generation, which still happens - // using the seed provided as a parameter and not the one provided to srand48 :-S -#endif -} - -int32_t libsupermesh::Tools::Random::nextUniformLong() -{ - return jrand48(m_pBuffer); -} - -uint32_t libsupermesh::Tools::Random::nextUniformUnsignedLong() -{ - return static_cast(nextUniformLong()); -} - -int32_t libsupermesh::Tools::Random::nextUniformLong(int32_t low, int32_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -uint32_t libsupermesh::Tools::Random::nextUniformUnsignedLong(uint32_t low, uint32_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -int64_t libsupermesh::Tools::Random::nextUniformLongLong() -{ - return static_cast(nextUniformUnsignedLongLong()); -} - -uint64_t libsupermesh::Tools::Random::nextUniformUnsignedLongLong() -{ - uint64_t lh = static_cast(nextUniformLong()); - uint64_t ll = static_cast(nextUniformLong()); - uint64_t ret = (lh << 32) | ll; - return ret; -} - -int64_t libsupermesh::Tools::Random::nextUniformLongLong(int64_t low, int64_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -uint64_t libsupermesh::Tools::Random::nextUniformUnsignedLongLong(uint64_t low, uint64_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -int16_t libsupermesh::Tools::Random::nextUniformShort() -{ - return static_cast(nextUniformUnsignedShort()); -} - -uint16_t libsupermesh::Tools::Random::nextUniformUnsignedShort() -{ - return nextUniformUnsignedLong() >> 16; - // retain the high order bits. -} - -double libsupermesh::Tools::Random::nextUniformDouble() -{ - uint16_t* xsubi = reinterpret_cast(m_pBuffer); - return erand48(xsubi); -} - -double libsupermesh::Tools::Random::nextUniformDouble(double low, double high) -{ - return (high - low) * nextUniformDouble() + low; -} - -bool libsupermesh::Tools::Random::flipCoin() -{ - if (nextUniformDouble() < 0.5) return true; - return false; -} - -#if HAVE_PTHREAD_H -libsupermesh::Tools::LockGuard::LockGuard(pthread_mutex_t* pLock) - : m_pLock(pLock) -{ - pthread_mutex_lock(m_pLock); -} - -libsupermesh::Tools::LockGuard::~LockGuard() -{ - pthread_mutex_unlock(m_pLock); -} -#endif - -std::ostream& libsupermesh::Tools::operator<<(std::ostream& os, const libsupermesh::Tools::PropertySet& p) -{ - std::map::const_iterator it; - - for (it = p.m_propertySet.begin(); it != p.m_propertySet.end(); ++it) - { - if (it != p.m_propertySet.begin()) os << ", "; - - switch ((*it).second.m_varType) - { - case VT_LONG: - os << (*it).first << ": " << (*it).second.m_val.lVal; - break; - case VT_LONGLONG: - os << (*it).first << ": " << (*it).second.m_val.llVal; - break; - case VT_BYTE: - os << (*it).first << ": " << (*it).second.m_val.bVal; - break; - case VT_SHORT: - os << (*it).first << ": " << (*it).second.m_val.iVal; - break; - case VT_FLOAT: - os << (*it).first << ": " << (*it).second.m_val.fltVal; - break; - case VT_DOUBLE: - os << (*it).first << ": " << (*it).second.m_val.dblVal; - break; - case VT_CHAR: - os << (*it).first << ": " << (*it).second.m_val.cVal; - break; - case VT_USHORT: - os << (*it).first << ": " << (*it).second.m_val.uiVal; - break; - case VT_ULONG: - os << (*it).first << ": " << (*it).second.m_val.ulVal; - break; - case VT_ULONGLONG: - os << (*it).first << ": " << (*it).second.m_val.ullVal; - break; - case VT_BOOL: - os << (*it).first << ": " << (*it).second.m_val.blVal; - break; - case VT_PCHAR: - os << (*it).first << ": " << (*it).second.m_val.pcVal; - break; - case VT_PVOID: - os << (*it).first << ": ?"; - break; - case VT_EMPTY: - os << (*it).first << ": empty"; - break; - default: - os << (*it).first << ": unknown"; - } - } - - return os; -} - -std::ostream& libsupermesh::Tools::operator<<(std::ostream& os, const libsupermesh::Tools::Interval& iv) -{ - os << iv.m_type << " " << iv.m_low << " " << iv.m_high; - return os; -} - -// -// BufferedFile -// -libsupermesh::Tools::BufferedFile::BufferedFile(uint32_t u32BufferSize) -: m_buffer(new char[u32BufferSize]), m_u32BufferSize(u32BufferSize), m_bEOF(true) -{ -} - -libsupermesh::Tools::BufferedFile::~BufferedFile() -{ - m_file.close(); - delete[] m_buffer; -} - -void libsupermesh::Tools::BufferedFile::close() -{ - m_file.close(); -} - -bool libsupermesh::Tools::BufferedFile::eof() -{ - return m_bEOF; -} - -// -// BufferedFileReader -// -libsupermesh::Tools::BufferedFileReader::BufferedFileReader() -{ -} - -libsupermesh::Tools::BufferedFileReader::BufferedFileReader(const std::string& sFileName, uint32_t u32BufferSize) -: BufferedFile(u32BufferSize) -{ - open(sFileName); -} - -void libsupermesh::Tools::BufferedFileReader::open(const std::string& sFileName) -{ - m_bEOF = false; - m_file.close(); m_file.clear(); - - - m_file.open(sFileName.c_str(), std::ios_base::in | std::ios_base::binary); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileReader::BufferedFileReader: Cannot open file."); - - m_file.rdbuf()->pubsetbuf(m_buffer, m_u32BufferSize); -} - -libsupermesh::Tools::BufferedFileReader::~BufferedFileReader() -{ -} - -void libsupermesh::Tools::BufferedFileReader::rewind() -{ - m_file.clear(); - m_file.seekg(0, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileReader::rewind: seek failed."); - - m_bEOF = false; -} - -void libsupermesh::Tools::BufferedFileReader::seek(std::fstream::off_type offset) -{ - m_bEOF = false; - m_file.clear(); - m_file.seekg(offset, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileReader::seek: seek failed."); -} - -uint8_t libsupermesh::Tools::BufferedFileReader::readUInt8() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint8_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint8_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -uint16_t libsupermesh::Tools::BufferedFileReader::readUInt16() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint16_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint16_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -uint32_t libsupermesh::Tools::BufferedFileReader::readUInt32() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint32_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint32_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -uint64_t libsupermesh::Tools::BufferedFileReader::readUInt64() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint64_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint64_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -float libsupermesh::Tools::BufferedFileReader::readFloat() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - float ret; - m_file.read(reinterpret_cast(&ret), sizeof(float)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -double libsupermesh::Tools::BufferedFileReader::readDouble() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - double ret; - m_file.read(reinterpret_cast(&ret), sizeof(double)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -bool libsupermesh::Tools::BufferedFileReader::readBoolean() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - bool ret; - m_file.read(reinterpret_cast(&ret), sizeof(bool)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -std::string libsupermesh::Tools::BufferedFileReader::readString() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint32_t len; - m_file.read(reinterpret_cast(&len), sizeof(uint32_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - - std::string::value_type* buf = new std::string::value_type[len]; - m_file.read(reinterpret_cast(buf), len * sizeof(std::string::value_type)); - if (! m_file.good()) - { - delete[] buf; - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - - std::string ret(buf, len); - delete[] buf; - - return ret; -} - -void libsupermesh::Tools::BufferedFileReader::readBytes(uint32_t u32Len, byte** pData) -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - *pData = new byte[u32Len]; - m_file.read(reinterpret_cast(*pData), u32Len); - if (! m_file.good()) - { - delete[] *pData; - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } -} - -// -// BufferedFileWriter -// -libsupermesh::Tools::BufferedFileWriter::BufferedFileWriter() -{ - open(""); -} - -libsupermesh::Tools::BufferedFileWriter::BufferedFileWriter(const std::string& sFileName, FileMode mode, uint32_t u32BufferSize) -: BufferedFile(u32BufferSize) -{ - open(sFileName, mode); -} - -libsupermesh::Tools::BufferedFileWriter::~BufferedFileWriter() -{ - m_file.flush(); -} - -void libsupermesh::Tools::BufferedFileWriter::open(const std::string& sFileName, FileMode mode) -{ - m_bEOF = false; - m_file.close(); m_file.clear(); - - if (mode == CREATE) - { - m_file.open(sFileName.c_str(), std::ios_base::out | std::ios_base::binary | std::ios_base::trunc); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::open: Cannot open file."); - } - else if (mode == APPEND) - { - // Idiotic fstream::open truncates an existing file anyway, if it is only opened - // for output (no ios_base::in flag)!! On the other hand, if a file does not exist - // and the ios_base::in flag is specified, then the open fails!! - - m_file.open(sFileName.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::binary); - if (! m_file.good()) - { - m_file.clear(); - m_file.open(sFileName.c_str(), std::ios_base::out | std::ios_base::binary); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::open: Cannot open file."); - } - else - { - m_file.seekp(0, std::ios_base::end); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::open: Cannot open file."); - } - } - else - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::Tools::BufferedFileWriter::open: Unknown mode."); -} - -void libsupermesh::Tools::BufferedFileWriter::rewind() -{ - m_bEOF = false; - m_file.clear(); - m_file.seekp(0, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::rewind: seek failed."); -} - -void libsupermesh::Tools::BufferedFileWriter::seek(std::fstream::off_type offset) -{ - m_bEOF = false; - m_file.clear(); - m_file.seekp(offset, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::seek: seek failed."); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint8_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint8_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint16_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint16_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint32_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint32_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint64_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint64_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(float i) -{ - m_file.write(reinterpret_cast(&i), sizeof(float)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(double i) -{ - m_file.write(reinterpret_cast(&i), sizeof(double)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(bool b) -{ - m_file.write(reinterpret_cast(&b), sizeof(bool)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(const std::string& s) -{ - uint32_t len = static_cast(s.size()); - m_file.write(reinterpret_cast(&len), sizeof(uint32_t)); - if (! m_file.good()) throw std::ios_base::failure(""); - m_file.write(reinterpret_cast(s.c_str()), len * sizeof(std::string::value_type)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint32_t u32Len, byte* pData) -{ - m_file.write(reinterpret_cast(pData), u32Len); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -// -// TemporaryFile -// -libsupermesh::Tools::TemporaryFile::TemporaryFile() -{ - -#ifdef _MSC_VER - -#ifndef L_tmpnam_s -// MSVC 2003 doesn't have tmpnam_s, so we'll have to use the old functions - - char* tmpName = NULL; - tmpName = tmpnam( NULL ); - - if (tmpName == NULL) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile: Cannot create temporary file name."); - -#else - char tmpName[L_tmpnam_s]; - errno_t err = tmpnam_s(tmpName, L_tmpnam_s); - if (err) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile: Cannot create temporary file name."); - -#endif - if (tmpName[0] == '\\') - m_sFile = std::string(tmpName + 1); - else - m_sFile = std::string(tmpName); - -#else - char tmpName[7] = "XXXXXX"; - if (mktemp(tmpName) == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile: Cannot create temporary file name."); - m_sFile = tmpName; -#endif - - m_pFile = new libsupermesh::Tools::BufferedFileWriter(m_sFile, libsupermesh::Tools::CREATE); -} - -libsupermesh::Tools::TemporaryFile::~TemporaryFile() -{ - delete m_pFile; - -#ifdef _MSC_VER - _unlink(m_sFile.c_str()); -#else - std::remove(m_sFile.c_str()); -#endif -} - -void libsupermesh::Tools::TemporaryFile::rewindForReading() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br != 0) - m_pFile->rewind(); - else - { - delete m_pFile; - m_pFile = new libsupermesh::Tools::BufferedFileReader(m_sFile); - } -} - -void libsupermesh::Tools::TemporaryFile::rewindForWriting() -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw != 0) - m_pFile->rewind(); - else - { - delete m_pFile; - m_pFile = new libsupermesh::Tools::BufferedFileWriter(m_sFile); - } -} - -bool libsupermesh::Tools::TemporaryFile::eof() -{ - return m_pFile->eof(); -} - -std::string libsupermesh::Tools::TemporaryFile::getFileName() const -{ - return m_sFile; -} - -uint8_t libsupermesh::Tools::TemporaryFile::readUInt8() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt8: file not open for reading."); - - return br->readUInt8(); -} - -uint16_t libsupermesh::Tools::TemporaryFile::readUInt16() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt16: file not open for reading."); - - return br->readUInt16(); -} - -uint32_t libsupermesh::Tools::TemporaryFile::readUInt32() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt32: file not open for reading."); - - return br->readUInt32(); -} - -uint64_t libsupermesh::Tools::TemporaryFile::readUInt64() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt64: file not open for reading."); - - return br->readUInt64(); -} - -float libsupermesh::Tools::TemporaryFile::readFloat() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readFloat: file not open for reading."); - - return br->readFloat(); -} - -double libsupermesh::Tools::TemporaryFile::readDouble() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readDouble: file not open for reading."); - - return br->readDouble(); -} - -std::string libsupermesh::Tools::TemporaryFile::readString() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readString: file not open for reading."); - - return br->readString(); -} - -void libsupermesh::Tools::TemporaryFile::readBytes(uint32_t u32Len, byte** pData) -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readString: file not open for reading."); - - return br->readBytes(u32Len, pData); -} - -void libsupermesh::Tools::TemporaryFile::write(uint8_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(uint16_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(uint32_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(uint64_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(float i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(double i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(const std::string& s) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(s); -} - -void libsupermesh::Tools::TemporaryFile::write(uint32_t u32Len, byte* pData) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(u32Len, pData); -} diff --git a/spatialindex-1.8.5/src/tools/rand48.cc b/spatialindex-1.8.5/src/tools/rand48.cc deleted file mode 100644 index 33121d8..0000000 --- a/spatialindex-1.8.5/src/tools/rand48.cc +++ /dev/null @@ -1,150 +0,0 @@ -/* -* Copyright (c) 1993 Martin Birgmeier -* All rights reserved. -* -* You may redistribute unmodified or modified versions of this source -* code provided that the above copyright notice and this and the -* following conditions are retained. -* -* This software is provided ``as is'', and comes with no warranties -* of any kind. I shall in no event be liable for anything that happens -* to anyone/anything when using this software. -*/ - -#ifndef HAVE_SRAND48 - -#include -#include -#include - -#define RAND48_SEED_0 (0x330e) -#define RAND48_SEED_1 (0xabcd) -#define RAND48_SEED_2 (0x1234) -#define RAND48_MULT_0 (0xe66d) -#define RAND48_MULT_1 (0xdeec) -#define RAND48_MULT_2 (0x0005) -#define RAND48_ADD (0x000b) - - - /* Internal function to compute next state of the generator. */ -static void _dorand48(unsigned short[3]); - -/* Unfortunately, 3 __globals, which the exported functions must access */ -unsigned short __rand48_Seed[3] = { - RAND48_SEED_0, - RAND48_SEED_1, - RAND48_SEED_2 -}; -unsigned short __rand48_Mult[3] = { - RAND48_MULT_0, - RAND48_MULT_1, - RAND48_MULT_2 -}; -unsigned short __rand48_Add = RAND48_ADD; - -/* Internal function to compute next state of the generator. */ - static void -_dorand48(unsigned short xseed[3]) -{ - unsigned long accu; - unsigned short temp[2]; - - accu = (unsigned long) __rand48_Mult[0] * (unsigned long) xseed[0] + - (unsigned long) __rand48_Add; - temp[0] = (unsigned short) accu; /* lower 16 bits */ - accu >>= sizeof(unsigned short) * 8; - accu += (unsigned long) __rand48_Mult[0] * (unsigned long) xseed[1] + - (unsigned long) __rand48_Mult[1] * (unsigned long) xseed[0]; - temp[1] = (unsigned short) accu; /* middle 16 bits */ - accu >>= sizeof(unsigned short) * 8; - accu += __rand48_Mult[0] * xseed[2] + __rand48_Mult[1] * xseed[1] + - __rand48_Mult[2] * xseed[0]; - xseed[0] = temp[0]; - xseed[1] = temp[1]; - xseed[2] = (unsigned short) accu; -} - - extern void -srand48(long seed) __THROW -{ - __rand48_Seed[0] = RAND48_SEED_0; - __rand48_Seed[1] = (unsigned short) seed; - __rand48_Seed[2] = (unsigned short) (seed >> 16); - __rand48_Mult[0] = RAND48_MULT_0; - __rand48_Mult[1] = RAND48_MULT_1; - __rand48_Mult[2] = RAND48_MULT_2; - __rand48_Add = RAND48_ADD; -} - - extern unsigned short * -seed48(unsigned short xseed[3]) __THROW -{ - static unsigned short sseed[3]; - - sseed[0] = __rand48_Seed[0]; - sseed[1] = __rand48_Seed[1]; - sseed[2] = __rand48_Seed[2]; - __rand48_Seed[0] = xseed[0]; - __rand48_Seed[1] = xseed[1]; - __rand48_Seed[2] = xseed[2]; - __rand48_Mult[0] = RAND48_MULT_0; - __rand48_Mult[1] = RAND48_MULT_1; - __rand48_Mult[2] = RAND48_MULT_2; - __rand48_Add = RAND48_ADD; - return sseed; -} - - extern long -nrand48(unsigned short xseed[3]) __THROW -{ - _dorand48(xseed); - return ((long) xseed[2] << 15) + ((long) xseed[1] >> 1); -} - extern long -mrand48(void) __THROW -{ - _dorand48(__rand48_Seed); - return ((long) __rand48_Seed[2] << 16) + (long) __rand48_Seed[1]; -} - - extern long -lrand48(void) __THROW -{ - _dorand48(__rand48_Seed); - return ((long) __rand48_Seed[2] << 15) + ((long) __rand48_Seed[1] >> 1); -} - - extern void -lcong48(unsigned short p[7]) __THROW -{ - __rand48_Seed[0] = p[0]; - __rand48_Seed[1] = p[1]; - __rand48_Seed[2] = p[2]; - __rand48_Mult[0] = p[3]; - __rand48_Mult[1] = p[4]; - __rand48_Mult[2] = p[5]; - __rand48_Add = p[6]; -} - extern long -jrand48(unsigned short xseed[3]) __THROW -{ - _dorand48(xseed); - return ((long) xseed[2] << 16) + (long) xseed[1]; -} - - extern double -erand48(unsigned short xseed[3]) __THROW -{ - _dorand48(xseed); - return ldexp((double) xseed[0], -48) + - ldexp((double) xseed[1], -32) + - ldexp((double) xseed[2], -16); -} - - extern double -drand48(void) __THROW -{ - return erand48(__rand48_Seed); -} - -#endif diff --git a/spatialindex-1.8.5/src/tprtree/Index.cc b/spatialindex-1.8.5/src/tprtree/Index.cc deleted file mode 100644 index 000dfde..0000000 --- a/spatialindex-1.8.5/src/tprtree/Index.cc +++ /dev/null @@ -1,413 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "TPRTree.h" -#include "Node.h" -#include "Leaf.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::TPRTree; - -Index::~Index() -{ -} - -Index::Index(libsupermesh::SpatialIndex::TPRTree::TPRTree* pTree, id_type id, uint32_t level) : Node(pTree, id, level, pTree->m_indexCapacity) -{ -} - -NodePtr Index::chooseSubtree(const MovingRegion& mbr, uint32_t insertionLevel, std::stack& pathBuffer) -{ - if (m_level == insertionLevel) return NodePtr(this, &(m_pTree->m_indexPool)); - - pathBuffer.push(m_identifier); - - uint32_t child = 0; - - switch (m_pTree->m_treeVariant) - { - case TPRV_RSTAR: - if (m_level == 1) - { - // if this node points to leaves... - child = findLeastOverlap(mbr); - } - else - { - child = findLeastEnlargement(mbr); - } - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::chooseSubtree: Tree variant not supported."); - } - assert(child != std::numeric_limits::max()); - - NodePtr n = m_pTree->readNode(m_pIdentifier[child]); - NodePtr ret = n->chooseSubtree(mbr, insertionLevel, pathBuffer); - assert(n.unique()); - if (ret.get() == n.get()) n.relinquish(); - - return ret; -} - -NodePtr Index::findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_ptrMBR[cChild]->containsRegionAfterTime(m_pTree->m_currentTime, mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findLeaf(mbr, id, pathBuffer); - if (n.get() == l.get()) n.relinquish(); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} - -void Index::split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight) -{ - ++(m_pTree->m_stats.m_splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case TPRV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_indexPool.acquire(); - pRight = m_pTree->m_indexPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Index(m_pTree, m_identifier, m_level), &(m_pTree->m_indexPool)); - if (pRight.get() == 0) pRight = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(0, 0, *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(0, 0, *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - } -} - -uint32_t Index::findLeastEnlargement(const MovingRegion& r) const -{ - double area = std::numeric_limits::max(); - uint32_t best = std::numeric_limits::max(); - - MovingRegionPtr t = m_pTree->m_regionPool.acquire(); - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // I need the combined region from current time up to infinity here. - m_ptrMBR[cChild]->getCombinedRegionAfterTime(ivT.getLowerBound(), *t, r); - - double a = m_ptrMBR[cChild]->getAreaInTime(ivT); - double b = t->getAreaInTime(ivT); - double enl = b - a; - - if (enl < area) - { - area = enl; - best = cChild; - } - else if (enl == area) - { - // this will rarely happen, so compute best area on the fly only - // when necessary. - if (a < m_ptrMBR[best]->getAreaInTime(ivT)) best = cChild; - } - } - - return best; -} - -uint32_t Index::findLeastOverlap(const MovingRegion& r) const -{ - OverlapEntry** entries = new OverlapEntry*[m_children]; - - double leastOverlap = std::numeric_limits::max(); - double me = std::numeric_limits::max(); - OverlapEntry* best = 0; - - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - // find combined region and enlargement of every entry and store it. - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - try - { - entries[cChild] = new OverlapEntry(); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete entries[i]; - delete[] entries; - throw; - } - - entries[cChild]->m_index = cChild; - entries[cChild]->m_original = m_ptrMBR[cChild]; - entries[cChild]->m_combined = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->getCombinedRegionAfterTime(m_pTree->m_currentTime, *(entries[cChild]->m_combined), r); - entries[cChild]->m_oa = entries[cChild]->m_original->getAreaInTime(ivT); - entries[cChild]->m_ca = entries[cChild]->m_combined->getAreaInTime(ivT); - entries[cChild]->m_enlargement = entries[cChild]->m_ca - entries[cChild]->m_oa; - - if (entries[cChild]->m_enlargement < me) - { - me = entries[cChild]->m_enlargement; - best = entries[cChild]; - } - else if (entries[cChild]->m_enlargement == me && entries[cChild]->m_oa < best->m_oa) - { - best = entries[cChild]; - } - } - - if (me < -std::numeric_limits::epsilon() || me > std::numeric_limits::epsilon()) - { - uint32_t cIterations; - - if (m_children > m_pTree->m_nearMinimumOverlapFactor) - { - // sort entries in increasing order of enlargement. - ::qsort(entries, m_children, - sizeof(OverlapEntry*), - OverlapEntry::compareEntries); - assert(entries[0]->m_enlargement <= entries[m_children - 1]->m_enlargement); - - cIterations = m_pTree->m_nearMinimumOverlapFactor; - } - else - { - cIterations = m_children; - } - - // calculate overlap of most important original entries (near minimum overlap cost). - for (uint32_t cIndex = 0; cIndex < cIterations; ++cIndex) - { - double dif = 0.0; - OverlapEntry* e = entries[cIndex]; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (e->m_index != cChild) - { - double f = e->m_combined->getIntersectingAreaInTime(ivT, *(m_ptrMBR[cChild])); - if (f != 0.0) dif += f - e->m_original->getIntersectingAreaInTime(ivT, *(m_ptrMBR[cChild])); - } - } // for (cChild) - - if (dif < leastOverlap) - { - leastOverlap = dif; - best = entries[cIndex]; - } - else if (dif == leastOverlap) - { - if (e->m_enlargement == best->m_enlargement) - { - // keep the one with least area. - if (e->m_original->getAreaInTime(ivT) < best->m_original->getAreaInTime(ivT)) best = entries[cIndex]; - } - else - { - // keep the one with least enlargement. - if (e->m_enlargement < best->m_enlargement) best = entries[cIndex]; - } - } - } // for (cIndex) - } - - uint32_t ret = best->m_index; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - delete entries[cChild]; - } - delete[] entries; - - return ret; -} - -void Index::adjustTree(Node* n, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n->m_identifier) break; - } - assert(child < m_children); - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - //libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - //bool bContained = m_nodeMBR.containsRegionInTime(ivT, n->m_nodeMBR); - - *(m_ptrMBR[child]) = n->m_nodeMBR; - - //if (! bContained) - //{ - // update the MBR at the current time anyway, to make tighter. - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - //} - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, *(m_ptrMBR[cChild])) == true); - } -#endif - - m_pTree->writeNode(this); - - if (/*! bContained && */ ! pathBuffer.empty()) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} - -void Index::adjustTree(Node* n1, Node* n2, std::stack& pathBuffer, byte* overflowTable) -{ - ++(m_pTree->m_stats.m_adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n1->m_identifier) break; - } - assert(child < m_children); - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - //libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - //bool bContained = m_nodeMBR.containsRegionInTime(ivT, n1->m_nodeMBR); - - *(m_ptrMBR[child]) = n1->m_nodeMBR; - - //if (! bContaied) - //{ - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - //} - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, *(m_ptrMBR[cChild])) == true); - } -#endif - - // No write necessary here. insertData will write the node if needed. - //m_pTree->writeNode(this); - - bool bAdjusted = insertData(0, 0, n2->m_nodeMBR, n2->m_identifier, pathBuffer, overflowTable); - - // if n2 is contained in the node and there was no split or reinsert, - // we need to adjust only if recalculation took place. - // In all other cases insertData above took care of adjustment. - if (! bAdjusted && ! pathBuffer.empty()) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} diff --git a/spatialindex-1.8.5/src/tprtree/Index.h b/spatialindex-1.8.5/src/tprtree/Index.h deleted file mode 100644 index 796b510..0000000 --- a/spatialindex-1.8.5/src/tprtree/Index.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class Index : public Node - { - public: - virtual ~Index(); - - private: - Index(TPRTree* pTree, id_type id, uint32_t level); - - virtual NodePtr chooseSubtree(const MovingRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& left, NodePtr& right); - - uint32_t findLeastEnlargement(const MovingRegion&) const; - uint32_t findLeastOverlap(const MovingRegion&) const; - - void adjustTree(Node*, std::stack&); - void adjustTree(Node*, Node*, std::stack&, byte* overflowTable); - - class OverlapEntry - { - public: - uint32_t m_index; - double m_enlargement; - MovingRegionPtr m_original; - MovingRegionPtr m_combined; - double m_oa; - double m_ca; - - static int compareEntries(const void* pv1, const void* pv2) - { - OverlapEntry* pe1 = * (OverlapEntry**) pv1; - OverlapEntry* pe2 = * (OverlapEntry**) pv2; - - if (pe1->m_enlargement < pe2->m_enlargement) return -1; - if (pe1->m_enlargement > pe2->m_enlargement) return 1; - return 0; - } - }; // OverlapEntry - - friend class TPRTree; - friend class Node; - friend class BulkLoader; - }; // Index - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/Leaf.cc b/spatialindex-1.8.5/src/tprtree/Leaf.cc deleted file mode 100644 index 95c4ede..0000000 --- a/spatialindex-1.8.5/src/tprtree/Leaf.cc +++ /dev/null @@ -1,148 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "TPRTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::TPRTree; - -Leaf::~Leaf() -{ -} - -Leaf::Leaf(libsupermesh::SpatialIndex::TPRTree::TPRTree* pTree, id_type id) - : Node(pTree, id, 0, pTree->m_leafCapacity) -{ -} - -NodePtr Leaf::chooseSubtree(const MovingRegion&, uint32_t, std::stack&) -{ - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - return NodePtr(this, &(m_pTree->m_leafPool)); -} - -NodePtr Leaf::findLeaf(const MovingRegion&, id_type id, std::stack&) -{ - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - if (m_pIdentifier[cChild] == id /*&& mbr == *(m_ptrMBR[cChild])*/) return NodePtr(this, &(m_pTree->m_leafPool)); - } - - return NodePtr(); -} - -void Leaf::split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight) -{ - ++(m_pTree->m_stats.m_splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case TPRV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Leaf::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_leafPool.acquire(); - pRight = m_pTree->m_leafPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - if (pRight.get() == 0) pRight = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(m_pDataLength[g1[cIndex]], m_pData[g1[cIndex]], *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g1[cIndex]] = 0; - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(m_pDataLength[g2[cIndex]], m_pData[g2[cIndex]], *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g2[cIndex]] = 0; - } -} - -void Leaf::deleteData(id_type id, std::stack& pathBuffer) -{ - uint32_t child; - - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == id) break; - } - - deleteEntry(child); - m_pTree->writeNode(this); - - std::stack toReinsert; - NodePtr ptrThis(this, &(m_pTree->m_leafPool)); - condenseTree(toReinsert, pathBuffer, ptrThis); - ptrThis.relinquish(); - - // re-insert eliminated nodes. - while (! toReinsert.empty()) - { - NodePtr n = toReinsert.top(); toReinsert.pop(); - m_pTree->deleteNode(n.get()); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - // keep this in the for loop. The tree height might change after insertions. - byte* overflowTable = new byte[m_pTree->m_stats.m_treeHeight]; - memset(overflowTable, 0, m_pTree->m_stats.m_treeHeight); - m_pTree->insertData_impl(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild], n->m_level, overflowTable); - n->m_pData[cChild] = 0; - delete[] overflowTable; - } - if (n.get() == this) n.relinquish(); - } -} diff --git a/spatialindex-1.8.5/src/tprtree/Leaf.h b/spatialindex-1.8.5/src/tprtree/Leaf.h deleted file mode 100644 index 3b0d30a..0000000 --- a/spatialindex-1.8.5/src/tprtree/Leaf.h +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class Leaf : public Node - { - public: - virtual ~Leaf(); - - private: - Leaf(TPRTree* pTree, id_type id); - - virtual NodePtr chooseSubtree(const MovingRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& left, NodePtr& right); - - virtual void deleteData(id_type id, std::stack& pathBuffer); - - friend class TPRTree; - friend class BulkLoader; - }; // Leaf - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/Makefile.am b/spatialindex-1.8.5/src/tprtree/Makefile.am deleted file mode 100644 index 6f6a87a..0000000 --- a/spatialindex-1.8.5/src/tprtree/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libtprtree.la -INCLUDES = -I../../include -libtprtree_la_SOURCES = Index.cc Leaf.cc Node.cc TPRTree.cc Statistics.cc Leaf.h Index.h Node.h PointerPoolNode.h Statistics.h TPRTree.h diff --git a/spatialindex-1.8.5/src/tprtree/Makefile.in b/spatialindex-1.8.5/src/tprtree/Makefile.in deleted file mode 100644 index b48866e..0000000 --- a/spatialindex-1.8.5/src/tprtree/Makefile.in +++ /dev/null @@ -1,601 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/tprtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libtprtree_la_LIBADD = -am_libtprtree_la_OBJECTS = Index.lo Leaf.lo Node.lo TPRTree.lo \ - Statistics.lo -libtprtree_la_OBJECTS = $(am_libtprtree_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libtprtree_la_SOURCES) -DIST_SOURCES = $(libtprtree_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libtprtree.la -INCLUDES = -I../../include -libtprtree_la_SOURCES = Index.cc Leaf.cc Node.cc TPRTree.cc Statistics.cc Leaf.h Index.h Node.h PointerPoolNode.h Statistics.h TPRTree.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tprtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/tprtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libtprtree.la: $(libtprtree_la_OBJECTS) $(libtprtree_la_DEPENDENCIES) $(EXTRA_libtprtree_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libtprtree_la_OBJECTS) $(libtprtree_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Leaf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Statistics.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TPRTree.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/tprtree/Node.cc b/spatialindex-1.8.5/src/tprtree/Node.cc deleted file mode 100644 index 08686c6..0000000 --- a/spatialindex-1.8.5/src/tprtree/Node.cc +++ /dev/null @@ -1,1260 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -#include "TPRTree.h" -#include "Node.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::TPRTree; - -// -// libsupermesh::Tools::IObject interface -// -libsupermesh::Tools::IObject* Node::clone() -{ - throw libsupermesh::Tools::NotSupportedException("IObject::clone should never be called."); -} - -// -// libsupermesh::Tools::ISerializable interface -// -uint32_t Node::getByteArraySize() -{ - return - (sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(double) + - (m_children * (4 * m_pTree->m_dimension * sizeof(double) + sizeof(double) + sizeof(id_type) + sizeof(uint32_t))) + - m_totalDataLength + - (4 * m_pTree->m_dimension * sizeof(double))); -} - -void Node::loadFromByteArray(const byte* ptr) -{ - m_nodeMBR = m_pTree->m_infiniteRegion; - - // skip the node type information, it is not needed. - ptr += sizeof(uint32_t); - - memcpy(&m_level, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&m_children, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&(m_nodeMBR.m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - m_nodeMBR.m_endTime = std::numeric_limits::max(); - //memcpy(&(m_nodeMBR.m_endTime), ptr, sizeof(double)); - //ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_ptrMBR[cChild] = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->makeDimension(m_pTree->m_dimension); - - memcpy(m_ptrMBR[cChild]->m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pVLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pVHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(&(m_ptrMBR[cChild]->m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - m_ptrMBR[cChild]->m_endTime = std::numeric_limits::max(); - - memcpy(&(m_pIdentifier[cChild]), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(&(m_pDataLength[cChild]), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - m_totalDataLength += m_pDataLength[cChild]; - m_pData[cChild] = new byte[m_pDataLength[cChild]]; - memcpy(m_pData[cChild], ptr, m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - else - { - m_pData[cChild] = 0; - } - - //m_nodeMBR.combineRegion(*(m_ptrMBR[cChild])); - } - - memcpy(m_nodeMBR.m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pVLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pVHigh, ptr, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -void Node::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - - *data = new byte[len]; - byte* ptr = *data; - - uint32_t nodeType; - - if (m_level == 0) nodeType = PersistentLeaf; - else nodeType = PersistentIndex; - - memcpy(ptr, &nodeType, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_level, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_children, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &(m_nodeMBR.m_startTime), sizeof(double)); - ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - memcpy(ptr, m_ptrMBR[cChild]->m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pVLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pVHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, &(m_ptrMBR[cChild]->m_startTime), sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, &(m_pIdentifier[cChild]), sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(ptr, &(m_pDataLength[cChild]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - memcpy(ptr, m_pData[cChild], m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - } - - // store the node MBR for efficiency. This increases the node size a little bit. - memcpy(ptr, m_nodeMBR.m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pVLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pVHigh, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); - - assert(len == (ptr - *data) + m_pTree->m_dimension * sizeof(double)); -} - -// -// libsupermesh::SpatialIndex::IEntry interface -// -libsupermesh::SpatialIndex::id_type Node::getIdentifier() const -{ - return m_identifier; -} - -void Node::getShape(IShape** out) const -{ - *out = new MovingRegion(m_nodeMBR); -} - -// -// libsupermesh::SpatialIndex::INode interface -// -uint32_t Node::getChildrenCount() const -{ - return m_children; -} - -libsupermesh::SpatialIndex::id_type Node::getChildIdentifier(uint32_t index) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pIdentifier[index]; -} - -void Node::getChildShape(uint32_t index, IShape** out) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - *out = new MovingRegion(*(m_ptrMBR[index])); -} - -void Node::getChildData(uint32_t index, uint32_t& length, byte** data) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - if (m_pData[index] == NULL) - { - length = 0; - data = NULL; - } - else - { - length = m_pDataLength[index]; - *data = m_pData[index]; - } -} - -uint32_t Node::getLevel() const -{ - return m_level; -} - -bool Node::isLeaf() const -{ - return (m_level == 0); -} - -bool Node::isIndex() const -{ - return (m_level != 0); -} - -// -// Internal -// - -Node::Node() : - m_pTree(0), - m_level(0), - m_identifier(-1), - m_children(0), - m_capacity(0), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ -} - -Node::Node(libsupermesh::SpatialIndex::TPRTree::TPRTree* pTree, id_type id, uint32_t level, uint32_t capacity) : - m_pTree(pTree), - m_level(level), - m_identifier(id), - m_children(0), - m_capacity(capacity), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ - m_nodeMBR.makeInfinite(m_pTree->m_dimension); - - try - { - m_pDataLength = new uint32_t[m_capacity + 1]; - m_pData = new byte*[m_capacity + 1]; - m_ptrMBR = new MovingRegionPtr[m_capacity + 1]; - m_pIdentifier = new id_type[m_capacity + 1]; - } - catch (...) - { - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - throw; - } -} - -Node::~Node() -{ - if (m_pData != 0) - { - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_pData[cChild] != 0) delete[] m_pData[cChild]; - } - - delete[] m_pData; - } - - delete[] m_pDataLength; - delete[] m_ptrMBR; - delete[] m_pIdentifier; -} - -Node& Node::operator=(const Node&) -{ - throw libsupermesh::Tools::IllegalStateException("Node::operator =: This should never be called."); -} - -bool Node::insertEntry(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id) -{ - assert(m_children < m_capacity); - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - m_totalDataLength += dataLength; - ++m_children; - - if (m_nodeMBR.m_startTime != m_pTree->m_currentTime) - { - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - } - else if ( - //m_nodeMBR.m_pLow[0] != std::numeric_limits::max() && - ! m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, mbr)) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - double l = m_nodeMBR.getExtrapolatedLow(cDim, m_pTree->m_currentTime); - double rl = mbr.getExtrapolatedLow(cDim, m_pTree->m_currentTime); - if (rl <= l) - { - m_nodeMBR.m_pLow[cDim] = rl - 2.0 * std::numeric_limits::epsilon(); - } - - double h = m_nodeMBR.getExtrapolatedHigh(cDim, m_pTree->m_currentTime); - double rh = mbr.getExtrapolatedHigh(cDim, m_pTree->m_currentTime); - if (rh >= h) - { - m_nodeMBR.m_pHigh[cDim] = rh + 2.0 * std::numeric_limits::epsilon(); - } - - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], mbr.m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], mbr.m_pVHigh[cDim]); - } - } - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_nodeMBR.m_startTime, *(m_ptrMBR[cChild]))); - } -#endif - - return true; -} - -void Node::deleteEntry(uint32_t index) -{ - assert(index >= 0 && index < m_children); - - // cache it, since I might need it for "touches" later. - MovingRegionPtr ptrR = m_ptrMBR[index]; - - m_totalDataLength -= m_pDataLength[index]; - if (m_pData[index] != 0) delete[] m_pData[index]; - - if (m_children > 1 && index != m_children - 1) - { - m_pDataLength[index] = m_pDataLength[m_children - 1]; - m_pData[index] = m_pData[m_children - 1]; - m_ptrMBR[index] = m_ptrMBR[m_children - 1]; - m_pIdentifier[index] = m_pIdentifier[m_children - 1]; - } - - --m_children; - - // WARNING: index has now changed. Do not use it below here. - - if (m_children == 0) - { - m_nodeMBR = m_pTree->m_infiniteRegion; - } - else //if (m_pTree->m_bTightMBRs && m_nodeMBR.touchesRegion(*ptrR)) - { - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, *(m_ptrMBR[cChild])) == true); - } -#endif - } -} - -bool Node::insertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable) -{ - if (m_children < m_capacity) - { - bool bNeedToAdjust = insertEntry(dataLength, pData, mbr, id); - m_pTree->writeNode(this); - - if (bNeedToAdjust && ! pathBuffer.empty()) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } - - return bNeedToAdjust; - } - else if (false && m_pTree->m_treeVariant == TPRV_RSTAR && ! pathBuffer.empty() && overflowTable[m_level] == 0) - { - overflowTable[m_level] = 1; - - std::vector vReinsert, vKeep; - reinsertData(dataLength, pData, mbr, id, vReinsert, vKeep); - - uint32_t lReinsert = static_cast(vReinsert.size()); - uint32_t lKeep = static_cast(vKeep.size()); - - byte** reinsertdata = 0; - MovingRegionPtr* reinsertmbr = 0; - id_type* reinsertid = 0; - uint32_t* reinsertlen = 0; - byte** keepdata = 0; - MovingRegionPtr* keepmbr = 0; - id_type* keepid = 0; - uint32_t* keeplen = 0; - - try - { - reinsertdata = new byte*[lReinsert]; - reinsertmbr = new MovingRegionPtr[lReinsert]; - reinsertid = new id_type[lReinsert]; - reinsertlen = new uint32_t[lReinsert]; - - keepdata = new byte*[m_capacity + 1]; - keepmbr = new MovingRegionPtr[m_capacity + 1]; - keepid = new id_type[m_capacity + 1]; - keeplen = new uint32_t[m_capacity + 1]; - } - catch (...) - { - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - delete[] keepdata; - delete[] keepmbr; - delete[] keepid; - delete[] keeplen; - throw; - } - - uint32_t cIndex; - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - reinsertlen[cIndex] = m_pDataLength[vReinsert[cIndex]]; - reinsertdata[cIndex] = m_pData[vReinsert[cIndex]]; - reinsertmbr[cIndex] = m_ptrMBR[vReinsert[cIndex]]; - reinsertid[cIndex] = m_pIdentifier[vReinsert[cIndex]]; - } - - for (cIndex = 0; cIndex < lKeep; ++cIndex) - { - keeplen[cIndex] = m_pDataLength[vKeep[cIndex]]; - keepdata[cIndex] = m_pData[vKeep[cIndex]]; - keepmbr[cIndex] = m_ptrMBR[vKeep[cIndex]]; - keepid[cIndex] = m_pIdentifier[vKeep[cIndex]]; - } - - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - - m_pDataLength = keeplen; - m_pData = keepdata; - m_ptrMBR = keepmbr; - m_pIdentifier = keepid; - m_children = lKeep; - m_totalDataLength = 0; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) m_totalDataLength += m_pDataLength[cChild]; - - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_nodeMBR.m_startTime, *(m_ptrMBR[cChild]))); - } -#endif - - m_pTree->writeNode(this); - - // Divertion from R*-Tree algorithm here. First adjust - // the path to the root, then start reinserts, to avoid complicated handling - // of changes to the same node from multiple insertions. - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - m_pTree->insertData_impl( - reinsertlen[cIndex], reinsertdata[cIndex], - *(reinsertmbr[cIndex]), reinsertid[cIndex], - m_level, overflowTable); - } - - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - - return true; - } - else - { - NodePtr n; - NodePtr nn; - split(dataLength, pData, mbr, id, n, nn); - - if (pathBuffer.empty()) - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = -1; - nn->m_identifier = -1; - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - assert(n->m_nodeMBR.containsRegionAfterTime(n->m_nodeMBR.m_startTime, *(n->m_ptrMBR[cChild])) == true); - } - for (uint32_t cChild = 0; cChild < nn->m_children; ++cChild) - { - assert(nn->m_nodeMBR.containsRegionAfterTime(nn->m_nodeMBR.m_startTime, *(nn->m_ptrMBR[cChild])) == true); - } -#endif - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - NodePtr ptrR = m_pTree->m_indexPool.acquire(); - if (ptrR.get() == 0) - { - ptrR = NodePtr(new Index(m_pTree, m_pTree->m_rootID, m_level + 1), &(m_pTree->m_indexPool)); - } - else - { - //ptrR->m_pTree = m_pTree; - ptrR->m_identifier = m_pTree->m_rootID; - ptrR->m_level = m_level + 1; - ptrR->m_nodeMBR = m_pTree->m_infiniteRegion; - } - - ptrR->insertEntry(0, 0, n->m_nodeMBR, n->m_identifier); - ptrR->insertEntry(0, 0, nn->m_nodeMBR, nn->m_identifier); - - m_pTree->writeNode(ptrR.get()); - - m_pTree->m_stats.m_nodesInLevel[m_level] = 2; - m_pTree->m_stats.m_nodesInLevel.push_back(1); - m_pTree->m_stats.m_treeHeight = m_level + 2; - } - else - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = m_identifier; - nn->m_identifier = -1; - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - assert(n->m_nodeMBR.containsRegionAfterTime(n->m_nodeMBR.m_startTime, *(n->m_ptrMBR[cChild])) == true); - } - for (uint32_t cChild = 0; cChild < nn->m_children; ++cChild) - { - assert(nn->m_nodeMBR.containsRegionAfterTime(nn->m_nodeMBR.m_startTime, *(nn->m_ptrMBR[cChild])) == true); - } -#endif - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(n.get(), nn.get(), pathBuffer, overflowTable); - } - - return true; - } -} - -void Node::reinsertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& reinsert, std::vector& keep) -{ - ReinsertEntry** v = new ReinsertEntry*[m_capacity + 1]; - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - for (uint32_t cChild = 0; cChild < m_capacity + 1; ++cChild) - { - try - { - v[cChild] = new ReinsertEntry(cChild, 0.0); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete v[i]; - delete[] v; - throw; - } - - v[cChild]->m_dist = m_nodeMBR.getCenterDistanceInTime(ivT, *(m_ptrMBR[cChild])); - } - - // sort by increasing order of distances. - ::qsort(v, m_capacity + 1, sizeof(ReinsertEntry*), ReinsertEntry::compareReinsertEntry); - - uint32_t cReinsert = static_cast(std::floor((m_capacity + 1) * m_pTree->m_reinsertFactor)); - - uint32_t cCount; - - for (cCount = 0; cCount < cReinsert; ++cCount) - { - reinsert.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - for (cCount = cReinsert; cCount < m_capacity + 1; ++cCount) - { - keep.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - delete[] v; -} - -/* -void Node::rtreeSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - uint32_t cChild; - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - // use this mask array for marking visited entries. - byte* mask = new byte[m_capacity + 1]; - memset(mask, 0, m_capacity + 1); - - // insert new data in the node for easier manipulation. Data arrays are always - // by one larger than node capacity. - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - - // initialize each group with the seed entries. - uint32_t seed1, seed2; - pickSeeds(seed1, seed2); - - group1.push_back(seed1); - group2.push_back(seed2); - - mask[seed1] = 1; - mask[seed2] = 1; - - // find MBR of each group. - RegionPtr mbr1 = m_pTree->m_regionPool.acquire(); - *mbr1 = *(m_ptrMBR[seed1]); - RegionPtr mbr2 = m_pTree->m_regionPool.acquire(); - *mbr2 = *(m_ptrMBR[seed2]); - - // count how many entries are left unchecked (exclude the seeds here.) - uint32_t cRemaining = m_capacity + 1 - 2; - - while (cRemaining > 0) - { - if (minimumLoad - group1.size() == cRemaining) - { - // all remaining entries must be assigned to group1 to comply with minimun load requirement. - for (cChild = 0; cChild < m_capacity + 1; ++cChild) - { - if (mask[cChild] == 0) - { - group1.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else if (minimumLoad - group2.size() == cRemaining) - { - // all remaining entries must be assigned to group2 to comply with minimun load requirement. - for (cChild = 0; cChild < m_capacity + 1; ++cChild) - { - if (mask[cChild] == 0) - { - group2.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else - { - // For all remaining entries compute the difference of the cost of grouping an - // entry in either group. When done, choose the entry that yielded the maximum - // difference. In case of linear split, select any entry (e.g. the first one.) - uint32_t sel; - double md1 = 0.0, md2 = 0.0; - double m = -std::numeric_limits::max(); - double d1, d2, d; - double a1 = mbr1->getArea(); - double a2 = mbr2->getArea(); - - RegionPtr a = m_pTree->m_regionPool.acquire(); - RegionPtr b = m_pTree->m_regionPool.acquire(); - - for (cChild = 0; cChild < m_capacity + 1; ++cChild) - { - if (mask[cChild] == 0) - { - mbr1->getCombinedRegion(*a, *(m_ptrMBR[cChild])); - d1 = a->getArea() - a1; - mbr2->getCombinedRegion(*b, *(m_ptrMBR[cChild])); - d2 = b->getArea() - a2; - d = std::abs(d1 - d2); - - if (d > m) - { - m = d; - md1 = d1; md2 = d2; - sel = cChild; - if (m_pTree->m_treeVariant== RV_LINEAR || m_pTree->m_treeVariant == RV_RSTAR) break; - } - } - } - - // determine the group where we should add the new entry. - int32_t group = -1; - - if (md1 < md2) - { - group1.push_back(sel); - group = 1; - } - else if (md2 < md1) - { - group2.push_back(sel); - group = 2; - } - else if (a1 < a2) - { - group1.push_back(sel); - group = 1; - } - else if (a2 < a1) - { - group2.push_back(sel); - group = 2; - } - else if (group1.size() < group2.size()) - { - group1.push_back(sel); - group = 1; - } - else if (group2.size() < group1.size()) - { - group2.push_back(sel); - group = 2; - } - else - { - group1.push_back(sel); - group = 1; - } - mask[sel] = 1; - --cRemaining; - if (group == 1) - { - mbr1->combineRegion(*(m_ptrMBR[sel])); - } - else - { - mbr2->combineRegion(*(m_ptrMBR[sel])); - } - } - } - - delete[] mask; -} -*/ - -void Node::rstarSplit(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - RstarSplitEntry** dataLow = 0; - RstarSplitEntry** dataHigh = 0; - RstarSplitEntry** dataVLow = 0; - RstarSplitEntry** dataVHigh = 0; - - try - { - dataLow = new RstarSplitEntry*[m_capacity + 1]; - dataHigh = new RstarSplitEntry*[m_capacity + 1]; - dataVLow = new RstarSplitEntry*[m_capacity + 1]; - dataVHigh = new RstarSplitEntry*[m_capacity + 1]; - } - catch (...) - { - delete[] dataLow; - delete[] dataHigh; - delete[] dataVLow; - delete[] dataVHigh; - throw; - } - - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - - uint32_t nodeSPF = static_cast(std::floor((m_capacity + 1) * m_pTree->m_splitDistributionFactor)); - uint32_t splitDistribution = (m_capacity + 1) - (2 * nodeSPF) + 2; - - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - uint32_t cChild = 0, cDim, cIndex; - - for (cChild = 0; cChild <= m_capacity; ++cChild) - { - try - { - dataLow[cChild] = new RstarSplitEntry(m_ptrMBR[cChild].get(), cChild, 0); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete dataLow[i]; - delete[] dataLow; - delete[] dataHigh; - throw; - } - - dataHigh[cChild] = dataLow[cChild]; - dataVLow[cChild] = dataLow[cChild]; - dataVHigh[cChild] = dataLow[cChild]; - } - - double minimumMargin = std::numeric_limits::max(); - uint32_t splitAxis = std::numeric_limits::max(); - uint32_t sortOrder = std::numeric_limits::max(); - - // chooseSplitAxis. - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareLow); - ::qsort(dataHigh, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareHigh); - ::qsort(dataVLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVLow); - ::qsort(dataVHigh, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVHigh); - - // calculate sum of margins and overlap for all distributions. - double marginl = 0.0; - double marginh = 0.0; - double marginvl = 0.0; - double marginvh = 0.0; - - MovingRegion bbl1, bbl2, bbh1, bbh2; - MovingRegion bbvl1, bbvl2, bbvh1, bbvh2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bbl1 = *(dataLow[0]->m_pRegion); - bbh1 = *(dataHigh[0]->m_pRegion); - bbvl1 = *(dataVLow[0]->m_pRegion); - bbvh1 = *(dataVHigh[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bbl1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - bbh1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataHigh[cIndex]->m_pRegion)); - bbvl1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVLow[cIndex]->m_pRegion)); - bbvh1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVHigh[cIndex]->m_pRegion)); - } - - bbl2 = *(dataLow[l]->m_pRegion); - bbh2 = *(dataHigh[l]->m_pRegion); - bbvl2 = *(dataVLow[l]->m_pRegion); - bbvh2 = *(dataVHigh[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bbl2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - bbh2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataHigh[cIndex]->m_pRegion)); - bbvl2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVLow[cIndex]->m_pRegion)); - bbvh2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVHigh[cIndex]->m_pRegion)); - } - - marginl += bbl1.getProjectedSurfaceAreaInTime(ivT) + bbl2.getProjectedSurfaceAreaInTime(ivT); - marginh += bbh1.getProjectedSurfaceAreaInTime(ivT) + bbh2.getProjectedSurfaceAreaInTime(ivT); - marginvl += bbvl1.getProjectedSurfaceAreaInTime(ivT) + bbvl2.getProjectedSurfaceAreaInTime(ivT); - marginvh += bbvh1.getProjectedSurfaceAreaInTime(ivT) + bbvh2.getProjectedSurfaceAreaInTime(ivT); - } // for (cChild) - - double margin = std::min(std::min(marginl, marginh), std::min(marginvl, marginvh)); - - // keep minimum margin as split axis. - if (margin < minimumMargin) - { - minimumMargin = margin; - splitAxis = cDim; - if (marginl < marginh && marginl < marginvl && marginl < marginvh) sortOrder = 0; - else if (marginh < marginl && marginh < marginvl && marginh < marginvh) sortOrder = 1; - else if (marginvl < marginl && marginvl < marginh && marginvl < marginvh) sortOrder = 2; - else if (marginvh < marginl && marginvh < marginh && marginvh < marginvl) sortOrder = 3; - } - - // increase the dimension according to which the data entries should be sorted. - for (cChild = 0; cChild <= m_capacity; ++cChild) - { - dataLow[cChild]->m_sortDim = cDim + 1; - } - } // for (cDim) - - for (cChild = 0; cChild <= m_capacity; ++cChild) - { - dataLow[cChild]->m_sortDim = splitAxis; - } - - if (sortOrder == 0) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareLow); - else if (sortOrder == 1) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareHigh); - else if (sortOrder == 2) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVLow); - else if (sortOrder == 3) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVHigh); - - double ma = std::numeric_limits::max(); - double mo = std::numeric_limits::max(); - uint32_t splitPoint = std::numeric_limits::max(); - - MovingRegion bb1, bb2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bb1 = *(dataLow[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bb1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - } - - bb2 = *(dataLow[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bb2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - } - - double o = bb1.getIntersectingAreaInTime(ivT, bb2); - - if (o < mo) - { - splitPoint = cChild; - mo = o; - ma = bb1.getAreaInTime(ivT) + bb2.getAreaInTime(ivT); - } - else if (o == mo) - { - double a = bb1.getAreaInTime(ivT) + bb2.getAreaInTime(ivT); - - if (a < ma) - { - splitPoint = cChild; - ma = a; - } - } - } // for (cChild) - - uint32_t l1 = nodeSPF - 1 + splitPoint; - - for (cIndex = 0; cIndex < l1; ++cIndex) - { - group1.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - for (cIndex = l1; cIndex <= m_capacity; ++cIndex) - { - group2.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - delete[] dataLow; - delete[] dataHigh; - delete[] dataVLow; - delete[] dataVHigh; -} - -/* -void Node::pickSeeds(uint32_t& index1, uint32_t& index2) -{ - double separation = -std::numeric_limits::max(); - double inefficiency = -std::numeric_limits::max(); - uint32_t cDim, cChild, cIndex; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_RSTAR: - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - double leastLower = m_ptrMBR[0]->m_pLow[cDim]; - double greatestUpper = m_ptrMBR[0]->m_pHigh[cDim]; - uint32_t greatestLower = 0; - uint32_t leastUpper = 0; - double width; - - for (cChild = 1; cChild <= m_capacity; ++cChild) - { - if (m_ptrMBR[cChild]->m_pLow[cDim] > m_ptrMBR[greatestLower]->m_pLow[cDim]) greatestLower = cChild; - if (m_ptrMBR[cChild]->m_pHigh[cDim] < m_ptrMBR[leastUpper]->m_pHigh[cDim]) leastUpper = cChild; - - leastLower = std::min(m_ptrMBR[cChild]->m_pLow[cDim], leastLower); - greatestUpper = std::max(m_ptrMBR[cChild]->m_pHigh[cDim], greatestUpper); - } - - width = greatestUpper - leastLower; - if (width <= 0) width = 1; - - double f = (m_ptrMBR[greatestLower]->m_pLow[cDim] - m_ptrMBR[leastUpper]->m_pHigh[cDim]) / width; - - if (f > separation) - { - index1 = leastUpper; - index2 = greatestLower; - separation = f; - } - } // for (cDim) - - if (index1 == index2) - { - if (index2 == 0) ++index2; - else --index2; - } - - break; - case RV_QUADRATIC: - // for each pair of Regions (account for overflow Region too!) - for (cChild = 0; cChild < m_capacity; ++cChild) - { - double a = m_ptrMBR[cChild]->getArea(); - - for (cIndex = cChild + 1; cIndex <= m_capacity; ++cIndex) - { - // get the combined MBR of those two entries. - Region r; - m_ptrMBR[cChild]->getCombinedRegion(r, *(m_ptrMBR[cIndex])); - - // find the inefficiency of grouping these entries together. - double d = r.getArea() - a - m_ptrMBR[cIndex]->getArea(); - - if (d > inefficiency) - { - inefficiency = d; - index1 = cChild; - index2 = cIndex; - } - } // for (cIndex) - } // for (cChild) - - break; - default: - throw libsupermesh::Tools::NotSupportedException("Node::pickSeeds: Tree variant not supported."); - } -} -*/ - -void Node::condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis) -{ - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - if (pathBuffer.empty()) - { - // eliminate root if it has only one child. - if (m_level != 0 && m_children == 1) - { - NodePtr ptrN = m_pTree->readNode(m_pIdentifier[0]); - m_pTree->deleteNode(ptrN.get()); - ptrN->m_identifier = m_pTree->m_rootID; - m_pTree->writeNode(ptrN.get()); - - m_pTree->m_stats.m_nodesInLevel.pop_back(); - m_pTree->m_stats.m_treeHeight -= 1; - // HACK: pending deleteNode for deleted child will decrease nodesInLevel, later on. - m_pTree->m_stats.m_nodesInLevel[m_pTree->m_stats.m_treeHeight - 1] = 2; - } - } - else - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrParent = m_pTree->readNode(cParent); - Index* p = static_cast(ptrParent.get()); - - // find the entry in the parent, that points to this node. - uint32_t child; - - for (child = 0; child != p->m_children; ++child) - { - if (p->m_pIdentifier[child] == m_identifier) break; - } - - if (m_children < minimumLoad) - { - // used space less than the minimum - // 1. eliminate node entry from the parent. deleteEntry will fix the parent's MBR. - p->deleteEntry(child); - // 2. add this node to the stack in order to reinsert its entries. - toReinsert.push(ptrThis); - } - else - { - // adjust the entry in 'p' to contain the new bounding region of this node. - *(p->m_ptrMBR[child]) = m_nodeMBR; - - // global recalculation necessary since the MBR can only shrink in size, - // due to data removal. - //if (m_pTree->m_bTightMBRs) - //{ - - p->m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < p->m_nodeMBR.m_dimension; ++cDim) - { - p->m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - p->m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - p->m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - p->m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - p->m_nodeMBR.m_pLow[cDim] = std::min(p->m_nodeMBR.m_pLow[cDim], p->m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_pTree->m_currentTime)); - p->m_nodeMBR.m_pHigh[cDim] = std::max(p->m_nodeMBR.m_pHigh[cDim], p->m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_pTree->m_currentTime)); - p->m_nodeMBR.m_pVLow[cDim] = std::min(p->m_nodeMBR.m_pVLow[cDim], p->m_ptrMBR[cChild]->m_pVLow[cDim]); - p->m_nodeMBR.m_pVHigh[cDim] = std::max(p->m_nodeMBR.m_pVHigh[cDim], p->m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - p->m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - p->m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - //} - } - - // write parent node back to storage. - m_pTree->writeNode(p); - - p->condenseTree(toReinsert, pathBuffer, ptrParent); - } -} diff --git a/spatialindex-1.8.5/src/tprtree/Node.h b/spatialindex-1.8.5/src/tprtree/Node.h deleted file mode 100644 index df31050..0000000 --- a/spatialindex-1.8.5/src/tprtree/Node.h +++ /dev/null @@ -1,211 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class TPRTree; - class Leaf; - class Index; - class Node; - - typedef libsupermesh::Tools::PoolPointer NodePtr; - - class Node : public libsupermesh::SpatialIndex::INode - { - public: - virtual ~Node(); - - // - // libsupermesh::Tools::IObject interface - // - virtual libsupermesh::Tools::IObject* clone(); - - // - // libsupermesh::Tools::ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // libsupermesh::SpatialIndex::IEntry interface - // - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - - // - // libsupermesh::SpatialIndex::INode interface - // - virtual uint32_t getChildrenCount() const; - virtual id_type getChildIdentifier(uint32_t index) const; - virtual void getChildShape(uint32_t index, IShape** out) const; - virtual void getChildData(uint32_t index, uint32_t& length, byte** data) const; - virtual uint32_t getLevel() const; - virtual bool isIndex() const; - virtual bool isLeaf() const; - - private: - Node(); - Node(TPRTree* pTree, id_type id, uint32_t level, uint32_t capacity); - - virtual Node& operator=(const Node&); - - virtual bool insertEntry(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id); - virtual void deleteEntry(uint32_t index); - - virtual bool insertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable); - virtual void reinsertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& reinsert, std::vector& keep); - - virtual void rstarSplit(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& group1, std::vector& group2); - - virtual void condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis); - - virtual NodePtr chooseSubtree(const MovingRegion& mbr, uint32_t level, std::stack& pathBuffer) = 0; - virtual NodePtr findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer) = 0; - - virtual void split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& left, NodePtr& right) = 0; - - TPRTree* m_pTree; - // Parent of all nodes. - - uint32_t m_level; - // The level of the node in the tree. - // Leaves are always at level 0. - - id_type m_identifier; - // The unique ID of this node. - - uint32_t m_children; - // The number of children pointed by this node. - - uint32_t m_capacity; - // Specifies the node capacity. - - MovingRegion m_nodeMBR; - // The minimum bounding region enclosing all data contained in the node. - - byte** m_pData; - // The data stored in the node. - - MovingRegionPtr* m_ptrMBR; - // The corresponding data MBRs. - - id_type* m_pIdentifier; - // The corresponding data identifiers. - - uint32_t* m_pDataLength; - - uint32_t m_totalDataLength; - - class RstarSplitEntry - { - public: - MovingRegion* m_pRegion; - uint32_t m_index; - uint32_t m_sortDim; - - RstarSplitEntry(MovingRegion* pr, uint32_t index, uint32_t dimension) - : m_pRegion(pr), m_index(index), m_sortDim(dimension) {} - - static int compareLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] < pe2->m_pRegion->m_pLow[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] > pe2->m_pRegion->m_pLow[pe1->m_sortDim]) return 1; - return 0; - } - - static int compareHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pHigh[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pHigh[pe1->m_sortDim]) return 1; - return 0; - } - - static int compareVLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pVLow[pe1->m_sortDim] < pe2->m_pRegion->m_pVLow[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pVLow[pe1->m_sortDim] > pe2->m_pRegion->m_pVLow[pe1->m_sortDim]) return 1; - return 0; - } - - static int compareVHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pVHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pVHigh[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pVHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pVHigh[pe1->m_sortDim]) return 1; - return 0; - } - }; // RstarSplitEntry - - class ReinsertEntry - { - public: - uint32_t m_index; - double m_dist; - - ReinsertEntry(uint32_t index, double dist) : m_index(index), m_dist(dist) {} - - static int compareReinsertEntry(const void* pv1, const void* pv2) - { - ReinsertEntry* pe1 = * (ReinsertEntry**) pv1; - ReinsertEntry* pe2 = * (ReinsertEntry**) pv2; - - if (pe1->m_dist < pe2->m_dist) return -1; - if (pe1->m_dist > pe2->m_dist) return 1; - return 0; - } - }; // ReinsertEntry - - // Needed to access protected members without having to cast from Node. - // It is more efficient than using member functions to access protected members. - friend class TPRTree; - friend class Leaf; - friend class Index; - friend class libsupermesh::Tools::PointerPool; - }; // Node - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/PointerPoolNode.h b/spatialindex-1.8.5/src/tprtree/PointerPoolNode.h deleted file mode 100644 index 68ab80c..0000000 --- a/spatialindex-1.8.5/src/tprtree/PointerPoolNode.h +++ /dev/null @@ -1,145 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Node.h" - -namespace libsupermesh { namespace Tools -{ - using namespace libsupermesh::SpatialIndex; - template<> class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - TPRTree::Node* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - if (! m_pool.empty()) - { - TPRTree::Node* p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - ++m_hits; - #endif - - return PoolPointer(p, this); - } - #ifndef NDEBUG - else - { - // fixme: well sort of... - ++m_pointerCount; - ++m_misses; - } - #endif - - return PoolPointer(); - } - - void release(TPRTree::Node* p) - { - if (p != 0) - { - if (m_pool.size() < m_capacity) - { - if (p->m_pData != 0) - { - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - if (p->m_pData[cChild] != 0) delete[] p->m_pData[cChild]; - } - } - - p->m_level = 0; - p->m_identifier = -1; - p->m_children = 0; - p->m_totalDataLength = 0; - - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - protected: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - diff --git a/spatialindex-1.8.5/src/tprtree/Statistics.cc b/spatialindex-1.8.5/src/tprtree/Statistics.cc deleted file mode 100644 index 863c81b..0000000 --- a/spatialindex-1.8.5/src/tprtree/Statistics.cc +++ /dev/null @@ -1,183 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "Statistics.h" - -using namespace libsupermesh::SpatialIndex::TPRTree; - -Statistics::Statistics() -{ - reset(); -} - -Statistics::Statistics(const Statistics& s) -{ - m_reads = s.m_reads; - m_writes = s.m_writes; - m_splits = s.m_splits; - m_hits = s.m_hits; - m_misses = s.m_misses; - m_nodes = s.m_nodes; - m_adjustments = s.m_adjustments; - m_queryResults = s.m_queryResults; - m_data = s.m_data; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; -} - -Statistics::~Statistics() -{ -} - -Statistics& Statistics::operator=(const Statistics& s) -{ - if (this != &s) - { - m_reads = s.m_reads; - m_writes = s.m_writes; - m_splits = s.m_splits; - m_hits = s.m_hits; - m_misses = s.m_misses; - m_nodes = s.m_nodes; - m_adjustments = s.m_adjustments; - m_queryResults = s.m_queryResults; - m_data = s.m_data; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; - } - - return *this; -} - -uint64_t Statistics::getReads() const -{ - return m_reads; -} - -uint64_t Statistics::getWrites() const -{ - return m_writes; -} - -uint32_t Statistics::getNumberOfNodes() const -{ - return m_nodes; -} - -uint64_t Statistics::getNumberOfData() const -{ - return m_data; -} - -uint64_t Statistics::getSplits() const -{ - return m_splits; -} - -uint64_t Statistics::getHits() const -{ - return m_hits; -} - -uint64_t Statistics::getMisses() const -{ - return m_misses; -} - -uint64_t Statistics::getAdjustments() const -{ - return m_adjustments; -} - -uint64_t Statistics::getQueryResults() const -{ - return m_queryResults; -} - -uint32_t Statistics::getTreeHeight() const -{ - return m_treeHeight; -} - -uint32_t Statistics::getNumberOfNodesInLevel(uint32_t l) const -{ - uint32_t cNodes; - try - { - cNodes = m_nodesInLevel.at(l); - } - catch (...) - { - throw libsupermesh::Tools::IndexOutOfBoundsException(l); - } - - return cNodes; -} - -void Statistics::reset() -{ - m_reads = 0; - m_writes = 0; - m_splits = 0; - m_hits = 0; - m_misses = 0; - m_nodes = 0; - m_adjustments = 0; - m_queryResults = 0; - m_data = 0; - m_treeHeight = 0; - m_nodesInLevel.clear(); -} - -std::ostream& libsupermesh::SpatialIndex::TPRTree::operator<<(std::ostream& os, const Statistics& s) -{ - os << "Reads: " << s.m_reads << std::endl - << "Writes: " << s.m_writes << std::endl - << "Hits: " << s.m_hits << std::endl - << "Misses: " << s.m_misses << std::endl - << "Tree height: " << s.m_treeHeight << std::endl - << "Number of data: " << s.m_data << std::endl - << "Number of nodes: " << s.m_nodes << std::endl; - - for (uint32_t cLevel = 0; cLevel < s.m_treeHeight; ++cLevel) - { - os << "Level " << cLevel << " pages: " << s.m_nodesInLevel[cLevel] << std::endl; - } - - os << "Splits: " << s.m_splits << std::endl - << "Adjustments: " << s.m_adjustments << std::endl - << "Query results: " << s.m_queryResults << std::endl; - - return os; -} diff --git a/spatialindex-1.8.5/src/tprtree/Statistics.h b/spatialindex-1.8.5/src/tprtree/Statistics.h deleted file mode 100644 index 6b8bc8c..0000000 --- a/spatialindex-1.8.5/src/tprtree/Statistics.h +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class TPRTree; - class Node; - class Leaf; - class Index; - - class Statistics : public libsupermesh::SpatialIndex::IStatistics - { - public: - Statistics(); - Statistics(const Statistics&); - virtual ~Statistics(); - Statistics& operator=(const Statistics&); - - // - // IStatistics interface - // - virtual uint64_t getReads() const; - virtual uint64_t getWrites() const; - virtual uint32_t getNumberOfNodes() const; - virtual uint64_t getNumberOfData() const; - - virtual uint64_t getSplits() const; - virtual uint64_t getHits() const; - virtual uint64_t getMisses() const; - virtual uint64_t getAdjustments() const; - virtual uint64_t getQueryResults() const; - virtual uint32_t getTreeHeight() const; - virtual uint32_t getNumberOfNodesInLevel(uint32_t l) const; - - private: - void reset(); - - uint64_t m_reads; - - uint64_t m_writes; - - uint64_t m_splits; - - uint64_t m_hits; - - uint64_t m_misses; - - uint32_t m_nodes; - - uint64_t m_adjustments; - - uint64_t m_queryResults; - - uint64_t m_data; - - uint32_t m_treeHeight; - - std::vector m_nodesInLevel; - - friend class TPRTree; - friend class Node; - friend class Index; - friend class Leaf; - friend class BulkLoader; - - friend std::ostream& operator<<(std::ostream& os, const Statistics& s); - }; // Statistics - - std::ostream& operator<<(std::ostream& os, const Statistics& s); - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/TPRTree.cc b/spatialindex-1.8.5/src/tprtree/TPRTree.cc deleted file mode 100644 index 51375cb..0000000 --- a/spatialindex-1.8.5/src/tprtree/TPRTree.cc +++ /dev/null @@ -1,1293 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include "Node.h" -#include "Leaf.h" -#include "Index.h" -#include "TPRTree.h" - -#include - -using namespace libsupermesh::SpatialIndex::TPRTree; - -libsupermesh::SpatialIndex::TPRTree::Data::Data(uint32_t len, byte* pData, MovingRegion& r, id_type id) - : m_id(id), m_region(r), m_pData(0), m_dataLength(len) -{ - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, pData, m_dataLength); - } -} - -libsupermesh::SpatialIndex::TPRTree::Data::~Data() -{ - delete[] m_pData; -} - -libsupermesh::SpatialIndex::TPRTree::Data* libsupermesh::SpatialIndex::TPRTree::Data::clone() -{ - return new Data(m_dataLength, m_pData, m_region, m_id); -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::TPRTree::Data::getIdentifier() const -{ - return m_id; -} - -void libsupermesh::SpatialIndex::TPRTree::Data::getShape(IShape** out) const -{ - *out = new MovingRegion(m_region); -} - -void libsupermesh::SpatialIndex::TPRTree::Data::getData(uint32_t& len, byte** data) const -{ - len = m_dataLength; - *data = 0; - - if (m_dataLength > 0) - { - *data = new byte[m_dataLength]; - memcpy(*data, m_pData, m_dataLength); - } -} - -uint32_t libsupermesh::SpatialIndex::TPRTree::Data::getByteArraySize() -{ - return - sizeof(id_type) + - sizeof(uint32_t) + - m_dataLength + - m_region.getByteArraySize(); -} - -void libsupermesh::SpatialIndex::TPRTree::Data::loadFromByteArray(const byte* ptr) -{ - memcpy(&m_id, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - delete[] m_pData; - m_pData = 0; - - memcpy(&m_dataLength, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, ptr, m_dataLength); - ptr += m_dataLength; - } - - m_region.loadFromByteArray(ptr); -} - -void libsupermesh::SpatialIndex::TPRTree::Data::storeToByteArray(byte** data, uint32_t& len) -{ - // it is thread safe this way. - uint32_t regionsize; - byte* regiondata = 0; - m_region.storeToByteArray(®iondata, regionsize); - - len = sizeof(id_type) + sizeof(uint32_t) + m_dataLength + regionsize; - - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_id, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_dataLength, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - memcpy(ptr, m_pData, m_dataLength); - ptr += m_dataLength; - } - - memcpy(ptr, regiondata, regionsize); - delete[] regiondata; - // ptr += regionsize; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::TPRTree::returnTPRTree(libsupermesh::SpatialIndex::IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::SpatialIndex::ISpatialIndex* si = new libsupermesh::SpatialIndex::TPRTree::TPRTree(sm, ps); - return si; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::TPRTree::createNewTPRTree( - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - TPRTreeVariant rv, - double horizon, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = fillFactor; - ps.setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = horizon; - ps.setProperty("Horizon", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = indexCapacity; - ps.setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = leafCapacity; - ps.setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = dimension; - ps.setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = rv; - ps.setProperty("TreeVariant", var); - - ISpatialIndex* ret = returnTPRTree(sm, ps); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var = ps.getProperty("IndexIdentifier"); - indexIdentifier = var.m_val.llVal; - - return ret; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::TPRTree::loadTPRTree(IStorageManager& sm, id_type indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = indexIdentifier; - ps.setProperty("IndexIdentifier", var); - - return returnTPRTree(sm, ps); -} - -libsupermesh::SpatialIndex::TPRTree::TPRTree::TPRTree(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_pStorageManager(&sm), - m_rootID(StorageManager::NewPage), - m_headerID(StorageManager::NewPage), - m_treeVariant(TPRV_RSTAR), - m_fillFactor(0.7), - m_indexCapacity(100), - m_leafCapacity(100), - m_nearMinimumOverlapFactor(32), - m_splitDistributionFactor(0.4), - m_reinsertFactor(0.3), - m_dimension(2), - m_bTightMBRs(true), - m_currentTime(0.0), - m_horizon(20.0), - m_pointPool(500), - m_regionPool(1000), - m_indexPool(100), - m_leafPool(100) -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_init(&m_lock, NULL); -#endif - - libsupermesh::Tools::Variant var = ps.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType == libsupermesh::Tools::VT_LONGLONG) m_headerID = var.m_val.llVal; - else if (var.m_varType == libsupermesh::Tools::VT_LONG) m_headerID = var.m_val.lVal; - // for backward compatibility only. - else throw libsupermesh::Tools::IllegalArgumentException("TPRTree: Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - initOld(ps); - } - else - { - initNew(ps); - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = m_headerID; - ps.setProperty("IndexIdentifier", var); - } -} - -libsupermesh::SpatialIndex::TPRTree::TPRTree::~TPRTree() -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_destroy(&m_lock); -#endif - - storeHeader(); -} - -// -// ISpatialIndex interface -// - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - const IEvolvingShape* es = dynamic_cast(&shape); - if (es == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IEvolvingShape interface."); - const libsupermesh::Tools::IInterval *pivI = dynamic_cast(&shape); - if (pivI == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IInterval interface."); - - if (pivI->getLowerBound() < m_currentTime) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape start time is older than tree current time."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - Region mbr; - shape.getMBR(mbr); - Region vbr; - es->getVMBR(vbr); - assert(mbr.m_dimension == vbr.m_dimension); - - MovingRegionPtr mr = m_regionPool.acquire(); - mr->makeDimension(mbr.m_dimension); - - memcpy(mr->m_pLow, mbr.m_pLow, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pHigh, mbr.m_pHigh, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVLow, vbr.m_pLow, vbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVHigh, vbr.m_pHigh, vbr.m_dimension * sizeof(double)); - mr->m_startTime = pivI->getLowerBound(); - mr->m_endTime = std::numeric_limits::max(); - - byte* buffer = 0; - - if (len > 0) - { - buffer = new byte[len]; - memcpy(buffer, pData, len); - } - - m_currentTime = mr->m_startTime; - insertData_impl(len, buffer, *mr, id); - // the buffer is stored in the tree. Do not delete here. -} - -// shape.m_startTime should be the time when the object was inserted initially. -// shape.m_endTime should be the time of the deletion (current time). -bool libsupermesh::SpatialIndex::TPRTree::TPRTree::deleteData(const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - const IEvolvingShape* es = dynamic_cast(&shape); - if (es == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IEvolvingShape interface."); - const libsupermesh::Tools::IInterval *pivI = dynamic_cast(&shape); - if (pivI == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IInterval interface."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - Region mbr; - shape.getMBR(mbr); - Region vbr; - es->getVMBR(vbr); - assert(mbr.m_dimension == vbr.m_dimension); - - MovingRegionPtr mr = m_regionPool.acquire(); - mr->makeDimension(mbr.m_dimension); - - memcpy(mr->m_pLow, mbr.m_pLow, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pHigh, mbr.m_pHigh, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVLow, vbr.m_pLow, vbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVHigh, vbr.m_pHigh, vbr.m_dimension * sizeof(double)); - mr->m_startTime = pivI->getLowerBound(); - mr->m_endTime = std::numeric_limits::max(); - - m_currentTime = pivI->getUpperBound(); - bool ret = deleteData_impl(*mr, id); - - return ret; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::containsWhatQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsWhatQuery: Shape has the wrong number of dimensions."); - rangeQuery(ContainmentQuery, query, v); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::intersectsWithQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsWithQuery: Shape has the wrong number of dimensions."); - rangeQuery(IntersectionQuery, query, v); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::pointLocationQuery(const Point& query, IVisitor& v) -{ - if (query.m_dimension != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape has the wrong number of dimensions."); - Region r(query, query); - rangeQuery(IntersectionQuery, r, v); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::nearestNeighborQuery(uint32_t, const IShape&, IVisitor&, INearestNeighborComparator&) -{ - throw libsupermesh::Tools::IllegalStateException("nearestNeighborQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - NNComparator nnc; - nearestNeighborQuery(k, query, v, nnc); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::selfJoinQuery(const IShape&, IVisitor&) -{ - throw libsupermesh::Tools::IllegalStateException("selfJoinQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::queryStrategy(IQueryStrategy& qs) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - id_type next = m_rootID; - bool hasNext = true; - - while (hasNext) - { - NodePtr n = readNode(next); - qs.getNextEntry(*n, next, hasNext); - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::getIndexProperties(libsupermesh::Tools::PropertySet& out) const -{ - libsupermesh::Tools::Variant var; - - // dimension - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_dimension; - out.setProperty("Dimension", var); - - // index capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexCapacity; - out.setProperty("IndexCapacity", var); - - // leaf capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafCapacity; - out.setProperty("LeafCapacity", var); - - // Tree variant - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = m_treeVariant; - out.setProperty("TreeVariant", var); - - // fill factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_fillFactor; - out.setProperty("FillFactor", var); - - // horizon - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_horizon; - out.setProperty("Horizon", var); - - // near minimum overlap factor - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_nearMinimumOverlapFactor; - out.setProperty("NearMinimumOverlapFactor", var); - - // split distribution factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_splitDistributionFactor; - out.setProperty("SplitDistributionFactor", var); - - // reinsert factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_reinsertFactor; - out.setProperty("ReinsertFactor", var); - - // tight MBRs - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = m_bTightMBRs; - out.setProperty("EnsureTightMBRs", var); - - // index pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexPool.getCapacity(); - out.setProperty("IndexPoolCapacity", var); - - // leaf pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafPool.getCapacity(); - out.setProperty("LeafPoolCapacity", var); - - // region pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_regionPool.getCapacity(); - out.setProperty("RegionPoolCapacity", var); - - // point pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_pointPool.getCapacity(); - out.setProperty("PointPoolCapacity", var); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::addCommand(ICommand* pCommand, CommandType ct) -{ - switch (ct) - { - case CT_NODEREAD: - m_readNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEWRITE: - m_writeNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEDELETE: - m_deleteNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - } -} - -bool libsupermesh::SpatialIndex::TPRTree::TPRTree::isIndexValid() -{ - bool ret = true; - - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_level != m_stats.m_treeHeight - 1) - { - std::cerr << "Invalid tree height." << std::endl; - return false; - } - - std::map nodesInLevel; - nodesInLevel.insert(std::pair(root->m_level, 1)); - - ValidateEntry e(root->m_nodeMBR, root); - st.push(e); - - while (! st.empty()) - { - e = st.top(); st.pop(); - - MovingRegion tmpRegion; - tmpRegion = m_infiniteRegion; - - // I have to rely on the parent information here, since none of the node's - // children might have a reference time equal to their parents (e.g., after - // a split). - tmpRegion.m_startTime = e.m_parentMBR.m_startTime; - - for (uint32_t cDim = 0; cDim < tmpRegion.m_dimension; ++cDim) - { - tmpRegion.m_pLow[cDim] = std::numeric_limits::max(); - tmpRegion.m_pHigh[cDim] = -std::numeric_limits::max(); - tmpRegion.m_pVLow[cDim] = std::numeric_limits::max(); - tmpRegion.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - tmpRegion.m_pLow[cDim] = std::min(tmpRegion.m_pLow[cDim], e.m_pNode->m_ptrMBR[cChild]->getExtrapolatedLow(cDim, tmpRegion.m_startTime)); - tmpRegion.m_pHigh[cDim] = std::max(tmpRegion.m_pHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, tmpRegion.m_startTime)); - tmpRegion.m_pVLow[cDim] = std::min(tmpRegion.m_pVLow[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pVLow[cDim]); - tmpRegion.m_pVHigh[cDim] = std::max(tmpRegion.m_pVHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - tmpRegion.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - tmpRegion.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - - if (! (tmpRegion == e.m_pNode->m_nodeMBR)) - { - std::cerr << "Invalid parent information." << std::endl; - ret = false; - } - if (! (tmpRegion == e.m_parentMBR)) - { - std::cerr << "Error in parent." << std::endl; - ret = false; - } - - if (e.m_pNode->m_level != 0) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - NodePtr ptrN = readNode(e.m_pNode->m_pIdentifier[cChild]); - ValidateEntry tmpEntry(*(e.m_pNode->m_ptrMBR[cChild]), ptrN); - - std::map::iterator itNodes = nodesInLevel.find(tmpEntry.m_pNode->m_level); - - if (itNodes == nodesInLevel.end()) - { - nodesInLevel.insert(std::pair(tmpEntry.m_pNode->m_level, 1l)); - } - else - { - nodesInLevel[tmpEntry.m_pNode->m_level] = nodesInLevel[tmpEntry.m_pNode->m_level] + 1; - } - - st.push(tmpEntry); - } - } - } - - uint32_t nodes = 0; - for (uint32_t cLevel = 0; cLevel < m_stats.m_treeHeight; ++cLevel) - { - if (nodesInLevel[cLevel] != m_stats.m_nodesInLevel[cLevel]) - { - std::cerr << "Invalid nodesInLevel information." << std::endl; - ret = false; - } - - nodes += m_stats.m_nodesInLevel[cLevel]; - } - - if (nodes != m_stats.m_nodes) - { - std::cerr << "Invalid number of nodes information." << std::endl; - ret = false; - } - - return ret; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::getStatistics(IStatistics** out) const -{ - *out = new Statistics(m_stats); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::initNew(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != TPRV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of TPRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0) for RSTAR"); - - m_fillFactor = var.m_val.dblVal; - } - - // horizon - var = ps.getProperty("Horizon"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal == std::numeric_limits::max()) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Horizon must be libsupermesh::Tools::VT_DOUBLE and a positive constant"); - - m_horizon = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_leafCapacity = var.m_val.ulVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be greater than 1"); - - m_dimension = var.m_val.ulVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); - - m_stats.m_treeHeight = 1; - m_stats.m_nodesInLevel.push_back(0); - - Leaf root(this, -1); - m_rootID = writeNode(&root); - - storeHeader(); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::initOld(libsupermesh::Tools::PropertySet& ps) -{ - loadHeader(); - - // only some of the properties may be changed. - // the rest are just ignored. - - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != TPRV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of TPRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // horizon - var = ps.getProperty("Horizon"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal == std::numeric_limits::max()) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property Horizon must be libsupermesh::Tools::VT_DOUBLE and a positive constant"); - - m_horizon = var.m_val.dblVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::storeHeader() -{ - const uint32_t headerSize = - sizeof(id_type) + // m_rootID - sizeof(TPRTreeVariant) + // m_treeVariant - sizeof(double) + // m_fillFactor - sizeof(uint32_t) + // m_indexCapacity - sizeof(uint32_t) + // m_leafCapacity - sizeof(uint32_t) + // m_nearMinimumOverlapFactor - sizeof(double) + // m_splitDistributionFactor - sizeof(double) + // m_reinsertFactor - sizeof(uint32_t) + // m_dimension - sizeof(char) + // m_bTightMBRs - sizeof(uint32_t) + // m_stats.m_nodes - sizeof(uint64_t) + // m_stats.m_data - sizeof(double) + // m_currentTime - sizeof(double) + // m_horizon - sizeof(uint32_t) + // m_stats.m_treeHeight - m_stats.m_treeHeight * sizeof(uint32_t);// m_stats.m_nodesInLevel - - byte* header = new byte[headerSize]; - byte* ptr = header; - - memcpy(ptr, &m_rootID, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_treeVariant, sizeof(TPRTreeVariant)); - ptr += sizeof(TPRTreeVariant); - memcpy(ptr, &m_fillFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_indexCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_leafCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_nearMinimumOverlapFactor, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_splitDistributionFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_reinsertFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c = (char) m_bTightMBRs; - memcpy(ptr, &c, sizeof(char)); - ptr += sizeof(char); - memcpy(ptr, &(m_stats.m_nodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_data), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(ptr, &m_currentTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_horizon, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(m_stats.m_treeHeight), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_treeHeight; ++cLevel) - { - memcpy(ptr, &(m_stats.m_nodesInLevel[cLevel]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - m_pStorageManager->storeByteArray(m_headerID, headerSize, header); - - delete[] header; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::loadHeader() -{ - uint32_t headerSize; - byte* header = 0; - m_pStorageManager->loadByteArray(m_headerID, headerSize, &header); - - byte* ptr = header; - - memcpy(&m_rootID, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&m_treeVariant, ptr, sizeof(TPRTreeVariant)); - ptr += sizeof(TPRTreeVariant); - memcpy(&m_fillFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_indexCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_leafCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_nearMinimumOverlapFactor, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_splitDistributionFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_reinsertFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c; - memcpy(&c, ptr, sizeof(char)); - m_bTightMBRs = (c != 0); - ptr += sizeof(char); - memcpy(&(m_stats.m_nodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_data), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(&m_currentTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_horizon, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(m_stats.m_treeHeight), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_treeHeight; ++cLevel) - { - uint32_t cNodes; - memcpy(&cNodes, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - m_stats.m_nodesInLevel.push_back(cNodes); - } - - delete[] header; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mr, id_type id) -{ - assert(mr.getDimension() == m_dimension); - assert(m_currentTime <= mr.m_startTime); - - std::stack pathBuffer; - byte* overflowTable = 0; - - try - { - NodePtr root = readNode(m_rootID); - - overflowTable = new byte[root->m_level]; - memset(overflowTable, 0, root->m_level); - - NodePtr l = root->chooseSubtree(mr, 0, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mr, id, pathBuffer, overflowTable); - - delete[] overflowTable; - ++(m_stats.m_data); - } - catch (...) - { - delete[] overflowTable; - throw; - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mr, id_type id, uint32_t level, byte* overflowTable) -{ - assert(mr.getDimension() == m_dimension); - - std::stack pathBuffer; - NodePtr root = readNode(m_rootID); - NodePtr n = root->chooseSubtree(mr, level, pathBuffer); - - assert(n->m_level == level); - - if (n.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - n->insertData(dataLength, pData, mr, id, pathBuffer, overflowTable); -} - -bool libsupermesh::SpatialIndex::TPRTree::TPRTree::deleteData_impl(const MovingRegion& mr, id_type id) -{ - assert(mr.m_dimension == m_dimension); - - std::stack pathBuffer; - - NodePtr root = readNode(m_rootID); - NodePtr l = root->findLeaf(mr, id, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - - if (l.get() != 0) - { - Leaf* pL = static_cast(l.get()); - pL->deleteData(id, pathBuffer); - --(m_stats.m_data); - return true; - } - - return false; -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::TPRTree::TPRTree::writeNode(Node* n) -{ - byte* buffer; - uint32_t dataLength; - n->storeToByteArray(&buffer, dataLength); - - id_type page; - if (n->m_identifier < 0) page = StorageManager::NewPage; - else page = n->m_identifier; - - try - { - m_pStorageManager->storeByteArray(page, dataLength, buffer); - delete[] buffer; - } - catch (InvalidPageException& e) - { - delete[] buffer; - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("writeNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - if (n->m_identifier < 0) - { - n->m_identifier = page; - ++(m_stats.m_nodes); - -#ifndef NDEBUG - try - { - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel.at(n->m_level) + 1; - } - catch(...) - { - throw libsupermesh::Tools::IllegalStateException("writeNode: writing past the end of m_nodesInLevel."); - } -#else - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] + 1; -#endif - } - - ++(m_stats.m_writes); - - for (size_t cIndex = 0; cIndex < m_writeNodeCommands.size(); ++cIndex) - { - m_writeNodeCommands[cIndex]->execute(*n); - } - - return page; -} - -libsupermesh::SpatialIndex::TPRTree::NodePtr libsupermesh::SpatialIndex::TPRTree::TPRTree::readNode(id_type id) -{ - uint32_t dataLength; - byte* buffer; - - try - { - m_pStorageManager->loadByteArray(id, dataLength, &buffer); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("readNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - try - { - uint32_t nodeType; - memcpy(&nodeType, buffer, sizeof(uint32_t)); - - NodePtr n; - - if (nodeType == PersistentIndex) n = m_indexPool.acquire(); - else if (nodeType == PersistentLeaf) n = m_leafPool.acquire(); - else throw libsupermesh::Tools::IllegalStateException("readNode: failed reading the correct node type information"); - - if (n.get() == 0) - { - if (nodeType == PersistentIndex) n = NodePtr(new Index(this, -1, 0), &m_indexPool); - else if (nodeType == PersistentLeaf) n = NodePtr(new Leaf(this, -1), &m_leafPool); - } - - //n->m_pTree = this; - n->m_identifier = id; - n->loadFromByteArray(buffer); - - ++(m_stats.m_reads); - - for (size_t cIndex = 0; cIndex < m_readNodeCommands.size(); ++cIndex) - { - m_readNodeCommands[cIndex]->execute(*n); - } - - delete[] buffer; - return n; - } - catch (...) - { - delete[] buffer; - throw; - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::deleteNode(Node* n) -{ - try - { - m_pStorageManager->deleteByteArray(n->m_identifier); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("deleteNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - --(m_stats.m_nodes); - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] - 1; - - for (size_t cIndex = 0; cIndex < m_deleteNodeCommands.size(); ++cIndex) - { - m_deleteNodeCommands[cIndex]->execute(*n); - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v) -{ - const MovingRegion* mr = dynamic_cast(&query); - if (mr == 0) throw libsupermesh::Tools::IllegalArgumentException("rangeQuery: Shape has to be a moving region."); - if (mr->m_startTime < m_currentTime || mr->m_endTime >= m_currentTime + m_horizon) - throw libsupermesh::Tools::IllegalArgumentException("rangeQuery: Query time interval does not intersect current horizon."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_children > 0 && mr->intersectsRegionInTime(root->m_nodeMBR)) st.push(root); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - - if (n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - bool b; - if (type == ContainmentQuery) b = mr->containsRegionInTime(*(n->m_ptrMBR[cChild])); - else b = mr->intersectsRegionInTime(*(n->m_ptrMBR[cChild])); - - if (b) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_queryResults); - } - } - } - else - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (mr->intersectsRegionInTime(*(n->m_ptrMBR[cChild]))) st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -std::ostream& libsupermesh::SpatialIndex::TPRTree::operator<<(std::ostream& os, const TPRTree& t) -{ - os << "Dimension: " << t.m_dimension << std::endl - << "Fill factor: " << t.m_fillFactor << std::endl - << "Horizon: " << t.m_horizon << std::endl - << "Index capacity: " << t.m_indexCapacity << std::endl - << "Leaf capacity: " << t.m_leafCapacity << std::endl - << "Tight MBRs: " << ((t.m_bTightMBRs) ? "enabled" : "disabled") << std::endl; - - if (t.m_treeVariant == TPRV_RSTAR) - { - os << "Near minimum overlap factor: " << t.m_nearMinimumOverlapFactor << std::endl - << "Reinsert factor: " << t.m_reinsertFactor << std::endl - << "Split distribution factor: " << t.m_splitDistributionFactor << std::endl; - } - - if (t.m_stats.getNumberOfNodesInLevel(0) > 0) - os << "Utilization: " << 100 * t.m_stats.getNumberOfData() / (t.m_stats.getNumberOfNodesInLevel(0) * t.m_leafCapacity) << "%" << std::endl - << t.m_stats; - - #ifndef NDEBUG - os << "Leaf pool hits: " << t.m_leafPool.m_hits << std::endl - << "Leaf pool misses: " << t.m_leafPool.m_misses << std::endl - << "Index pool hits: " << t.m_indexPool.m_hits << std::endl - << "Index pool misses: " << t.m_indexPool.m_misses << std::endl - << "Region pool hits: " << t.m_regionPool.m_hits << std::endl - << "Region pool misses: " << t.m_regionPool.m_misses << std::endl - << "Point pool hits: " << t.m_pointPool.m_hits << std::endl - << "Point pool misses: " << t.m_pointPool.m_misses << std::endl; - #endif - - return os; -} diff --git a/spatialindex-1.8.5/src/tprtree/TPRTree.h b/spatialindex-1.8.5/src/tprtree/TPRTree.h deleted file mode 100644 index cc99cf6..0000000 --- a/spatialindex-1.8.5/src/tprtree/TPRTree.h +++ /dev/null @@ -1,208 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Statistics.h" -#include "Node.h" -#include "PointerPoolNode.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class TPRTree : public ISpatialIndex - { - class NNEntry; - - public: - TPRTree(IStorageManager&, libsupermesh::Tools::PropertySet&); - // String Value Description - // ---------------------------------------------- - // IndexIndentifier VT_LONG If specified an existing index will be openened from the supplied - // storage manager with the given index id. Behaviour is unspecified - // if the index id or the storage manager are incorrect. - // Dimension VT_ULONG Dimensionality of the data that will be inserted. - // IndexCapacity VT_ULONG The index node capacity. Default is 100. - // LeafCapactiy VT_ULONG The leaf node capacity. Default is 100. - // FillFactor VT_DOUBLE The fill factor. Default is 70% - // Horizon VT_DOUBLE Horizon. Default is 20.0. - // TreeVariant VT_LONG Can be one of Linear, Quadratic or Rstar. Default is Rstar - // NearMinimumOverlapFactor VT_ULONG Default is 32. - // SplitDistributionFactor VT_DOUBLE Default is 0.4 - // ReinsertFactor VT_DOUBLE Default is 0.3 - // EnsureTightMBRs VT_BOOL Default is true - // IndexPoolCapacity VT_LONG Default is 100 - // LeafPoolCapacity VT_LONG Default is 100 - // RegionPoolCapacity VT_LONG Default is 1000 - // PointPoolCapacity VT_LONG Default is 500 - - virtual ~TPRTree(); - - // - // ISpatialIndex interface - // - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type shapeIdentifier); - virtual bool deleteData(const IShape& shape, id_type id); - virtual void containsWhatQuery(const IShape& query, IVisitor& v); - virtual void intersectsWithQuery(const IShape& query, IVisitor& v); - virtual void pointLocationQuery(const Point& query, IVisitor& v); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator&); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v); - virtual void selfJoinQuery(const IShape& s, IVisitor& v); - virtual void queryStrategy(IQueryStrategy& qs); - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const; - virtual void addCommand(ICommand* pCommand, CommandType ct); - virtual bool isIndexValid(); - virtual void getStatistics(IStatistics** out) const; - - private: - void initNew(libsupermesh::Tools::PropertySet&); - void initOld(libsupermesh::Tools::PropertySet& ps); - void storeHeader(); - void loadHeader(); - - void insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id); - void insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, uint32_t level, byte* overflowTable); - bool deleteData_impl(const MovingRegion& mbr, id_type id); - - id_type writeNode(Node*); - NodePtr readNode(id_type id); - void deleteNode(Node*); - - void rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v); - - IStorageManager* m_pStorageManager; - - id_type m_rootID, m_headerID; - - TPRTreeVariant m_treeVariant; - - double m_fillFactor; - - uint32_t m_indexCapacity; - - uint32_t m_leafCapacity; - - uint32_t m_nearMinimumOverlapFactor; - // The R*-Tree 'p' constant, for calculating nearly minimum overlap cost. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.1] - - double m_splitDistributionFactor; - // The R*-Tree 'm' constant, for calculating spliting distributions. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.2] - - double m_reinsertFactor; - // The R*-Tree 'p' constant, for removing entries at reinserts. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.3] - - uint32_t m_dimension; - - MovingRegion m_infiniteRegion; - - Statistics m_stats; - - bool m_bTightMBRs; - - double m_currentTime; - - double m_horizon; - - libsupermesh::Tools::PointerPool m_pointPool; - libsupermesh::Tools::PointerPool m_regionPool; - libsupermesh::Tools::PointerPool m_indexPool; - libsupermesh::Tools::PointerPool m_leafPool; - - std::vector > m_writeNodeCommands; - std::vector > m_readNodeCommands; - std::vector > m_deleteNodeCommands; - -#ifdef HAVE_PTHREAD_H - pthread_mutex_t m_lock; -#endif - - class NNEntry - { - public: - id_type m_id; - IEntry* m_pEntry; - double m_minDist; - - NNEntry(id_type id, IEntry* e, double f) : m_id(id), m_pEntry(e), m_minDist(f) {} - ~NNEntry() {} - - struct ascending : public std::binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_minDist > __y->m_minDist; } - }; - }; // NNEntry - - class NNComparator : public INearestNeighborComparator - { - public: - double getMinimumDistance(const IShape& query, const IShape& entry) - { - return query.getMinimumDistance(entry); - } - - double getMinimumDistance(const IShape& query, const IData& data) - { - IShape* pS; - data.getShape(&pS); - double ret = query.getMinimumDistance(*pS); - delete pS; - return ret; - } - }; // NNComparator - - class ValidateEntry - { - public: - ValidateEntry(MovingRegion& r, NodePtr& pNode) : m_parentMBR(r), m_pNode(pNode) {} - - MovingRegion m_parentMBR; - NodePtr m_pNode; - }; // ValidateEntry - - friend class Node; - friend class Leaf; - friend class Index; - - friend std::ostream& operator<<(std::ostream& os, const TPRTree& t); - }; // TPRTree - - std::ostream& operator<<(std::ostream& os, const TPRTree& t); - } -} } diff --git a/spatialindex-1.8.5/test/CMakeLists.txt b/spatialindex-1.8.5/test/CMakeLists.txt deleted file mode 100644 index 84474bb..0000000 --- a/spatialindex-1.8.5/test/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -include_directories(../include) - -set (DIR geometry) -set (SOURCES - Intersection - ) - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() - -set (DIR rtree) -set (SOURCES - Exhaustive - Generator - RTreeBulkLoad - RTreeLoad - RTreeQuery) - - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() - -set (DIR mvrtree) -set (SOURCES - Exhaustive - Generator - MVRTreeLoad - MVRTreeQuery - ) - - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() - -set (DIR tprtree) -set (SOURCES - Exhaustive - Generator - TPRTreeLoad - TPRTreeQuery - ) - - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc ${DIR}/RandomGenerator.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() diff --git a/spatialindex-1.8.5/test/Makefile.am b/spatialindex-1.8.5/test/Makefile.am deleted file mode 100644 index 1555c95..0000000 --- a/spatialindex-1.8.5/test/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = geometry rtree mvrtree tprtree diff --git a/spatialindex-1.8.5/test/Makefile.in b/spatialindex-1.8.5/test/Makefile.in deleted file mode 100644 index 909daf1..0000000 --- a/spatialindex-1.8.5/test/Makefile.in +++ /dev/null @@ -1,607 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = test -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-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 -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = geometry rtree mvrtree tprtree -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/geometry/Intersection.cc b/spatialindex-1.8.5/test/geometry/Intersection.cc deleted file mode 100644 index a79f645..0000000 --- a/spatialindex-1.8.5/test/geometry/Intersection.cc +++ /dev/null @@ -1,81 +0,0 @@ -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -/* - * Test the Geometry - * Nowhere near complete, but it's something - */ -int main(int argc, char** argv) { - //define points - double c1[2] = {1.0, 0.0}; - double c2[2] = {3.0, 2.0}; - double c3[2] = {2.0, 0.0}; - double c4[2] = {2.0, 4.0}; - double c5[2] = {1.0, 1.0}; - double c6[2] = {2.5, 3.0}; - double c7[2] = {1.0, 2.0}; - double c8[2] = {0.0, -1.0}; - double c9[2] = {4.0, 3.0}; - Point p1 = Point(&c1[0], 2); - Point p2 = Point(&c2[0], 2); - Point p3 = Point(&c3[0], 2); - Point p4 = Point(&c4[0], 2); - Point p5 = Point(&c5[0], 2); - Point p6 = Point(&c6[0], 2); - Point p7 = Point(&c7[0], 2); - Point p8 = Point(&c8[0], 2); - Point p9 = Point(&c9[0], 2); - - double c3a[2] = {2.0, 3.0}; - Point p3a = Point(&c3a[0], 2); - - //Now Test LineSegment intersection - LineSegment ls1 = LineSegment(p1, p2); - LineSegment ls2 = LineSegment(p3, p4); - LineSegment ls3 = LineSegment(p3a, p4); - - if (!ls1.intersectsShape(ls2)) { - cerr << "Test failed: intersectsShape returned false, but should be true." << endl; - cerr << ls1 << ", " << ls2 << endl; - return -1; - } - - if (ls1.intersectsShape(ls3)) { - cerr << "Test failed: intersectsShape returned true, but should be false." << endl; - cerr << ls1 << ", " << ls3 << endl; - return -1; - } - - //Now LineSegment Region intersection - Region r1 = Region(p5, p6); - Region r2 = Region(p7, p6); - Region r3 = Region(p8, p9); - - if (!r1.intersectsShape(ls1) || !ls1.intersectsShape(r1)) { - cerr << "Test failed: intersectsShape returned false, but should be true." << endl; - cerr << r1 << ", " << ls1 << endl; - return -1; - } - - if (r2.intersectsShape(ls1) || ls1.intersectsShape(r2)) { - cerr << "Test failed: intersectsShape returned true, but should be false." << endl; - cerr << r2 << ", " << ls1 << endl; - return -1; - } - - // This is the contains test - if (!r3.intersectsShape(ls1) || !ls1.intersectsShape(r3)) { - cerr << "Test failed: intersectsShape returned false, but should be true." << endl; - cerr << r3 << ", " << ls1 << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/geometry/Makefile.am b/spatialindex-1.8.5/test/geometry/Makefile.am deleted file mode 100644 index fdd8c50..0000000 --- a/spatialindex-1.8.5/test/geometry/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Intersection -INCLUDES = -I../../include -Intersection_SOURCES = Intersection.cc -Intersection_LDADD = ../../libspatialindex.la diff --git a/spatialindex-1.8.5/test/geometry/Makefile.in b/spatialindex-1.8.5/test/geometry/Makefile.in deleted file mode 100644 index 382b16b..0000000 --- a/spatialindex-1.8.5/test/geometry/Makefile.in +++ /dev/null @@ -1,578 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Intersection$(EXEEXT) -subdir = test/geometry -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Intersection_OBJECTS = Intersection.$(OBJEXT) -Intersection_OBJECTS = $(am_Intersection_OBJECTS) -Intersection_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(Intersection_SOURCES) -DIST_SOURCES = $(Intersection_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Intersection_SOURCES = Intersection.cc -Intersection_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/geometry/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/geometry/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Intersection$(EXEEXT): $(Intersection_OBJECTS) $(Intersection_DEPENDENCIES) $(EXTRA_Intersection_DEPENDENCIES) - @rm -f Intersection$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Intersection_OBJECTS) $(Intersection_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intersection.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/mvrtree/Exhaustive.cc b/spatialindex-1.8.5/test/mvrtree/Exhaustive.cc deleted file mode 100644 index 9fd3b56..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Exhaustive.cc +++ /dev/null @@ -1,216 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - - -#include - -class TimeRegion -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - double m_startTime, m_endTime; - - TimeRegion() {} - - TimeRegion(double x1, double y1, double x2, double y2, double t1, double t2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - m_startTime = t1; - m_endTime = (t2 <= 0) ? std::numeric_limits::max() : t2; - } - - bool intersects(TimeRegion& r) - { - if (m_xmin > r.m_xmax || m_xmax < r.m_xmin || - m_ymin > r.m_ymax || m_ymax < r.m_ymin) return false; - - return true; - } - - bool intersectsInTime(TimeRegion& r) - { - //if (m_startTime != r.m_startTime && (m_endTime <= r.m_startTime || m_startTime >= r.m_endTime)) return false; - if (m_endTime <= r.m_startTime || m_startTime >= r.m_endTime) return false; - return intersects(r); - } - - double getMinDist(const TimeRegion& r) - { - double ret = 0.0; - - if (r.m_xmax < m_xmin) - ret += std::pow(m_xmin - r.m_xmax, 2.0); - else if (r.m_xmin > m_xmax) - ret += std::pow(r.m_xmin - m_xmax, 2.0); - - if (r.m_ymax < m_ymin) - ret += std::pow(m_ymin - r.m_ymax, 2.0); - else if (r.m_ymin > m_ymax) - ret += std::pow(r.m_ymin - m_ymax, 2.0); - - return ret; - } -}; - -class NNEntry -{ -public: - size_t m_id; - double m_dist; - - NNEntry(size_t id, double dist) : m_id(id), m_dist(dist) {} - - struct greater : public binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_dist > __y->m_dist; } - }; -}; - -int main(int argc, char** argv) -{ - if (argc != 3) - { - cerr << "Usage: " << argv[0] << " data_file query_type [intersection | 10NN]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[2], "intersection") == 0) queryType = 0; - else if (strcmp(argv[2], "10NN") == 0) queryType = 1; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file" << argv[1] << "." << endl; - return -1; - } - - multimap data; - size_t id; - uint32_t op; - double x1, x2, y1, y2, t; - - while (fin) - { - fin >> t >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; - - if (op == INSERT) - { - //insert - data.insert(pair(id, TimeRegion(x1, y1, x2, y2, t, std::numeric_limits::max()))); - } - else if (op == DELETE) - { - //delete - // find the live instance of id. - multimap::iterator it = data.find(id); - assert(it != data.end()); - while (it->first == id && it->second.m_endTime < std::numeric_limits::max()) it++; - assert(it->first == id); - (*it).second.m_endTime = t; - } - else if (op == QUERY) - { - size_t qt1, qt2; - fin >> qt1 >> qt2; - if (! fin.good()) continue; - - //query - if (queryType == 0) - { - TimeRegion query = TimeRegion(x1, y1, x2, y2, qt1, qt2); - for (multimap::iterator it = data.begin(); it != data.end(); it++) - { - if (query.intersectsInTime((*it).second)) cout << (*it).first << endl; - } - } - else - { - /* - TimeRegion query = TimeRegion(x1, y1, x1, y1, qt1, qt2); - - priority_queue, NNEntry::greater > queue; - - for (multimap::iterator it = data.begin(); it != data.end(); it++) - { - queue.push(new NNEntry((*it).first, (*it).second.getMinDist(query))); - } - - size_t count = 0; - double knearest = 0.0; - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - - if (count >= 10 && e->m_dist > knearest) break; - - //cout << e->m_id << " " << e->m_dist << endl; - cout << e->m_id << endl; - count++; - knearest = e->m_dist; - delete e; - } - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - delete e; - } - */ - } - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/Generator.cc b/spatialindex-1.8.5/test/mvrtree/Generator.cc deleted file mode 100644 index 4932190..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Generator.cc +++ /dev/null @@ -1,186 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -class Region -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - bool m_bIsDead; - - Region() : m_xmin(numeric_limits::max()), m_ymin(numeric_limits::max()), - m_xmax(numeric_limits::max()), m_ymax(numeric_limits::max()) {} - - Region(double x1, double y1, double x2, double y2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - m_bIsDead = false; - } -}; - -int main(int argc, char** argv) -{ - if (argc != 2) - { - cerr << "Usage: " << argv[0] << " number_of_data." << endl; - return -1; - } - - size_t numberOfObjects = atoi(argv[1]); - map data; - libsupermesh::Tools::Random rnd; - - for (size_t i = 0; i < numberOfObjects; i++) - { - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(pair(i, r)); - - cout << "0 " << INSERT << " " << i << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << endl; - } - - size_t nextID = numberOfObjects; - size_t A = static_cast(std::floor(static_cast(numberOfObjects) * 0.05)); - - for (size_t T = 1; T <= 100; T++) - { - cerr << (101 - T) << endl; - - if (T == 50) - { - // delete all entries and reinsert - for (map::iterator itMap = data.begin(); itMap != data.end(); itMap++) - { - if (! (*itMap).second.m_bIsDead) - { - (*itMap).second.m_bIsDead = true; - cout << "50 " << DELETE << " " << (*itMap).first << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << endl; - } - } - - for (size_t i = nextID; i < nextID + numberOfObjects; i++) - { - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(pair(i, r)); - - cout << "50 " << INSERT << " " << i << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << endl; - } - - nextID += numberOfObjects; - continue; - } - - set examined; - - for (size_t a = 0; a < A; a++) - { - // find an id that is not examined yet. - size_t id = static_cast(rnd.nextUniformLongLong(0, nextID)); - set::iterator itSet = examined.find(id); - while (itSet != examined.end() || data[id].m_bIsDead == true) - { - id = static_cast(rnd.nextUniformLongLong(0, nextID)); - itSet = examined.find(id); - } - examined.insert(id); - - map::iterator itMap = data.find(id); - assert(itMap != data.end() && (*itMap).second.m_bIsDead == false); - - cout << T << " " << DELETE << " " << id << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << endl; - (*itMap).second.m_bIsDead = true; - - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(pair(nextID, r)); - - cout << T << " " << INSERT << " " << nextID << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << endl; - examined.insert(nextID); - nextID++; - } - - double stx = rnd.nextUniformDouble(); - double sty = rnd.nextUniformDouble(); - size_t qt = rnd.nextUniformLongLong(0, T); - cout << T << " " << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << " " << qt << " " << qt + 2<< endl; - stx = rnd.nextUniformDouble(); - sty = rnd.nextUniformDouble(); - qt = rnd.nextUniformLongLong(0, T); - cout << T << " " << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << " " << qt << " " << qt + 2<< endl; - stx = rnd.nextUniformDouble(); - sty = rnd.nextUniformDouble(); - qt = rnd.nextUniformLongLong(0, T); - cout << T << " " << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << " " << qt << " " << qt + 2<< endl; - } - - // delete everything at the end (for testing the special case when the tree dies out completely) - for (map::iterator it = data.begin(); it != data.end(); it++) - { - if (! it->second.m_bIsDead) - { - cout << 102 << " " << DELETE << " " << it->first << " " << it->second.m_xmin << " " << it->second.m_ymin << " " - << it->second.m_xmax << " " << it->second.m_ymax << endl; - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc b/spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc deleted file mode 100644 index 56b8589..0000000 --- a/spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc +++ /dev/null @@ -1,220 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -// example of a Visitor pattern. -// see MVRTreeQuery for a more elaborate example. -class MyVisitor : public IVisitor -{ -public: - void visitNode(const INode& n) {} - - void visitData(const IData& d) - { - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) {} -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 5) - { - cerr << "Usage: " << argv[0] << " input_file tree_file capacity query_type [intersection | 10NN]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[4], "intersection") == 0) queryType = 0; - else if (strcmp(argv[4], "10NN") == 0) queryType = 1; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file " << argv[1] << "." << endl; - return -1; - } - - // Create a new storage manager with the provided base name and a 4K page size. - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - //StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // Create a new, empty, MVRTree with dimensionality 2, minimum load 70%, using "file" as - // the StorageManager and the RSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = MVRTree::createNewMVRTree(*diskfile, 0.7, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::MVRTree::RV_RSTAR, indexIdentifier); - - size_t count = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2, t; - double plow[2], phigh[2]; - - while (fin) - { - fin >> t >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - TimeRegion r = TimeRegion(plow, phigh, t, t, 2); - - //ostringstream os; - //os << r; - //string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see MVRTree::Node::load and MVRTree::Node::store for - // an example of how to do that). - - //tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - TimeRegion r = TimeRegion(plow, phigh, t, t, 2); - - if (tree->deleteData(r, id) == false) - { - cerr << "******ERROR******" << endl; - cerr << "Cannot delete id: " << id << " , count: " << count << endl; - return -1; - } - } - else if (op == QUERY) - { - size_t qt1, qt2; - fin >> qt1 >> qt2; - if (! fin.good()) continue; - - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - TimeRegion r = TimeRegion(plow, phigh, qt1, qt2, 2); - - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else - { - //Point p = Point(plow, 2); - //tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - cerr << "Operations: " << count << endl; - cerr << *tree; - //cerr << "Buffer hits: " << file->getHits() << endl; - cerr << "Index ID: " << indexIdentifier << endl; - - bool ret = tree->isIndexValid(); - if (ret == false) cerr << "ERROR: Structure is invalid!" << endl; - else cerr << "The stucture seems O.K." << endl; - - delete tree; - //delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc b/spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc deleted file mode 100644 index 4f8d39e..0000000 --- a/spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc +++ /dev/null @@ -1,279 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -// example of a Visitor pattern. -// findes the index and leaf IO for answering the query and prints -// the resulting data IDs to stdout. -class MyVisitor : public IVisitor -{ -public: - size_t m_indexIO; - size_t m_leafIO; - -public: - MyVisitor() : m_indexIO(0), m_leafIO(0) {} - - void visitNode(const INode& n) - { - if (n.isLeaf()) m_leafIO++; - else m_indexIO++; - } - - void visitData(const IData& d) - { - //IShape* pS; - //d.getShape(&pS); - // do something. - //delete pS; - - // data should be an array of characters representing a Region as a string. - //byte* pData = 0; - //size_t cLen = 0; - //d.getData(cLen, &pData); - // do something. - //string s = reinterpret_cast(pData); - //cout << s << endl; - //delete[] pData; - - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) {} -}; - -// example of a Strategy pattern. -// traverses the tree by level. -class MyQueryStrategy : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - queue ids; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - IShape* ps; - entry.getShape(&ps); - Region* pr = dynamic_cast(ps); - - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl << endl << endl; - // print node MBRs gnuplot style! - - delete ps; - - const INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 1) - { - for (size_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push(n->getChildIdentifier(cChild)); - } - } - - if (! ids.empty()) - { - nextEntry = ids.front(); ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } - } -}; - -// example of a Strategy pattern. -// find the total indexed space managed by the index (the MBR of the root). -class MyQueryStrategy2 : public IQueryStrategy -{ -public: - Region m_indexedSpace; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - // the first time we are called, entry points to the root. - - // stop after the root. - hasNext = false; - - IShape* ps; - entry.getShape(&ps); - ps->getMBR(m_indexedSpace); - delete ps; - } -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 4) - { - cerr << "Usage: " << argv[0] << " query_file tree_file query_type [intersection | 10NN]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[3], "intersection") == 0) queryType = 0; - else if (strcmp(argv[3], "10NN") == 0) queryType = 1; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open query file " << argv[1] << "." << endl; - return -1; - } - - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::loadDiskStorageManager(baseName); - // this will try to locate and open an already existing storage manager. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // If we need to open an existing tree stored in the storage manager, we only - // have to specify the index identifier as follows - ISpatialIndex* tree = MVRTree::loadMVRTree(*file, 1); - - size_t count = 0; - size_t indexIO = 0; - size_t leafIO = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2, t; - double plow[2], phigh[2]; - - while (fin) - { - fin >> t >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == QUERY) - { - size_t qt1, qt2; - fin >> qt1 >> qt2; - if (! fin.good()) continue; - - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - TimeRegion r = TimeRegion(plow, phigh, qt1, qt2, 2); - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else - { - //Point p = Point(plow, 2); - //tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - - indexIO += vis.m_indexIO; - leafIO += vis.m_leafIO; - // example of the Visitor pattern usage, for calculating how many nodes - // were visited. - } - else - { - cerr << "This is not a query operation." << endl; - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - MyQueryStrategy2 qs; - tree->queryStrategy(qs); - - cerr << "Indexed space: " << qs.m_indexedSpace << endl; - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Index I/O: " << indexIO << endl; - cerr << "Leaf I/O: " << leafIO << endl; - cerr << "Buffer hits: " << file->getHits() << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail writting the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/Makefile.am b/spatialindex-1.8.5/test/mvrtree/Makefile.am deleted file mode 100644 index 77a83a1..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Generator Exhaustive MVRTreeLoad MVRTreeQuery -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -MVRTreeLoad_SOURCES = MVRTreeLoad.cc -MVRTreeLoad_LDADD = ../../libspatialindex.la -MVRTreeQuery_SOURCES = MVRTreeQuery.cc -MVRTreeQuery_LDADD = ../../libspatialindex.la - diff --git a/spatialindex-1.8.5/test/mvrtree/Makefile.in b/spatialindex-1.8.5/test/mvrtree/Makefile.in deleted file mode 100644 index a8efde2..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Makefile.in +++ /dev/null @@ -1,611 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Generator$(EXEEXT) Exhaustive$(EXEEXT) \ - MVRTreeLoad$(EXEEXT) MVRTreeQuery$(EXEEXT) -subdir = test/mvrtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Exhaustive_OBJECTS = Exhaustive.$(OBJEXT) -Exhaustive_OBJECTS = $(am_Exhaustive_OBJECTS) -Exhaustive_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_Generator_OBJECTS = Generator.$(OBJEXT) -Generator_OBJECTS = $(am_Generator_OBJECTS) -Generator_DEPENDENCIES = ../../libspatialindex.la -am_MVRTreeLoad_OBJECTS = MVRTreeLoad.$(OBJEXT) -MVRTreeLoad_OBJECTS = $(am_MVRTreeLoad_OBJECTS) -MVRTreeLoad_DEPENDENCIES = ../../libspatialindex.la -am_MVRTreeQuery_OBJECTS = MVRTreeQuery.$(OBJEXT) -MVRTreeQuery_OBJECTS = $(am_MVRTreeQuery_OBJECTS) -MVRTreeQuery_DEPENDENCIES = ../../libspatialindex.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(MVRTreeLoad_SOURCES) $(MVRTreeQuery_SOURCES) -DIST_SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(MVRTreeLoad_SOURCES) $(MVRTreeQuery_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -MVRTreeLoad_SOURCES = MVRTreeLoad.cc -MVRTreeLoad_LDADD = ../../libspatialindex.la -MVRTreeQuery_SOURCES = MVRTreeQuery.cc -MVRTreeQuery_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/mvrtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/mvrtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Exhaustive$(EXEEXT): $(Exhaustive_OBJECTS) $(Exhaustive_DEPENDENCIES) $(EXTRA_Exhaustive_DEPENDENCIES) - @rm -f Exhaustive$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Exhaustive_OBJECTS) $(Exhaustive_LDADD) $(LIBS) - -Generator$(EXEEXT): $(Generator_OBJECTS) $(Generator_DEPENDENCIES) $(EXTRA_Generator_DEPENDENCIES) - @rm -f Generator$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Generator_OBJECTS) $(Generator_LDADD) $(LIBS) - -MVRTreeLoad$(EXEEXT): $(MVRTreeLoad_OBJECTS) $(MVRTreeLoad_DEPENDENCIES) $(EXTRA_MVRTreeLoad_DEPENDENCIES) - @rm -f MVRTreeLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(MVRTreeLoad_OBJECTS) $(MVRTreeLoad_LDADD) $(LIBS) - -MVRTreeQuery$(EXEEXT): $(MVRTreeQuery_OBJECTS) $(MVRTreeQuery_DEPENDENCIES) $(EXTRA_MVRTreeQuery_DEPENDENCIES) - @rm -f MVRTreeQuery$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(MVRTreeQuery_OBJECTS) $(MVRTreeQuery_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exhaustive.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MVRTreeLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MVRTreeQuery.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/mvrtree/test1/run b/spatialindex-1.8.5/test/mvrtree/test1/run deleted file mode 100755 index 1aaa9c7..0000000 --- a/spatialindex-1.8.5/test/mvrtree/test1/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 1000 > d -awk '{if ($2 != 2) print $0}' < d > data -awk '{if ($2 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new MVR-Tree -../MVRTreeLoad data tree 20 intersection - -echo Querying MVR-Tree -../MVRTreeQuery queries tree intersection > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/mvrtree/test2/run b/spatialindex-1.8.5/test/mvrtree/test2/run deleted file mode 100755 index de5cb8b..0000000 --- a/spatialindex-1.8.5/test/mvrtree/test2/run +++ /dev/null @@ -1,22 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 1000 > mix - -echo Creating new MVR-Tree and Querying -../MVRTreeLoad mix tree 20 intersection > res - -echo Running exhaustive search -../Exhaustive mix intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/rtree/Exhaustive.cc b/spatialindex-1.8.5/test/rtree/Exhaustive.cc deleted file mode 100644 index 8c4d995..0000000 --- a/spatialindex-1.8.5/test/rtree/Exhaustive.cc +++ /dev/null @@ -1,206 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - - - -class Region -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - - Region(double x1, double y1, double x2, double y2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - } - - bool intersects(Region& r) - { - if ( - m_xmin > r.m_xmax || m_xmax < r.m_xmin || - m_ymin > r.m_ymax || m_ymax < r.m_ymin) - return false; - - return true; - } - - double getMinDist(const Region& r) - { - double ret = 0.0; - - if (r.m_xmax < m_xmin) - ret += std::pow(m_xmin - r.m_xmax, 2.0); - else if (r.m_xmin > m_xmax) - ret += std::pow(r.m_xmin - m_xmax, 2.0); - - if (r.m_ymax < m_ymin) - ret += std::pow(m_ymin - r.m_ymax, 2.0); - else if (r.m_ymin > m_ymax) - ret += std::pow(r.m_ymin - m_ymax, 2.0); - - return ret; - } -}; - -class NNEntry -{ -public: - size_t m_id; - double m_dist; - - NNEntry(size_t id, double dist) : m_id(id), m_dist(dist) {} - - struct greater : public std::binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_dist > __y->m_dist; } - }; -}; - -int main(int argc, char** argv) -{ - if (argc != 3) - { - std::cerr << "Usage: " << argv[0] << " data_file query_type [intersection | 10NN | selfjoin]." << std::endl; - return -1; - } - uint32_t queryType = 0; - - if (strcmp(argv[2], "intersection") == 0) queryType = 0; - else if (strcmp(argv[2], "10NN") == 0) queryType = 1; - else if (strcmp(argv[2], "selfjoin") == 0) queryType = 2; - else - { - std::cerr << "Unknown query type." << std::endl; - return -1; - } - - std::ifstream fin(argv[1]); - if (! fin) - { - std::cerr << "Cannot open data file" << argv[1] << "." << std::endl; - return -1; - } - - std::multimap data; - size_t id; - uint32_t op; - double x1, x2, y1, y2; - - while (fin) - { - fin >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; - - if (op == INSERT) - { - //insert - data.insert(std::pair(id, Region(x1, y1, x2, y2))); - } - else if (op == DELETE) - { - data.erase(id); - } - else if (op == QUERY) - { - //query - if (queryType == 0) - { - Region query = Region(x1, y1, x2, y2); - for (std::multimap::iterator it = data.begin(); it != data.end(); it++) - { - if (query.intersects((*it).second)) std::cout << (*it).first << std::endl; - } - } - else if (queryType == 1) - { - Region query = Region(x1, y1, x1, y1); - - std::priority_queue, NNEntry::greater > queue; - - for (std::multimap::iterator it = data.begin(); it != data.end(); it++) - { - queue.push(new NNEntry((*it).first, (*it).second.getMinDist(query))); - } - - size_t count = 0; - double knearest = 0.0; - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - - if (count >= 10 && e->m_dist > knearest) break; - - //std::cout << e->m_id << " " << e->m_dist << std::endl; - std::cout << e->m_id << std::endl; - count++; - knearest = e->m_dist; - delete e; - } - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - delete e; - } - } - else - { - Region query = Region(x1, y1, x2, y2); - - for (std::multimap::iterator it1 = data.begin(); it1 != data.end(); it1++) - { - if (query.intersects((*it1).second)) - { - for (std::multimap::iterator it2 = data.begin(); it2 != data.end(); it2++) - { - if ( - (*it1).first != (*it2).first && - query.intersects((*it2).second) && - (*it1).second.intersects((*it2).second)) - { - std::cout << (*it1).first << " " << (*it2).first << std::endl; - } - } - } - } - } - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/Generator.cc b/spatialindex-1.8.5/test/rtree/Generator.cc deleted file mode 100644 index 4dad919..0000000 --- a/spatialindex-1.8.5/test/rtree/Generator.cc +++ /dev/null @@ -1,140 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -#include -#include -#include - -#include - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -class Region -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - - Region(double x1, double y1, double x2, double y2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - } -}; - -int main(int argc, char** argv) -{ - if (argc != 3) - { - std::cerr << "Usage: " << argv[0] << " number_of_data time_instants." << std::endl; - return -1; - } - - size_t simulationLength = atol(argv[2]); - size_t numberOfObjects = atol(argv[1]); - std::map data; - libsupermesh::Tools::Random rnd; - - for (size_t i = 0; i < numberOfObjects; i++) - { - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(std::pair(i, r)); - - std::cout << INSERT << " " << i << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << std::endl; - } - - if (simulationLength == 0) - { - for (size_t i = 0; i < 1000; i++) - { - double stx = rnd.nextUniformDouble(); - double sty = rnd.nextUniformDouble(); - std::cout << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << std::endl; - } - } - - size_t A = static_cast(std::floor(static_cast(numberOfObjects) * 0.05)); - - for (size_t T = 1; T <= simulationLength; T++) - { - std::cerr << (simulationLength + 1 - T) << std::endl; - std::set examined; - - for (size_t a = 0; a < A; a++) - { - // find an id that is not yet examined. - size_t id = static_cast(rnd.nextUniformLong(0, numberOfObjects)); - std::set::iterator itSet = examined.find(id); - - while (itSet != examined.end()) - { - id = static_cast(rnd.nextUniformLong(0, numberOfObjects)); - itSet = examined.find(id); - } - examined.insert(id); - - std::map::iterator itMap = data.find(id); - assert(itMap != data.end()); - - std::cout << DELETE << " " << id << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << std::endl; - - double x = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - (*itMap).second.m_xmin = x; - (*itMap).second.m_xmax = x + dx; - double y = rnd.nextUniformDouble(); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - (*itMap).second.m_ymin = y; - (*itMap).second.m_ymax = y + dy; - - std::cout << INSERT << " " << id << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << std::endl; - } - - double stx = rnd.nextUniformDouble(); - double sty = rnd.nextUniformDouble(); - std::cout << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << std::endl; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/Makefile.am b/spatialindex-1.8.5/test/rtree/Makefile.am deleted file mode 100644 index 820f9dd..0000000 --- a/spatialindex-1.8.5/test/rtree/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Generator Exhaustive RTreeLoad RTreeQuery RTreeBulkLoad -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -RTreeLoad_SOURCES = RTreeLoad.cc -RTreeLoad_LDADD = ../../libspatialindex.la -RTreeQuery_SOURCES = RTreeQuery.cc -RTreeQuery_LDADD = ../../libspatialindex.la -RTreeBulkLoad_SOURCES = RTreeBulkLoad.cc -RTreeBulkLoad_LDADD = ../../libspatialindex.la diff --git a/spatialindex-1.8.5/test/rtree/Makefile.in b/spatialindex-1.8.5/test/rtree/Makefile.in deleted file mode 100644 index 51b2c64..0000000 --- a/spatialindex-1.8.5/test/rtree/Makefile.in +++ /dev/null @@ -1,623 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Generator$(EXEEXT) Exhaustive$(EXEEXT) \ - RTreeLoad$(EXEEXT) RTreeQuery$(EXEEXT) RTreeBulkLoad$(EXEEXT) -subdir = test/rtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Exhaustive_OBJECTS = Exhaustive.$(OBJEXT) -Exhaustive_OBJECTS = $(am_Exhaustive_OBJECTS) -Exhaustive_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_Generator_OBJECTS = Generator.$(OBJEXT) -Generator_OBJECTS = $(am_Generator_OBJECTS) -Generator_DEPENDENCIES = ../../libspatialindex.la -am_RTreeBulkLoad_OBJECTS = RTreeBulkLoad.$(OBJEXT) -RTreeBulkLoad_OBJECTS = $(am_RTreeBulkLoad_OBJECTS) -RTreeBulkLoad_DEPENDENCIES = ../../libspatialindex.la -am_RTreeLoad_OBJECTS = RTreeLoad.$(OBJEXT) -RTreeLoad_OBJECTS = $(am_RTreeLoad_OBJECTS) -RTreeLoad_DEPENDENCIES = ../../libspatialindex.la -am_RTreeQuery_OBJECTS = RTreeQuery.$(OBJEXT) -RTreeQuery_OBJECTS = $(am_RTreeQuery_OBJECTS) -RTreeQuery_DEPENDENCIES = ../../libspatialindex.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(RTreeBulkLoad_SOURCES) $(RTreeLoad_SOURCES) \ - $(RTreeQuery_SOURCES) -DIST_SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(RTreeBulkLoad_SOURCES) $(RTreeLoad_SOURCES) \ - $(RTreeQuery_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -RTreeLoad_SOURCES = RTreeLoad.cc -RTreeLoad_LDADD = ../../libspatialindex.la -RTreeQuery_SOURCES = RTreeQuery.cc -RTreeQuery_LDADD = ../../libspatialindex.la -RTreeBulkLoad_SOURCES = RTreeBulkLoad.cc -RTreeBulkLoad_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/rtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/rtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Exhaustive$(EXEEXT): $(Exhaustive_OBJECTS) $(Exhaustive_DEPENDENCIES) $(EXTRA_Exhaustive_DEPENDENCIES) - @rm -f Exhaustive$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Exhaustive_OBJECTS) $(Exhaustive_LDADD) $(LIBS) - -Generator$(EXEEXT): $(Generator_OBJECTS) $(Generator_DEPENDENCIES) $(EXTRA_Generator_DEPENDENCIES) - @rm -f Generator$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Generator_OBJECTS) $(Generator_LDADD) $(LIBS) - -RTreeBulkLoad$(EXEEXT): $(RTreeBulkLoad_OBJECTS) $(RTreeBulkLoad_DEPENDENCIES) $(EXTRA_RTreeBulkLoad_DEPENDENCIES) - @rm -f RTreeBulkLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(RTreeBulkLoad_OBJECTS) $(RTreeBulkLoad_LDADD) $(LIBS) - -RTreeLoad$(EXEEXT): $(RTreeLoad_OBJECTS) $(RTreeLoad_DEPENDENCIES) $(EXTRA_RTreeLoad_DEPENDENCIES) - @rm -f RTreeLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(RTreeLoad_OBJECTS) $(RTreeLoad_LDADD) $(LIBS) - -RTreeQuery$(EXEEXT): $(RTreeQuery_OBJECTS) $(RTreeQuery_DEPENDENCIES) $(EXTRA_RTreeQuery_DEPENDENCIES) - @rm -f RTreeQuery$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(RTreeQuery_OBJECTS) $(RTreeQuery_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exhaustive.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTreeBulkLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTreeLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTreeQuery.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc b/spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc deleted file mode 100644 index 8123313..0000000 --- a/spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc +++ /dev/null @@ -1,173 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -class MyDataStream : public IDataStream -{ -public: - MyDataStream(std::string inputFile) : m_pNext(0) - { - m_fin.open(inputFile.c_str()); - - if (! m_fin) - throw libsupermesh::Tools::IllegalArgumentException("Input file not found."); - - readNextEntry(); - } - - virtual ~MyDataStream() - { - if (m_pNext != 0) delete m_pNext; - } - - virtual IData* getNext() - { - if (m_pNext == 0) return 0; - - RTree::Data* ret = m_pNext; - m_pNext = 0; - readNextEntry(); - return ret; - } - - virtual bool hasNext() - { - return (m_pNext != 0); - } - - virtual uint32_t size() - { - throw libsupermesh::Tools::NotSupportedException("Operation not supported."); - } - - virtual void rewind() - { - if (m_pNext != 0) - { - delete m_pNext; - m_pNext = 0; - } - - m_fin.seekg(0, std::ios::beg); - readNextEntry(); - } - - void readNextEntry() - { - id_type id; - uint32_t op; - double low[2], high[2]; - - m_fin >> op >> id >> low[0] >> low[1] >> high[0] >> high[1]; - - if (m_fin.good()) - { - if (op != INSERT) - throw libsupermesh::Tools::IllegalArgumentException( - "The data input should contain insertions only." - ); - - Region r(low, high, 2); - m_pNext = new RTree::Data(sizeof(double), reinterpret_cast(low), r, id); - // Associate a bogus data array with every entry for testing purposes. - // Once the data array is given to RTRee:Data a local copy will be created. - // Hence, the input data array can be deleted after this operation if not - // needed anymore. - } - } - - std::ifstream m_fin; - RTree::Data* m_pNext; -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 5) - { - std::cerr << "Usage: " << argv[0] << " input_file tree_file capacity utilization." << std::endl; - return -1; - } - - std::string baseName = argv[2]; - double utilization = atof(argv[4]); - - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - // Create a new storage manager with the provided base name and a 4K page size. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - MyDataStream stream(argv[1]); - - // Create and bulk load a new RTree with dimensionality 2, using "file" as - // the StorageManager and the RSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = RTree::createAndBulkLoadNewRTree( - RTree::BLM_STR, stream, *file, utilization, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::RTree::RV_RSTAR, indexIdentifier); - - std::cerr << *tree; - std::cerr << "Buffer hits: " << file->getHits() << std::endl; - std::cerr << "Index ID: " << indexIdentifier << std::endl; - - bool ret = tree->isIndexValid(); - if (ret == false) std::cerr << "ERROR: Structure is invalid!" << std::endl; - else std::cerr << "The stucture seems O.K." << std::endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - std::cerr << "******ERROR******" << std::endl; - std::string s = e.what(); - std::cerr << s << std::endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/RTreeLoad.cc b/spatialindex-1.8.5/test/rtree/RTreeLoad.cc deleted file mode 100644 index 311b96a..0000000 --- a/spatialindex-1.8.5/test/rtree/RTreeLoad.cc +++ /dev/null @@ -1,220 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// see RTreeQuery for a more elaborate example. -class MyVisitor : public IVisitor -{ -public: - void visitNode(const INode& n) {} - - void visitData(const IData& d) - { - std::cout << d.getIdentifier() << std::endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) {} -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 5) - { - std::cerr << "Usage: " << argv[0] << " input_file tree_file capacity query_type [intersection | 10NN | selfjoin | contains]." << std::endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[4], "intersection") == 0) queryType = 0; - else if (strcmp(argv[4], "10NN") == 0) queryType = 1; - else if (strcmp(argv[4], "selfjoin") == 0) queryType = 2; - else if (strcmp(argv[4], "contains") == 0) queryType = 3; - else - { - std::cerr << "Unknown query type." << std::endl; - return -1; - } - - std::ifstream fin(argv[1]); - if (! fin) - { - std::cerr << "Cannot open data file " << argv[1] << "." << std::endl; - return -1; - } - - // Create a new storage manager with the provided base name and a 4K page size. - std::string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // Create a new, empty, RTree with dimensionality 2, minimum load 70%, using "file" as - // the StorageManager and the RSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = RTree::createNewRTree(*file, 0.7, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::RTree::RV_RSTAR, indexIdentifier); - - size_t count = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2; - double plow[2], phigh[2]; - - while (fin) - { - fin >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - Region r = Region(plow, phigh, 2); - - std::ostringstream os; - os << r; - std::string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see RTree::Node::load and RTree::Node::store for - // an example of how to do that). - - tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - //tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - Region r = Region(plow, phigh, 2); - - if (tree->deleteData(r, id) == false) - { - std::cerr << "******ERROR******" << std::endl; - std::cerr << "Cannot delete id: " << id << " , count: " << count << std::endl; - return -1; - } - } - else if (op == QUERY) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - Region r = Region(plow, phigh, 2); - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else if (queryType == 1) - { - Point p = Point(plow, 2); - tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - else if(queryType == 2) - { - Region r = Region(plow, phigh, 2); - tree->selfJoinQuery(r, vis); - } - else - { - Region r = Region(plow, phigh, 2); - tree->containsWhatQuery(r, vis); - // this will find all data that is contained by the query range. - } - } - - if ((count % 1000) == 0) - std::cerr << count << std::endl; - - count++; - } - - std::cerr << "Operations: " << count << std::endl; - std::cerr << *tree; - std::cerr << "Buffer hits: " << file->getHits() << std::endl; - std::cerr << "Index ID: " << indexIdentifier << std::endl; - - bool ret = tree->isIndexValid(); - if (ret == false) std::cerr << "ERROR: Structure is invalid!" << std::endl; - else std::cerr << "The stucture seems O.K." << std::endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - std::cerr << "******ERROR******" << std::endl; - std::string s = e.what(); - std::cerr << s << std::endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/RTreeQuery.cc b/spatialindex-1.8.5/test/rtree/RTreeQuery.cc deleted file mode 100644 index 32dc07a..0000000 --- a/spatialindex-1.8.5/test/rtree/RTreeQuery.cc +++ /dev/null @@ -1,283 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// findes the index and leaf IO for answering the query and prints -// the resulting data IDs to stdout. -class MyVisitor : public IVisitor -{ -public: - size_t m_indexIO; - size_t m_leafIO; - -public: - MyVisitor() : m_indexIO(0), m_leafIO(0) {} - - void visitNode(const INode& n) - { - if (n.isLeaf()) m_leafIO++; - else m_indexIO++; - } - - void visitData(const IData& d) - { - IShape* pS; - d.getShape(&pS); - // do something. - delete pS; - - // data should be an array of characters representing a Region as a string. - byte* pData = 0; - uint32_t cLen = 0; - d.getData(cLen, &pData); - // do something. - //string s = reinterpret_cast(pData); - //cout << s << endl; - delete[] pData; - - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) - { - cout << v[0]->getIdentifier() << " " << v[1]->getIdentifier() << endl; - } -}; - -// example of a Strategy pattern. -// traverses the tree by level. -class MyQueryStrategy : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - queue ids; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - IShape* ps; - entry.getShape(&ps); - Region* pr = dynamic_cast(ps); - - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl << endl << endl; - // print node MBRs gnuplot style! - - delete ps; - - const INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 1) - { - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push(n->getChildIdentifier(cChild)); - } - } - - if (! ids.empty()) - { - nextEntry = ids.front(); ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } - } -}; - -// example of a Strategy pattern. -// find the total indexed space managed by the index (the MBR of the root). -class MyQueryStrategy2 : public IQueryStrategy -{ -public: - Region m_indexedSpace; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - // the first time we are called, entry points to the root. - - // stop after the root. - hasNext = false; - - IShape* ps; - entry.getShape(&ps); - ps->getMBR(m_indexedSpace); - delete ps; - } -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 4) - { - cerr << "Usage: " << argv[0] << " query_file tree_file query_type [intersection | 10NN | selfjoin]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[3], "intersection") == 0) queryType = 0; - else if (strcmp(argv[3], "10NN") == 0) queryType = 1; - else if (strcmp(argv[3], "selfjoin") == 0) queryType = 2; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open query file " << argv[1] << "." << endl; - return -1; - } - - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::loadDiskStorageManager(baseName); - // this will try to locate and open an already existing storage manager. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // If we need to open an existing tree stored in the storage manager, we only - // have to specify the index identifier as follows - ISpatialIndex* tree = RTree::loadRTree(*file, 1); - - size_t count = 0; - size_t indexIO = 0; - size_t leafIO = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2; - double plow[2], phigh[2]; - - while (fin) - { - fin >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == QUERY) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - Region r = Region(plow, phigh, 2); - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else if (queryType == 1) - { - Point p = Point(plow, 2); - tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - else - { - Region r = Region(plow, phigh, 2); - tree->selfJoinQuery(r, vis); - } - - indexIO += vis.m_indexIO; - leafIO += vis.m_leafIO; - // example of the Visitor pattern usage, for calculating how many nodes - // were visited. - } - else - { - cerr << "This is not a query operation." << endl; - } - - if ((count % 1000) == 0) cerr << count << endl; - - count++; - } - - MyQueryStrategy2 qs; - tree->queryStrategy(qs); - - cerr << "Indexed space: " << qs.m_indexedSpace << endl; - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Index I/O: " << indexIO << endl; - cerr << "Leaf I/O: " << leafIO << endl; - cerr << "Buffer hits: " << file->getHits() << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail writting the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/test1/run b/spatialindex-1.8.5/test/rtree/test1/run deleted file mode 100755 index 350c2bc..0000000 --- a/spatialindex-1.8.5/test/rtree/test1/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 10000 100 > d -awk '{if ($1 != 2) print $0}' < d > data -awk '{if ($1 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new R-Tree -../RTreeLoad data tree 20 10NN - -echo Querying R-Tree -../RTreeQuery queries tree 10NN > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t 10NN > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/rtree/test2/run b/spatialindex-1.8.5/test/rtree/test2/run deleted file mode 100755 index 9e7ccf2..0000000 --- a/spatialindex-1.8.5/test/rtree/test2/run +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 10000 100 > mix - -echo Creating new R-Tree and Querying -../RTreeLoad mix tree 20 intersection > res - -echo Running exhaustive search -../Exhaustive mix intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi - diff --git a/spatialindex-1.8.5/test/rtree/test3/run b/spatialindex-1.8.5/test/rtree/test3/run deleted file mode 100755 index 3392dcb..0000000 --- a/spatialindex-1.8.5/test/rtree/test3/run +++ /dev/null @@ -1,30 +0,0 @@ -#! /bin/bash - -export PATH=$PATH:../../.. - -#echo Generating 10 million entries. This might take a while -#echo Generating dataset -../Generator 1000000 0 > d -awk '{if ($1 == 1) print $0}' < d > data -awk '{if ($1 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new R-Tree -../RTreeBulkLoad data tree 1000 0.9 - -echo Querying R-Tree -../RTreeQuery queries tree intersection > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then echo "Same results with exhaustive search. Everything seems fine." -else echo "PROBLEM! We got different results from exhaustive search!" -fi -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* diff --git a/spatialindex-1.8.5/test/rtree/test4/run b/spatialindex-1.8.5/test/rtree/test4/run deleted file mode 100755 index 8bef71b..0000000 --- a/spatialindex-1.8.5/test/rtree/test4/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 10000 0 > d -awk '{if ($1 == 1) print $0}' < d > data -awk '{if ($1 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new R-Tree -../RTreeLoad data tree 20 selfjoin - -echo Querying R-Tree -../RTreeQuery queries tree selfjoin > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t selfjoin > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/tprtree/Exhaustive.cc b/spatialindex-1.8.5/test/tprtree/Exhaustive.cc deleted file mode 100644 index 741fbe8..0000000 --- a/spatialindex-1.8.5/test/tprtree/Exhaustive.cc +++ /dev/null @@ -1,264 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include -#include -#include -#include - -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -#include - - -class Rectangle -{ -public: - Rectangle(double xlow, double xhigh, double ylow, double yhigh) - : m_xlow(xlow), m_xhigh(xhigh), m_ylow(ylow), m_yhigh(yhigh) {} - - size_t computeCode(double x, double y) - { - size_t c = 0; - if(y > m_yhigh) c |= TOP; - else if(y < m_ylow) c |= BOTTOM; - if( x > m_xhigh) c |= RIGHT; - else if(x < m_xlow) c |= LEFT; - return c; - } - - bool intersectsPoint(double x, double y) - { - if (m_xlow <= x && x <= m_xhigh && - m_ylow <= y && y <= m_yhigh) return true; - return false; - } - - bool intersectsSegment(double x0, double x1, double y0, double y1) - { - size_t C0, C1, C; - double x,y; - - C0 = computeCode(x0, y0); - C1 = computeCode(x1, y1); - - for(;;) - { - /* - * trivial accept: both ends inside rectangle - */ - if((C0 | C1) == 0) - { - return true; - } - - /* - * trivial reject: both ends on the external side - * of the rectanlge - */ - if((C0 & C1) != 0) - { - return false; - } - - /* - * normal case: clip end outside rectangle - */ - C = C0 ? C0 : C1; - if(C & TOP) - { - x = x0 + (x1 - x0) * (m_yhigh - y0) / (y1 - y0); - y = m_yhigh; - } - else if(C & BOTTOM) - { - x = x0 + (x1 - x0) * (m_ylow - y0) / (y1 - y0); - y = m_ylow; - } - else if(C & RIGHT) - { - x = m_xhigh; - y = y0 + (y1 - y0) * (m_xhigh - x0) / (x1 - x0); - } - else - { - x = m_xlow; - y = y0 + (y1 - y0) * (m_xlow - x0) / (x1 - x0); - } - - /* - * set new end point and iterate - */ - if(C == C0) - { - x0 = x; y0 = y; - C0 = computeCode(x0, y0); - } - else - { - x1 =x; y1 = y; - C1 = computeCode(x1, y1); - } - } - } - - static const size_t TOP = 0x1; - static const size_t BOTTOM = 0x2; - static const size_t RIGHT = 0x4; - static const size_t LEFT = 0x8; - - double m_xlow, m_xhigh, m_ylow, m_yhigh; -}; - -class MovingPoint -{ -public: - MovingPoint(double ax, double vx, double ay, double vy, double rt) - : m_ax(ax), m_vx(vx), m_ay(ay), m_vy(vy), m_rt(rt) {} - - double getX(double t) { return m_ax + m_vx * (t - m_rt); } - double getY(double t) { return m_ay + m_vy * (t - m_rt); } - - double m_ax, m_vx, m_ay, m_vy; - double m_rt; -}; - -class TimeRectangle -{ -public: - TimeRectangle(double xlow, double xhigh, double ylow, double yhigh, double tlow, double thigh) - : m_xlow(xlow), m_xhigh(xhigh), m_ylow(ylow), m_yhigh(yhigh), m_tlow(tlow), m_thigh(thigh) {} - - bool intersects(MovingPoint& mp) - { - double x0 = mp.getX(m_tlow); - double x1 = mp.getX(m_thigh); - double y0 = mp.getY(m_tlow); - double y1 = mp.getY(m_thigh); - //double t0 = m_tlow; - //double t1 = m_thigh; - - Rectangle rxy(m_xlow, m_xhigh, m_ylow, m_yhigh); - return rxy.intersectsSegment(x0, x1, y0, y1); - -/* - // not needed to check all planes since it is - // guaranteed that on the time dimension - // the line segment and the query cube have - // exactly the same length (thus, if they intersect - // they should intersect on the X-Y projection for sure). - - Rectangle rxy(m_xlow, m_xhigh, m_ylow, m_yhigh); - if (rxy.intersectsSegment(x0, x1, y0, y1)) - { - Rectangle rxt(m_xlow, m_xhigh, m_tlow, m_thigh); - if (rxt.intersectsSegment(x0, x1, t0, t1)) - { - Rectangle ryt(m_ylow, m_yhigh, m_tlow, m_thigh); - if (ryt.intersectsSegment(y0, y1, t0, t1)) return true; - } - } -*/ - - return false; - } - - bool intersectsStupid(MovingPoint& mp) - { - size_t t0 = static_cast(std::floor(m_tlow)); - size_t t1 = static_cast(std::floor(m_thigh)); - - Rectangle rxy(m_xlow, m_xhigh, m_ylow, m_yhigh); - - for (size_t T = t0; T <= t1; T++) - { - if (rxy.intersectsPoint(mp.getX(T), mp.getY(T))) return true; - } - return false; - } - - double m_xlow, m_xhigh, m_ylow, m_yhigh; - double m_tlow, m_thigh; -}; - -int main(int argc, char** argv) -{ - if (argc != 2) - { - cerr << "Usage: " << argv[0] << " data_file." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file" << argv[1] << "." << endl; - return -1; - } - - map data; - size_t id, op; - double ax, vx, ay, vy, ct, rt, unused; - - while (fin) - { - fin >> id >> op >> ct >> rt >> unused >> ax >> vx >> unused >> ay >> vy; - if (! fin.good()) continue; - - if (op == INSERT) - { - data.insert(pair(id, MovingPoint(ax, vx, ay, vy, ct))); - } - else if (op == DELETE) - { - data.erase(id); - } - else if (op == QUERY) - { - TimeRectangle query = TimeRectangle(ax, vx, ay, vy, ct, rt); - std::map::iterator it; - for (it = data.begin(); it != data.end(); it++) - { - //assert(query.intersects((*it).second) == query.intersectsStupid((*it).second)); - if (query.intersects((*it).second) == false && query.intersectsStupid((*it).second) == true) - { - cerr << "Something is wrong: " << ct << " " << (*it).first << endl; - return -1; - } - if (query.intersects((*it).second)) cout << (*it).first << endl; - } - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/tprtree/Generator.cc b/spatialindex-1.8.5/test/tprtree/Generator.cc deleted file mode 100644 index 80679b2..0000000 --- a/spatialindex-1.8.5/test/tprtree/Generator.cc +++ /dev/null @@ -1,105 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#include -#include -#include - -#include "RandomGenerator.h" - -int main(int argc, char** argv) -{ - size_t ds = 1000, sl = 100, mui = 20, id = UNIFORM; - double a = 0.01; - - for (int i = 1; i < argc; i++) - { - if (! strcmp(argv[i], "-ds")) - { - i++; - if (i >= argc) - { - cerr << "Missing dataset size." << endl; - return -1; - } - ds = atoi(argv[i]); - } - else if (! strcmp(argv[i], "-sl")) - { - i++; - if (i >= argc) - { - cerr << "Missing simulation length." << endl; - return -1; - } - sl = atoi(argv[i]); - } - else if (! strcmp(argv[i], "-a")) - { - i++; - if (i >= argc) - { - cerr << "Missing agility." << endl; - return -1; - } - a = atof(argv[i]); - } - else if (! strcmp(argv[i], "-mui")) - { - i++; - if (i >= argc) - { - cerr << "Missing update rate." << endl; - return -1; - } - mui = atoi(argv[i]); - } - else - { - cerr << "Usage: " << endl - << " -ds dataset size" << endl - << " -sl simulation length" << endl - << " -a agility" << endl - << " -sd speed distribution" << endl - << " -id initial distribution" << endl - << " -mui maximum update interval" << endl; - return -1; - } - } - - RandomGenerator g = RandomGenerator(ds, sl, mui, a); - g.m_initialDistribution = id; - g.m_maxX = 1.0; g.m_maxY = 1.0; - g.m_minQueryExtent = 0.05; g.m_maxQueryExtent = 0.1; - g.m_minSpeed = 0.0025; // 15 miles/hour = 0.25 miles/minute - g.m_maxSpeed = 0.0166; // 100 miles/hour = 1.66 miles/minute - g.m_speedMean = 0.005; // 30 miles/hour = 0.5 miles/minute - g.m_speedStandardDeviation = 0.0033; // 20 miles/hour = 0.33 miles/minute - - g.generate(); -} diff --git a/spatialindex-1.8.5/test/tprtree/Makefile.am b/spatialindex-1.8.5/test/tprtree/Makefile.am deleted file mode 100644 index da64516..0000000 --- a/spatialindex-1.8.5/test/tprtree/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Generator Exhaustive TPRTreeLoad TPRTreeQuery -INCLUDES = -I../../include -Generator_SOURCES = RandomGenerator.cc Generator.cc RandomGenerator.h -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -TPRTreeLoad_SOURCES = TPRTreeLoad.cc -TPRTreeLoad_LDADD = ../../libspatialindex.la -TPRTreeQuery_SOURCES = TPRTreeQuery.cc -TPRTreeQuery_LDADD = ../../libspatialindex.la diff --git a/spatialindex-1.8.5/test/tprtree/Makefile.in b/spatialindex-1.8.5/test/tprtree/Makefile.in deleted file mode 100644 index b4e086c..0000000 --- a/spatialindex-1.8.5/test/tprtree/Makefile.in +++ /dev/null @@ -1,630 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Generator$(EXEEXT) Exhaustive$(EXEEXT) \ - TPRTreeLoad$(EXEEXT) TPRTreeQuery$(EXEEXT) -subdir = test/tprtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Exhaustive_OBJECTS = Exhaustive.$(OBJEXT) -Exhaustive_OBJECTS = $(am_Exhaustive_OBJECTS) -Exhaustive_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_Generator_OBJECTS = RandomGenerator.$(OBJEXT) Generator.$(OBJEXT) -Generator_OBJECTS = $(am_Generator_OBJECTS) -Generator_DEPENDENCIES = ../../libspatialindex.la -am_TPRTreeLoad_OBJECTS = TPRTreeLoad.$(OBJEXT) -TPRTreeLoad_OBJECTS = $(am_TPRTreeLoad_OBJECTS) -TPRTreeLoad_DEPENDENCIES = ../../libspatialindex.la -am_TPRTreeQuery_OBJECTS = TPRTreeQuery.$(OBJEXT) -TPRTreeQuery_OBJECTS = $(am_TPRTreeQuery_OBJECTS) -TPRTreeQuery_DEPENDENCIES = ../../libspatialindex.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(TPRTreeLoad_SOURCES) $(TPRTreeQuery_SOURCES) -DIST_SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(TPRTreeLoad_SOURCES) $(TPRTreeQuery_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Generator_SOURCES = RandomGenerator.cc Generator.cc RandomGenerator.h -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -TPRTreeLoad_SOURCES = TPRTreeLoad.cc -TPRTreeLoad_LDADD = ../../libspatialindex.la -TPRTreeQuery_SOURCES = TPRTreeQuery.cc -TPRTreeQuery_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/tprtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/tprtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Exhaustive$(EXEEXT): $(Exhaustive_OBJECTS) $(Exhaustive_DEPENDENCIES) $(EXTRA_Exhaustive_DEPENDENCIES) - @rm -f Exhaustive$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Exhaustive_OBJECTS) $(Exhaustive_LDADD) $(LIBS) - -Generator$(EXEEXT): $(Generator_OBJECTS) $(Generator_DEPENDENCIES) $(EXTRA_Generator_DEPENDENCIES) - @rm -f Generator$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Generator_OBJECTS) $(Generator_LDADD) $(LIBS) - -TPRTreeLoad$(EXEEXT): $(TPRTreeLoad_OBJECTS) $(TPRTreeLoad_DEPENDENCIES) $(EXTRA_TPRTreeLoad_DEPENDENCIES) - @rm -f TPRTreeLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(TPRTreeLoad_OBJECTS) $(TPRTreeLoad_LDADD) $(LIBS) - -TPRTreeQuery$(EXEEXT): $(TPRTreeQuery_OBJECTS) $(TPRTreeQuery_DEPENDENCIES) $(EXTRA_TPRTreeQuery_DEPENDENCIES) - @rm -f TPRTreeQuery$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(TPRTreeQuery_OBJECTS) $(TPRTreeQuery_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exhaustive.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RandomGenerator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TPRTreeLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TPRTreeQuery.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/tprtree/RandomGenerator.cc b/spatialindex-1.8.5/test/tprtree/RandomGenerator.cc deleted file mode 100644 index d27436a..0000000 --- a/spatialindex-1.8.5/test/tprtree/RandomGenerator.cc +++ /dev/null @@ -1,183 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#include "RandomGenerator.h" - -RandomGenerator::MyMovingObject* RandomGenerator::createObject(int id, int st, double xmin, double xmax, double ymin, double ymax) -{ - double x, y; - x = m_random.nextUniformDouble(xmin, xmax); - y = m_random.nextUniformDouble(ymin, ymax); - - return createObject(id, st, x, y); -} - -RandomGenerator::MyMovingObject* RandomGenerator::createObject(int id, int st, double x, double y) -{ - MyMovingObject* o = new MyMovingObject(); - - o->m_id = id; - o->m_sx = x; - o->m_sy = y; - o->m_st = st; - o->m_kt = -1; - - double v = generateSpeed(); - if (m_random.flipCoin()) v *= -1.0; - - double angle = m_random.nextUniformDouble(-M_PI_2 , M_PI_2); - if (m_random.flipCoin()) angle *= -1.0; - - o->m_vx = cos(angle) * v; - o->m_vy = sin(angle) * v; - - cout << o->m_id << " " << INSERT << " " << st << " " << o->m_st << " 1 " << o->m_sx << " " << o->m_vx - << " 1 " << o->m_sy << " " << o->m_vy << endl; - - map::iterator itDataset = m_dataset.find(o->m_id); - if (itDataset != m_dataset.end()) m_dataset.erase(itDataset); - m_dataset.insert(pair(o->m_id, o)); - - int t1 = o->m_st + m_maximumUpdateInterval; - int t2; - - for (t2 = st; t2 <= m_simulationLength; t2++) - { - if (o->getX(t2) > m_maxX || o->getY(t2) > m_maxY || o->getX(t2) < 0.0 || o->getY(t2) < 0.0) break; - } - - o->m_outOfBounds = (t2 < t1) ? true : false; - int t = min(t1, t2); - - if (t == st) t++; - if (t < m_simulationLength) - { - m_updateArray[t].insert(o->m_id); - o->m_kt = t; - } - - return o; -} - -double RandomGenerator::generateSpeed() -{ - return m_random.nextUniformDouble(m_minSpeed, m_maxSpeed); -} - -void RandomGenerator::generate() -{ - for (map::iterator itDataset = m_dataset.begin(); itDataset != m_dataset.end(); itDataset++) - { - delete (*itDataset).second; - } - m_dataset.clear(); - - for (int cIndex = 0; cIndex < m_simulationLength; cIndex++) - { - m_updateArray[cIndex].clear(); - } - - int updatesPerTimeInstant = (int) ceil(((double) m_datasetSize) * m_agility); - - for (int cObject = 0; cObject < m_datasetSize; cObject++) - { - createObject(cObject, 0, 0.0, m_maxX, 0.0, m_maxY); - - if (cObject % 10000 == 0) cerr << cObject << endl; - } - - for (int Tnow = 1; Tnow < m_simulationLength; Tnow++) - { - cerr << "Time: " << Tnow; - - int cTotalUpdates = 0; - int cNeedToUpdate = updatesPerTimeInstant; - set updated; - set::iterator itUpdateArray = m_updateArray[Tnow].begin(); - - while (cNeedToUpdate > 0 || itUpdateArray != m_updateArray[Tnow].end()) - { - int id; - bool bKilled = false; - if (itUpdateArray != m_updateArray[Tnow].end()) - { - bKilled = true; - id = *itUpdateArray; - itUpdateArray++; - } - else - { - id = m_random.nextUniformLong(0, m_datasetSize); - set::iterator itUpdated = updated.find(id); - - while (itUpdated != updated.end()) - { - id = m_random.nextUniformLong(0, m_datasetSize); - itUpdated = updated.find(id); - } - } - updated.insert(id); - cNeedToUpdate--; - cTotalUpdates++; - - map::iterator itDataset = m_dataset.find(id); - assert(itDataset != m_dataset.end()); - MyMovingObject* o = (*itDataset).second; - m_dataset.erase(itDataset); - if (o->m_kt >= 0) m_updateArray[o->m_kt].erase(o->m_id); - - cout << o->m_id << " " << DELETE << " " << Tnow << " " << o->m_st << " 1 " << o->m_sx << " " << o->m_vx - << " 1 " << o->m_sy << " " << o->m_vy << endl; - - if (bKilled && o->m_outOfBounds) - { - createObject(o->m_id, Tnow, 0.0, m_maxX, 0.0, m_maxY); - } - else - { - createObject(o->m_id, Tnow, o->getX(Tnow), o->getY(Tnow)); - } - - delete o; - } - - for (int cQuery = 0; cQuery < m_queriesPerTimeInstant; cQuery++) - { - double x = m_random.nextUniformDouble(0.0, m_maxX); - double y = m_random.nextUniformDouble(0.0, m_maxY); - double dx = m_random.nextUniformDouble(m_minQueryExtent, m_maxQueryExtent); - double dy = m_random.nextUniformDouble(m_minQueryExtent, m_maxQueryExtent); - int dt = m_random.nextUniformLong(m_minQueryInterval, m_maxQueryInterval); - int t = m_random.nextUniformLong(Tnow, Tnow + m_horizon - dt); - - cout << "9999999 " << QUERY << " " << t << " " << t + dt << " 1 " << x - dx << " " << x + dx << " 1 " << y - dy << " " << y + dy << endl; - } - - cerr << ", Updates: " << cTotalUpdates << endl; - } -} diff --git a/spatialindex-1.8.5/test/tprtree/RandomGenerator.h b/spatialindex-1.8.5/test/tprtree/RandomGenerator.h deleted file mode 100644 index 424fcaf..0000000 --- a/spatialindex-1.8.5/test/tprtree/RandomGenerator.h +++ /dev/null @@ -1,151 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -#ifndef _random_generator_h -#define _random_generator_h - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -#define UNIFORM 1 - -class RandomGenerator -{ -public: - RandomGenerator(int ds, int sl, int mui, double a) - : m_datasetSize(ds), - m_simulationLength(sl), - m_initialDistribution(UNIFORM), - m_maximumUpdateInterval(mui), - m_queriesPerTimeInstant(5), - m_minQueryExtent(5), - m_maxQueryExtent(10), - m_horizon(20), - m_maxQueryInterval(10), - m_minQueryInterval(2), - m_agility(a), - m_minSpeed(0.25), // 15 miles/hour = 0.25 miles/minute - m_maxSpeed(1.66), // 100 miles/hour = 1.66 miles/minute - m_speedMean(0.5), // 30 miles/hour = 0.5 miles/minute - m_speedStandardDeviation(0.33), // 20 miles/hour = 0.33 miles/minute - m_maxX(100.0), - m_maxY(100.0), - m_updateArray(0) - { - m_updateArray = new set[m_simulationLength]; - } - - virtual ~RandomGenerator() - { - for (map::iterator it = m_dataset.begin(); it != m_dataset.end(); it++) - { - delete (*it).second; - } - delete[] m_updateArray; - } - - class MyMovingObject - { - public: - double getX(int t) - { - return m_sx + m_vx * (t - m_st); - } - - double getY(int t) - { - return m_sy + m_vy * (t - m_st); - } - - public: - int m_id; - int m_st; - int m_kt; - double m_sx, m_sy; - double m_vx, m_vy; - bool m_outOfBounds; - }; - - virtual void generate(); - MyMovingObject* createObject(int id, int st, double xmin, double xmax, double ymin, double ymax); - MyMovingObject* createObject(int id, int st, double x, double y); - double generateSpeed(); - -public: - int m_datasetSize; - int m_simulationLength; - int m_initialDistribution; - int m_maximumUpdateInterval; - int m_queriesPerTimeInstant; - double m_minQueryExtent; - double m_maxQueryExtent; - int m_horizon; - int m_maxQueryInterval; - int m_minQueryInterval; - double m_agility; - double m_minSpeed; - double m_maxSpeed; - double m_speedMean; - double m_speedStandardDeviation; - double m_maxX; - double m_maxY; - - map m_dataset; - set* m_updateArray; - libsupermesh::Tools::Random m_random; -}; - -#endif diff --git a/spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc b/spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc deleted file mode 100644 index 958a516..0000000 --- a/spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc +++ /dev/null @@ -1,209 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -// NOTE: Please read README.txt before browsing this code. - -// include library header file. - -#include - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// see RTreeQuery for a more elaborate example. -class MyVisitor : public IVisitor -{ -public: - void visitNode(const INode& ) {} - - void visitData(const IData& d) - { - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& ) {} -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 4) - { - cerr << "Usage: " << argv[0] << " input_file tree_file capacity." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file " << argv[1] << "." << endl; - return -1; - } - - // Create a new storage manager with the provided base name and a 4K page size. - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // Create a new, empty, TPRTree with dimensionality 2, minimum load 70%, horizon 20 time instants, using "file" as - // the StorageManager and the TPRSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = TPRTree::createNewTPRTree(*file, 0.7, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::TPRTree::TPRV_RSTAR, 20, indexIdentifier); - - size_t count = 0; - id_type id; - size_t op; - double ax, vx, ay, vy, ct, rt, unused; - double plow[2], phigh[2]; - double pvlow[2], pvhigh[2]; - - while (fin) - { - fin >> id >> op >> ct >> rt >> unused >> ax >> vx >> unused >> ay >> vy; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(ct, std::numeric_limits::max()); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - //ostringstream os; - //os << r; - //string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see RTree::Node::load and RTree::Node::store for - // an example of how to do that). - - //tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(rt, ct); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - if (tree->deleteData(r, id) == false) - { - cerr << "******ERROR******" << endl; - cerr << "Cannot delete id: " << id << " , count: " << count << endl; - return -1; - } - } - else if (op == QUERY) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = vx; phigh[1] = vy; - pvlow[0] = 0.0; pvlow[1] = 0.0; - pvhigh[0] = 0.0; pvhigh[1] = 0.0; - - libsupermesh::Tools::Interval ivT(ct, rt); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - MyVisitor vis; - - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Buffer hits: " << file->getHits() << endl; - cerr << "Index ID: " << indexIdentifier << endl; - - bool ret = tree->isIndexValid(); - if (ret == false) cerr << "ERROR: Structure is invalid!" << endl; - else cerr << "The stucture seems O.K." << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc b/spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc deleted file mode 100644 index 2579609..0000000 --- a/spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc +++ /dev/null @@ -1,309 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -// include library header file. - -#include - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// findes the index and leaf IO for answering the query and prints -// the resulting data IDs to stdout. -class MyVisitor : public IVisitor -{ -public: - size_t m_indexIO; - size_t m_leafIO; - -public: - MyVisitor() : m_indexIO(0), m_leafIO(0) {} - - void visitNode(const INode& n) - { - if (n.isLeaf()) m_leafIO++; - else m_indexIO++; - } - - void visitData(const IData& d) - { - IShape* pS; - d.getShape(&pS); - // do something. - delete pS; - - // data should be an array of characters representing a Region as a string. - //byte* pData = 0; - //size_t cLen = 0; - //d.getData(cLen, &pData); - // do something. - //string s = reinterpret_cast(pData); - //cout << s << endl; - //delete[] pData; - - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& ) {} -}; - -// example of a Strategy pattern. -// traverses the tree by level. -class MyQueryStrategy : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - queue ids; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - IShape* ps; - entry.getShape(&ps); - MovingRegion* pr = dynamic_cast(ps); - - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl << endl << endl; - // print node MBRs gnuplot style! - - delete ps; - - const INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 1) - { - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push(n->getChildIdentifier(cChild)); - } - } - - if (! ids.empty()) - { - nextEntry = ids.front(); ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } - } -}; - -// example of a Strategy pattern. -// find the total indexed space managed by the index (the MBR of the root). -class MyQueryStrategy2 : public IQueryStrategy -{ -public: - Region m_indexedSpace; - -public: - void getNextEntry(const IEntry& entry, id_type&, bool& hasNext) - { - // the first time we are called, entry points to the root. - - // stop after the root. - hasNext = false; - - IShape* ps; - entry.getShape(&ps); - ps->getMBR(m_indexedSpace); - delete ps; - } -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 3) - { - cerr << "Usage: " << argv[0] << " input_file tree_file." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file " << argv[1] << "." << endl; - return -1; - } - - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::loadDiskStorageManager(baseName); - // this will try to locate and open an already existing storage manager. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // If we need to open an existing tree stored in the storage manager, we only - // have to specify the index identifier as follows - ISpatialIndex* tree = TPRTree::loadTPRTree(*file, 1); - - size_t count = 0; - id_type id; - size_t op; - double ax, vx, ay, vy, ct, rt, unused; - double plow[2], phigh[2]; - double pvlow[2], pvhigh[2]; - size_t indexIO = 0; - size_t leafIO = 0; - - while (fin) - { - fin >> id >> op >> ct >> rt >> unused >> ax >> vx >> unused >> ay >> vy; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(ct, std::numeric_limits::max()); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - //ostringstream os; - //os << r; - //string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see RTree::Node::load and RTree::Node::store for - // an example of how to do that). - - //tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(rt, ct); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - if (tree->deleteData(r, id) == false) - { - cerr << "******ERROR******" << endl; - cerr << "Cannot delete id: " << id << " , count: " << count << endl; - return -1; - } - } - else if (op == QUERY) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = vx; phigh[1] = vy; - pvlow[0] = 0.0; pvlow[1] = 0.0; - pvhigh[0] = 0.0; pvhigh[1] = 0.0; - - libsupermesh::Tools::Interval ivT(ct, rt); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - MyVisitor vis; - - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - - indexIO += vis.m_indexIO; - leafIO += vis.m_leafIO; - // example of the Visitor pattern usage, for calculating how many nodes - // were visited. - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - MyQueryStrategy2 qs; - tree->queryStrategy(qs); - - cerr << "Indexed space: " << qs.m_indexedSpace << endl; - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Index I/O: " << indexIO << endl; - cerr << "Leaf I/O: " << leafIO << endl; - cerr << "Buffer hits: " << file->getHits() << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail writting the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/tprtree/test1/run b/spatialindex-1.8.5/test/tprtree/test1/run deleted file mode 100755 index 613cd99..0000000 --- a/spatialindex-1.8.5/test/tprtree/test1/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator -ds 1000 -sl 100 > d -awk '{if ($2 != 2) print $0}' < d > data -awk '{if ($2 == 2 && $3 >= 100) print $0}' < d > queries -rm -rf d - -echo Creating new TPR-Tree -../TPRTreeLoad data tree 20 - -echo Querying TPR-Tree -../TPRTreeQuery queries tree > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/tprtree/test2/run b/spatialindex-1.8.5/test/tprtree/test2/run deleted file mode 100755 index f13ea2c..0000000 --- a/spatialindex-1.8.5/test/tprtree/test2/run +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator -ds 1000 -sl 100 > mix - -echo Creating new TPR-Tree and Querying -../TPRTreeLoad mix tree 10 > res - -echo Running exhaustive search -../Exhaustive mix > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi - diff --git a/src/R-Tree_Intersection_Finder_C++.cpp b/src/R-Tree_Intersection_Finder_C++.cpp index cb4fd44..84e69ee 100644 --- a/src/R-Tree_Intersection_Finder_C++.cpp +++ b/src/R-Tree_Intersection_Finder_C++.cpp @@ -1,5 +1,6 @@ /* - Copyright (C) 2016-2017 The University of Edinburgh + For copyright information see COPYING in the libsupermesh root directory. For + authors see AUTHORS in the libsupermesh root directory. The file is part of libsupermesh @@ -114,15 +115,17 @@ #include "libsupermesh_configuration.h" #include "spatialindex/SpatialIndex.h" +/* #include "rtree/RTree.h" #include "rtree/BulkLoader.h" +*/ #include #include "R-Tree_Intersection_Finder_C++.h" using namespace libsupermesh; -using namespace libsupermesh::SpatialIndex; +using namespace SpatialIndex; // Modified version of code from rtree/gispyspatialindex.h // (GISPySpatialIndex), rtree/gispyspatialindex.cc (GISPySpatialIndex), and @@ -136,7 +139,8 @@ libsupermesh::RTree::RTree(const int &dim, const double *positions, : dim(dim), visitor(nelements) { this->memory = StorageManager::createNewMemoryStorageManager(); this->buffer = StorageManager::createNewRandomEvictionsBuffer(*this->memory, capacity, bWriteThrough); - + + /* Commented out 2019-03-28 // Modified version of code from createAndBulkLoadNewRTree in // src/rtree/RTree.cc in libspatialindex 1.8.5. Added 2016-02-24. id_type indexIdentifier = 0; // ?? @@ -151,6 +155,53 @@ libsupermesh::RTree::RTree(const int &dim, const double *positions, bl.bulkLoadUsingSTR(static_cast(this->tree), stream, bindex, bleaf, pageSize, numberOfPages); // End of modified code from createAndBulkLoadNewRTree in // src/rtree/RTree.cc in libspatialindex 1.8.5 + */ + + // Code first added 2019-03-28 + // Properties as used in PropertySet version of createAndBulkLoadNewRTree in + // src/rtree/RTree.cc, libspatialindex 1.8.5 + Tools::PropertySet properties; + + Tools::Variant treeVariant; + treeVariant.m_varType = Tools::VT_LONG; + treeVariant.m_val.lVal = SpatialIndex::RTree::RV_RSTAR; + properties.setProperty("TreeVariant", treeVariant); + + Tools::Variant v_fillFactor; + v_fillFactor.m_varType = Tools::VT_DOUBLE; + v_fillFactor.m_val.dblVal = fillFactor; + properties.setProperty("FillFactor", v_fillFactor); + + Tools::Variant v_indexCapacity; + v_indexCapacity.m_varType = Tools::VT_ULONG; + v_indexCapacity.m_val.ulVal = indexCapacity; + properties.setProperty("IndexCapacity", v_indexCapacity); + + Tools::Variant v_leafCapacity; + v_leafCapacity.m_varType = Tools::VT_ULONG; + v_leafCapacity.m_val.ulVal = leafCapacity; + properties.setProperty("LeafCapacity", v_leafCapacity); + + Tools::Variant dimension; + dimension.m_varType = Tools::VT_ULONG; + dimension.m_val.ulVal = dim; + properties.setProperty("Dimension", dimension); + + Tools::Variant pageSize; + pageSize.m_varType = Tools::VT_ULONG; + pageSize.m_val.ulVal = std::numeric_limits::max() / 2; + properties.setProperty("ExternalSortBufferPageSize", pageSize); + + Tools::Variant numberOfPages; + numberOfPages.m_varType = Tools::VT_ULONG; + numberOfPages.m_val.ulVal = 2; + properties.setProperty("ExternalSortBufferTotalPages", numberOfPages); + + MeshDataStream stream(dim, positions, loc, nelements, enlist); + id_type indexIdentifier = 0; + this->tree = SpatialIndex::RTree::createAndBulkLoadNewRTree( + SpatialIndex::RTree::BLM_STR, stream, *this->buffer, properties, indexIdentifier); + // End of code first added 2019-03-28 } // End of modified code from rtree/gispyspatialindex.h, // rtree/gispyspatialindex.cc, and rtree/wrapper.cc From 362567cfddabd88d43f474db0f38b70cdb7f3961 Mon Sep 17 00:00:00 2001 From: "Dr. James R. Maddison" Date: Thu, 28 Mar 2019 15:04:40 +0000 Subject: [PATCH 02/10] Remove reference to non-existent directory --- COPYING | 5 ++--- doc/manual.tex | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/COPYING b/COPYING index a5e6683..1f85031 100644 --- a/COPYING +++ b/COPYING @@ -84,9 +84,8 @@ distribution. libsupermesh previously included a modified version of libspatialindex 1.8.5. libsupermesh additionally uses modified versions of code from libspatialindex -- see comments in include/R-Tree_Intersection_Finder_C++.h and -src/R-Tree_Intersection_Finder_C++.cpp. Further information regarding -libspatialindex can be found in spatialindex-1.8.5/. libspatialindex 1.8.5 -license information: +src/R-Tree_Intersection_Finder_C++.cpp. libspatialindex 1.8.5 license +information: License (MIT) ------------------------------------------------------------------------------ diff --git a/doc/manual.tex b/doc/manual.tex index 369a50a..4c1ffc4 100644 --- a/doc/manual.tex +++ b/doc/manual.tex @@ -2798,9 +2798,8 @@ \subsection{libspatialindex} libsupermesh previously included a modified version of libspatialindex 1.8.5. libsupermesh additionally uses modified versions of code from libspatialindex -- see comments in include/R-Tree\_Intersection\_Finder\_C++.h and -src/R-Tree\_Intersection\_Finder\_C++.cpp. Further information regarding -libspatialindex can be found in spatialindex-1.8.5/. libspatialindex 1.8.5 -license information: +src/R-Tree\_Intersection\_Finder\_C++.cpp. libspatialindex 1.8.5 license +information: \begin{lstlisting}[language=] License (MIT) From 4f0be8a9b6eb6119417946e4b31a900500c63f0b Mon Sep 17 00:00:00 2001 From: "Dr. James R. Maddison" Date: Mon, 1 Apr 2019 12:41:24 +0100 Subject: [PATCH 03/10] spatialindex->libspatialindex, add NAMES to find_library --- CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7c4d0a..e7f20fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,16 +63,16 @@ if(LIBSUPERMESH_ENABLE_JUDY) include_directories(${JUDY_INCLUDE_DIR}) endif() -find_library(SPATIALINDEX_LIBRARY NAMES spatialindex) -if(SPATIALINDEX_LIBRARY STREQUAL SPATIALINDEX_LIBRARY-NOTFOUND) - message(FATAL_ERROR "spatialindex library not found") +find_library(LIBSPATIALINDEX_LIBRARY NAMES spatialindex) +if(LIBSPATIALINDEX_LIBRARY STREQUAL LIBSPATIALINDEX_LIBRARY-NOTFOUND) + message(FATAL_ERROR "libspatialindex library not found") endif() -list(APPEND link_libraries ${SPATIALINDEX_LIBRARY}) -find_path(SPATIALINDEX_INCLUDE_DIR spatialindex/SpatialIndex.h) -if(SPATIALINDEX_INCLUDE_DIR STREQUAL SPATIALINDEX_INCLUDE_DIR-NOTFOUND) - message(FATAL_ERROR "spatialindex header file not found") +list(APPEND link_libraries ${LIBSPATIALINDEX_LIBRARY}) +find_path(LIBSPATIALINDEX_INCLUDE_DIR NAMES spatialindex/SpatialIndex.h) +if(LIBSPATIALINDEX_INCLUDE_DIR STREQUAL LIBSPATIALINDEX_INCLUDE_DIR-NOTFOUND) + message(FATAL_ERROR "libspatialindex header file not found") endif() -include_directories(${SPATIALINDEX_INCLUDE_DIR}) +include_directories(${LIBSPATIALINDEX_INCLUDE_DIR}) find_package(Backtrace) if(Backtrace_FOUND) From 615ae2cc2dce73efb6d274d71d3ed7e4c53b8fa0 Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Fri, 29 Sep 2023 14:01:10 +0100 Subject: [PATCH 04/10] Remove spatialindex 1.8.5 and build against external --- .github/workflows/build.yml | 5 + CMakeLists.txt | 93 +- README.md | 2 + spatialindex-1.8.5/AUTHORS | 14 - spatialindex-1.8.5/CMakeLists.txt | 240 - spatialindex-1.8.5/COPYING | 48 - spatialindex-1.8.5/ChangeLog | 656 - spatialindex-1.8.5/INSTALL | 231 - spatialindex-1.8.5/INSTALL.WIN | 28 - spatialindex-1.8.5/Makefile.am | 37 - spatialindex-1.8.5/Makefile.in | 942 - spatialindex-1.8.5/NEWS | 0 spatialindex-1.8.5/README | 10 - spatialindex-1.8.5/aclocal.m4 | 1154 - spatialindex-1.8.5/compile | 347 - spatialindex-1.8.5/config.guess | 1558 -- spatialindex-1.8.5/config.sub | 1791 -- spatialindex-1.8.5/configure | 17990 ---------------- spatialindex-1.8.5/configure.ac | 83 - spatialindex-1.8.5/depcomp | 522 - spatialindex-1.8.5/include/Makefile.am | 33 - spatialindex-1.8.5/include/Makefile.in | 582 - .../include/spatialindex/LineSegment.h | 108 - .../include/spatialindex/MVRTree.h | 94 - .../include/spatialindex/MovingPoint.h | 90 - .../include/spatialindex/MovingRegion.h | 176 - .../include/spatialindex/Point.h | 92 - .../include/spatialindex/RTree.h | 113 - .../include/spatialindex/Region.h | 111 - .../include/spatialindex/SpatialIndex.h | 266 - .../include/spatialindex/TPRTree.h | 90 - .../include/spatialindex/TimePoint.h | 100 - .../include/spatialindex/TimeRegion.h | 114 - .../include/spatialindex/Version.h | 48 - .../include/spatialindex/capi/BoundsQuery.h | 53 - .../include/spatialindex/capi/CountVisitor.h | 53 - .../include/spatialindex/capi/CustomStorage.h | 89 - .../include/spatialindex/capi/DataStream.h | 61 - .../include/spatialindex/capi/Error.h | 54 - .../include/spatialindex/capi/IdVisitor.h | 55 - .../include/spatialindex/capi/Index.h | 86 - .../include/spatialindex/capi/LeafQuery.h | 78 - .../include/spatialindex/capi/ObjVisitor.h | 56 - .../include/spatialindex/capi/Utility.h | 43 - .../include/spatialindex/capi/sidx_api.h | 366 - .../include/spatialindex/capi/sidx_config.h | 120 - .../include/spatialindex/capi/sidx_export.h | 44 - .../include/spatialindex/capi/sidx_impl.h | 46 - .../include/spatialindex/tools/PointerPool.h | 128 - .../include/spatialindex/tools/PoolPointer.h | 107 - .../include/spatialindex/tools/SmartPointer.h | 89 - .../include/spatialindex/tools/Tools.h | 512 - .../include/spatialindex/tools/rand48.h | 85 - spatialindex-1.8.5/install-sh | 322 - spatialindex-1.8.5/ltmain.sh | 9661 --------- spatialindex-1.8.5/m4/libtool.m4 | 7997 ------- spatialindex-1.8.5/m4/ltoptions.m4 | 384 - spatialindex-1.8.5/m4/ltsugar.m4 | 123 - spatialindex-1.8.5/m4/ltversion.m4 | 23 - spatialindex-1.8.5/m4/lt~obsolete.m4 | 98 - spatialindex-1.8.5/missing | 353 - spatialindex-1.8.5/mkinstalldirs | 150 - .../spatialindex-vc/spatialindex.vcproj | 960 - spatialindex-1.8.5/spatialindex.sln | 91 - spatialindex-1.8.5/src/CMakeLists.txt | 239 - spatialindex-1.8.5/src/Makefile.am | 5 - spatialindex-1.8.5/src/Makefile.in | 666 - spatialindex-1.8.5/src/capi/BoundsQuery.cc | 51 - spatialindex-1.8.5/src/capi/CountVisitor.cc | 57 - spatialindex-1.8.5/src/capi/CustomStorage.cc | 122 - spatialindex-1.8.5/src/capi/DataStream.cc | 118 - spatialindex-1.8.5/src/capi/Error.cc | 55 - spatialindex-1.8.5/src/capi/IdVisitor.cc | 59 - spatialindex-1.8.5/src/capi/Index.cc | 436 - spatialindex-1.8.5/src/capi/LeafQuery.cc | 132 - spatialindex-1.8.5/src/capi/Makefile.am | 14 - spatialindex-1.8.5/src/capi/Makefile.in | 601 - spatialindex-1.8.5/src/capi/ObjVisitor.cc | 66 - spatialindex-1.8.5/src/capi/Utility.cc | 240 - spatialindex-1.8.5/src/capi/sidx_api.cc | 3519 --- spatialindex-1.8.5/src/libspatialindex.pc.in | 12 - spatialindex-1.8.5/src/mvrtree/Index.cc | 442 - spatialindex-1.8.5/src/mvrtree/Index.h | 86 - spatialindex-1.8.5/src/mvrtree/Leaf.cc | 116 - spatialindex-1.8.5/src/mvrtree/Leaf.h | 59 - spatialindex-1.8.5/src/mvrtree/MVRTree.cc | 1365 -- spatialindex-1.8.5/src/mvrtree/MVRTree.h | 232 - spatialindex-1.8.5/src/mvrtree/Makefile.am | 4 - spatialindex-1.8.5/src/mvrtree/Makefile.in | 601 - spatialindex-1.8.5/src/mvrtree/Node.cc | 1525 -- spatialindex-1.8.5/src/mvrtree/Node.h | 195 - .../src/mvrtree/PointerPoolNode.h | 144 - spatialindex-1.8.5/src/mvrtree/Statistics.cc | 203 - spatialindex-1.8.5/src/mvrtree/Statistics.h | 110 - spatialindex-1.8.5/src/rtree/BulkLoader.cc | 471 - spatialindex-1.8.5/src/rtree/BulkLoader.h | 138 - spatialindex-1.8.5/src/rtree/Index.cc | 384 - spatialindex-1.8.5/src/rtree/Index.h | 84 - spatialindex-1.8.5/src/rtree/Leaf.cc | 151 - spatialindex-1.8.5/src/rtree/Leaf.h | 58 - spatialindex-1.8.5/src/rtree/Makefile.am | 4 - spatialindex-1.8.5/src/rtree/Makefile.in | 602 - spatialindex-1.8.5/src/rtree/Node.cc | 1087 - spatialindex-1.8.5/src/rtree/Node.h | 199 - .../src/rtree/PointerPoolNode.h | 150 - spatialindex-1.8.5/src/rtree/RTree.cc | 1543 -- spatialindex-1.8.5/src/rtree/RTree.h | 210 - spatialindex-1.8.5/src/rtree/Statistics.cc | 183 - spatialindex-1.8.5/src/rtree/Statistics.h | 104 - .../src/spatialindex/LineSegment.cc | 500 - .../src/spatialindex/Makefile.am | 4 - .../src/spatialindex/Makefile.in | 587 - .../src/spatialindex/MovingPoint.cc | 334 - .../src/spatialindex/MovingRegion.cc | 1242 -- spatialindex-1.8.5/src/spatialindex/Point.cc | 273 - spatialindex-1.8.5/src/spatialindex/Region.cc | 603 - .../src/spatialindex/SpatialIndexImpl.cc | 104 - .../src/spatialindex/TimePoint.cc | 308 - .../src/spatialindex/TimeRegion.cc | 430 - .../src/storagemanager/Buffer.cc | 159 - .../src/storagemanager/Buffer.h | 90 - .../src/storagemanager/DiskStorageManager.cc | 517 - .../src/storagemanager/DiskStorageManager.h | 69 - .../src/storagemanager/Makefile.am | 4 - .../src/storagemanager/Makefile.in | 600 - .../storagemanager/MemoryStorageManager.cc | 141 - .../src/storagemanager/MemoryStorageManager.h | 73 - .../storagemanager/RandomEvictionsBuffer.cc | 108 - .../storagemanager/RandomEvictionsBuffer.h | 53 - spatialindex-1.8.5/src/tools/Makefile.am | 8 - spatialindex-1.8.5/src/tools/Makefile.in | 582 - spatialindex-1.8.5/src/tools/Tools.cc | 1305 -- spatialindex-1.8.5/src/tools/rand48.cc | 150 - spatialindex-1.8.5/src/tprtree/Index.cc | 413 - spatialindex-1.8.5/src/tprtree/Index.h | 84 - spatialindex-1.8.5/src/tprtree/Leaf.cc | 148 - spatialindex-1.8.5/src/tprtree/Leaf.h | 58 - spatialindex-1.8.5/src/tprtree/Makefile.am | 4 - spatialindex-1.8.5/src/tprtree/Makefile.in | 601 - spatialindex-1.8.5/src/tprtree/Node.cc | 1260 -- spatialindex-1.8.5/src/tprtree/Node.h | 211 - .../src/tprtree/PointerPoolNode.h | 145 - spatialindex-1.8.5/src/tprtree/Statistics.cc | 183 - spatialindex-1.8.5/src/tprtree/Statistics.h | 104 - spatialindex-1.8.5/src/tprtree/TPRTree.cc | 1293 -- spatialindex-1.8.5/src/tprtree/TPRTree.h | 210 - spatialindex-1.8.5/test/CMakeLists.txt | 53 - spatialindex-1.8.5/test/Makefile.am | 2 - spatialindex-1.8.5/test/Makefile.in | 607 - .../test/geometry/Intersection.cc | 81 - spatialindex-1.8.5/test/geometry/Makefile.am | 5 - spatialindex-1.8.5/test/geometry/Makefile.in | 578 - spatialindex-1.8.5/test/mvrtree/Exhaustive.cc | 216 - spatialindex-1.8.5/test/mvrtree/Generator.cc | 186 - .../test/mvrtree/MVRTreeLoad.cc | 220 - .../test/mvrtree/MVRTreeQuery.cc | 279 - spatialindex-1.8.5/test/mvrtree/Makefile.am | 12 - spatialindex-1.8.5/test/mvrtree/Makefile.in | 611 - spatialindex-1.8.5/test/mvrtree/test1/run | 29 - spatialindex-1.8.5/test/mvrtree/test2/run | 22 - spatialindex-1.8.5/test/rtree/Exhaustive.cc | 206 - spatialindex-1.8.5/test/rtree/Generator.cc | 140 - spatialindex-1.8.5/test/rtree/Makefile.am | 13 - spatialindex-1.8.5/test/rtree/Makefile.in | 623 - .../test/rtree/RTreeBulkLoad.cc | 173 - spatialindex-1.8.5/test/rtree/RTreeLoad.cc | 220 - spatialindex-1.8.5/test/rtree/RTreeQuery.cc | 283 - spatialindex-1.8.5/test/rtree/test1/run | 29 - spatialindex-1.8.5/test/rtree/test2/run | 23 - spatialindex-1.8.5/test/rtree/test3/run | 30 - spatialindex-1.8.5/test/rtree/test4/run | 29 - spatialindex-1.8.5/test/tprtree/Exhaustive.cc | 264 - spatialindex-1.8.5/test/tprtree/Generator.cc | 105 - spatialindex-1.8.5/test/tprtree/Makefile.am | 11 - spatialindex-1.8.5/test/tprtree/Makefile.in | 630 - .../test/tprtree/RandomGenerator.cc | 183 - .../test/tprtree/RandomGenerator.h | 151 - .../test/tprtree/TPRTreeLoad.cc | 209 - .../test/tprtree/TPRTreeQuery.cc | 309 - spatialindex-1.8.5/test/tprtree/test1/run | 29 - spatialindex-1.8.5/test/tprtree/test2/run | 23 - src/R-Tree_Intersection_Finder_C++.cpp | 18 +- 182 files changed, 67 insertions(+), 86390 deletions(-) delete mode 100644 spatialindex-1.8.5/AUTHORS delete mode 100644 spatialindex-1.8.5/CMakeLists.txt delete mode 100644 spatialindex-1.8.5/COPYING delete mode 100644 spatialindex-1.8.5/ChangeLog delete mode 100644 spatialindex-1.8.5/INSTALL delete mode 100644 spatialindex-1.8.5/INSTALL.WIN delete mode 100644 spatialindex-1.8.5/Makefile.am delete mode 100644 spatialindex-1.8.5/Makefile.in delete mode 100644 spatialindex-1.8.5/NEWS delete mode 100644 spatialindex-1.8.5/README delete mode 100644 spatialindex-1.8.5/aclocal.m4 delete mode 100755 spatialindex-1.8.5/compile delete mode 100755 spatialindex-1.8.5/config.guess delete mode 100755 spatialindex-1.8.5/config.sub delete mode 100755 spatialindex-1.8.5/configure delete mode 100644 spatialindex-1.8.5/configure.ac delete mode 100644 spatialindex-1.8.5/depcomp delete mode 100644 spatialindex-1.8.5/include/Makefile.am delete mode 100644 spatialindex-1.8.5/include/Makefile.in delete mode 100644 spatialindex-1.8.5/include/spatialindex/LineSegment.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/MVRTree.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/MovingPoint.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/MovingRegion.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/Point.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/RTree.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/Region.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/SpatialIndex.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/TPRTree.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/TimePoint.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/TimeRegion.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/Version.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/DataStream.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/Error.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/Index.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/Utility.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/Tools.h delete mode 100644 spatialindex-1.8.5/include/spatialindex/tools/rand48.h delete mode 100755 spatialindex-1.8.5/install-sh delete mode 100644 spatialindex-1.8.5/ltmain.sh delete mode 100644 spatialindex-1.8.5/m4/libtool.m4 delete mode 100644 spatialindex-1.8.5/m4/ltoptions.m4 delete mode 100644 spatialindex-1.8.5/m4/ltsugar.m4 delete mode 100644 spatialindex-1.8.5/m4/ltversion.m4 delete mode 100644 spatialindex-1.8.5/m4/lt~obsolete.m4 delete mode 100644 spatialindex-1.8.5/missing delete mode 100755 spatialindex-1.8.5/mkinstalldirs delete mode 100755 spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj delete mode 100755 spatialindex-1.8.5/spatialindex.sln delete mode 100644 spatialindex-1.8.5/src/CMakeLists.txt delete mode 100644 spatialindex-1.8.5/src/Makefile.am delete mode 100644 spatialindex-1.8.5/src/Makefile.in delete mode 100644 spatialindex-1.8.5/src/capi/BoundsQuery.cc delete mode 100644 spatialindex-1.8.5/src/capi/CountVisitor.cc delete mode 100644 spatialindex-1.8.5/src/capi/CustomStorage.cc delete mode 100644 spatialindex-1.8.5/src/capi/DataStream.cc delete mode 100644 spatialindex-1.8.5/src/capi/Error.cc delete mode 100644 spatialindex-1.8.5/src/capi/IdVisitor.cc delete mode 100644 spatialindex-1.8.5/src/capi/Index.cc delete mode 100644 spatialindex-1.8.5/src/capi/LeafQuery.cc delete mode 100644 spatialindex-1.8.5/src/capi/Makefile.am delete mode 100644 spatialindex-1.8.5/src/capi/Makefile.in delete mode 100644 spatialindex-1.8.5/src/capi/ObjVisitor.cc delete mode 100644 spatialindex-1.8.5/src/capi/Utility.cc delete mode 100644 spatialindex-1.8.5/src/capi/sidx_api.cc delete mode 100644 spatialindex-1.8.5/src/libspatialindex.pc.in delete mode 100644 spatialindex-1.8.5/src/mvrtree/Index.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Index.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/Leaf.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Leaf.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/MVRTree.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/MVRTree.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/Makefile.am delete mode 100644 spatialindex-1.8.5/src/mvrtree/Makefile.in delete mode 100644 spatialindex-1.8.5/src/mvrtree/Node.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Node.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h delete mode 100644 spatialindex-1.8.5/src/mvrtree/Statistics.cc delete mode 100644 spatialindex-1.8.5/src/mvrtree/Statistics.h delete mode 100644 spatialindex-1.8.5/src/rtree/BulkLoader.cc delete mode 100644 spatialindex-1.8.5/src/rtree/BulkLoader.h delete mode 100644 spatialindex-1.8.5/src/rtree/Index.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Index.h delete mode 100644 spatialindex-1.8.5/src/rtree/Leaf.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Leaf.h delete mode 100644 spatialindex-1.8.5/src/rtree/Makefile.am delete mode 100644 spatialindex-1.8.5/src/rtree/Makefile.in delete mode 100644 spatialindex-1.8.5/src/rtree/Node.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Node.h delete mode 100644 spatialindex-1.8.5/src/rtree/PointerPoolNode.h delete mode 100644 spatialindex-1.8.5/src/rtree/RTree.cc delete mode 100644 spatialindex-1.8.5/src/rtree/RTree.h delete mode 100644 spatialindex-1.8.5/src/rtree/Statistics.cc delete mode 100644 spatialindex-1.8.5/src/rtree/Statistics.h delete mode 100644 spatialindex-1.8.5/src/spatialindex/LineSegment.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/Makefile.am delete mode 100644 spatialindex-1.8.5/src/spatialindex/Makefile.in delete mode 100644 spatialindex-1.8.5/src/spatialindex/MovingPoint.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/MovingRegion.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/Point.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/Region.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/TimePoint.cc delete mode 100644 spatialindex-1.8.5/src/spatialindex/TimeRegion.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/Buffer.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/Buffer.h delete mode 100644 spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h delete mode 100644 spatialindex-1.8.5/src/storagemanager/Makefile.am delete mode 100644 spatialindex-1.8.5/src/storagemanager/Makefile.in delete mode 100644 spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h delete mode 100644 spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc delete mode 100644 spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h delete mode 100755 spatialindex-1.8.5/src/tools/Makefile.am delete mode 100644 spatialindex-1.8.5/src/tools/Makefile.in delete mode 100644 spatialindex-1.8.5/src/tools/Tools.cc delete mode 100644 spatialindex-1.8.5/src/tools/rand48.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Index.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Index.h delete mode 100644 spatialindex-1.8.5/src/tprtree/Leaf.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Leaf.h delete mode 100644 spatialindex-1.8.5/src/tprtree/Makefile.am delete mode 100644 spatialindex-1.8.5/src/tprtree/Makefile.in delete mode 100644 spatialindex-1.8.5/src/tprtree/Node.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Node.h delete mode 100644 spatialindex-1.8.5/src/tprtree/PointerPoolNode.h delete mode 100644 spatialindex-1.8.5/src/tprtree/Statistics.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/Statistics.h delete mode 100644 spatialindex-1.8.5/src/tprtree/TPRTree.cc delete mode 100644 spatialindex-1.8.5/src/tprtree/TPRTree.h delete mode 100644 spatialindex-1.8.5/test/CMakeLists.txt delete mode 100644 spatialindex-1.8.5/test/Makefile.am delete mode 100644 spatialindex-1.8.5/test/Makefile.in delete mode 100644 spatialindex-1.8.5/test/geometry/Intersection.cc delete mode 100644 spatialindex-1.8.5/test/geometry/Makefile.am delete mode 100644 spatialindex-1.8.5/test/geometry/Makefile.in delete mode 100644 spatialindex-1.8.5/test/mvrtree/Exhaustive.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/Generator.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc delete mode 100644 spatialindex-1.8.5/test/mvrtree/Makefile.am delete mode 100644 spatialindex-1.8.5/test/mvrtree/Makefile.in delete mode 100755 spatialindex-1.8.5/test/mvrtree/test1/run delete mode 100755 spatialindex-1.8.5/test/mvrtree/test2/run delete mode 100644 spatialindex-1.8.5/test/rtree/Exhaustive.cc delete mode 100644 spatialindex-1.8.5/test/rtree/Generator.cc delete mode 100644 spatialindex-1.8.5/test/rtree/Makefile.am delete mode 100644 spatialindex-1.8.5/test/rtree/Makefile.in delete mode 100644 spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc delete mode 100644 spatialindex-1.8.5/test/rtree/RTreeLoad.cc delete mode 100644 spatialindex-1.8.5/test/rtree/RTreeQuery.cc delete mode 100755 spatialindex-1.8.5/test/rtree/test1/run delete mode 100755 spatialindex-1.8.5/test/rtree/test2/run delete mode 100755 spatialindex-1.8.5/test/rtree/test3/run delete mode 100755 spatialindex-1.8.5/test/rtree/test4/run delete mode 100644 spatialindex-1.8.5/test/tprtree/Exhaustive.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/Generator.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/Makefile.am delete mode 100644 spatialindex-1.8.5/test/tprtree/Makefile.in delete mode 100644 spatialindex-1.8.5/test/tprtree/RandomGenerator.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/RandomGenerator.h delete mode 100644 spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc delete mode 100644 spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc delete mode 100755 spatialindex-1.8.5/test/tprtree/test1/run delete mode 100755 spatialindex-1.8.5/test/tprtree/test2/run diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 66ac762..646d16d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,11 @@ jobs: - uses: mpi4py/setup-mpi@v1 with: mpi: openmpi + - name: Install spatialindex + shell: bash + run: | + sudo apt update + sudo apt install libspatialindex-dev - name: CMake run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 75f7a26..be9a6e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.18) if(DEFINED CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Build type. Valid values are \"Debug\" and \"Release\".") @@ -105,7 +105,7 @@ if(LIBSUPERMESH_AUTO_COMPILER_FLAGS) endif() if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(CMAKE_CXX_FLAGS "-pipe -std=c++03") + set(CMAKE_CXX_FLAGS "-pipe -std=c++11") if(BUILD_SHARED_LIBS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") endif() @@ -136,7 +136,7 @@ else() endif() if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") if(BUILD_SHARED_LIBS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") endif() @@ -145,62 +145,60 @@ else() endif() endif() +# Use the MPI compilers to compile +set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER}) +set(CMAKE_C_COMPILER ${MPI_C_COMPILER}) +set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER}) + +# Print out all the MPI configuration info +message(STATUS "") +message(STATUS "MPI_Fortran_COMPILER=${MPI_Fortran_COMPILER}") message(STATUS "CMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}") message(STATUS "CMAKE_Fortran_FLAGS_DEBUG=${CMAKE_Fortran_FLAGS_DEBUG}") message(STATUS "CMAKE_Fortran_FLAGS_RELEASE=${CMAKE_Fortran_FLAGS_RELEASE}") +message(STATUS "") +message(STATUS "MPI_C_COMPILER=${MPI_C_COMPILER}") message(STATUS "CMAKE_C_FLAGS=${CMAKE_C_FLAGS}") message(STATUS "CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}") message(STATUS "CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}") +message(STATUS "") +message(STATUS "MPI_CXX_COMPILER=${MPI_CXX_COMPILER}") message(STATUS "CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}") message(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}") message(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}") +message(STATUS "") -include_directories(${LIBSUPERMESH_SOURCE_DIR}/spatialindex-1.8.5/include/) -include_directories(${LIBSUPERMESH_SOURCE_DIR}/spatialindex-1.8.5/src/) -add_subdirectory(spatialindex-1.8.5 EXCLUDE_FROM_ALL) -set(spatialindex_object_files - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Index.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/TPRTree.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Leaf.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Statistics.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tprtree/Node.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/MemoryStorageManager.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/RandomEvictionsBuffer.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/Buffer.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/storagemanager/DiskStorageManager.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Index.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Leaf.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/MVRTree.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Statistics.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/mvrtree/Node.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/SpatialIndexImpl.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/Point.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/MovingRegion.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/MovingPoint.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/TimeRegion.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/Region.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/LineSegment.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/spatialindex/TimePoint.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tools/Tools.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Index.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Leaf.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/RTree.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Statistics.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/BulkLoader.cc${CMAKE_CXX_OUTPUT_EXTENSION} - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/rtree/Node.cc${CMAKE_CXX_OUTPUT_EXTENSION} -) -check_function_exists(srand48 HAVE_SRAND48) -if(NOT HAVE_SRAND48) - list(APPEND spatialindex_object_files - ${LIBSUPERMESH_BINARY_DIR}/spatialindex-1.8.5/src/CMakeFiles/spatialindex.dir/tools/rand48.cc${CMAKE_CXX_OUTPUT_EXTENSION}) +# Python is not required, but we want to add pip packages to spatialindex search path +find_package(Python) +if(Python_FOUND) + message(STATUS "Python_VERSION_MAJOR " ${Python_VERSION_MAJOR}) + message(STATUS "Python_VERSION_MINOR " ${Python_VERSION_MINOR}) +endif() + +# Find the spatialindex library +find_library(spatialindexlib + NAMES spatialindex + REQUIRED + PATHS /usr/local/lib /usr/lib $ENV{VIRTUAL_ENV}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/rtree/lib + ) +if(spatialindexlib) + message(STATUS "Found libspatialindex shared library: " ${spatialindexlib}) + set(link_libraries ${link_libraries} ${spatialindexlib}) +endif() + +# Find the spatialindex headers +find_path(spatialindexheaders + NAMES spatialindex/SpatialIndex.h + REQUIRED + PATHS /usr/local/include /usr/include $ENV{VIRTUAL_ENV}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/rtree/include + ) +if(spatialindexheaders) + message(STATUS "Found libspatialindex headers: " ${spatialindexheaders}) + include_directories(${spatialindexheaders}) endif() -foreach(spatialindex_object_file ${spatialindex_object_files}) - set_source_files_properties(${spatialindex_object_file} PROPERTIES GENERATED 1) -endforeach() file(GLOB source_files ${LIBSUPERMESH_SOURCE_DIR}/src/*.F90 ${LIBSUPERMESH_SOURCE_DIR}/src/*.c ${LIBSUPERMESH_SOURCE_DIR}/src/*.cpp) -add_library(supermesh ${source_files} ${spatialindex_object_files}) -add_dependencies(supermesh spatialindex) +add_library(supermesh ${source_files}) set(test_main ${LIBSUPERMESH_SOURCE_DIR}/src/tests/test_main.cpp) file(GLOB unittest_files ${LIBSUPERMESH_SOURCE_DIR}/src/tests/*.F90) @@ -220,6 +218,7 @@ endforeach() set(test_link_libraries supermesh ${link_libraries} ${MPI_CXX_LIBRARIES}) target_link_libraries(supermesh ${link_libraries}) +set_target_properties(supermesh PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE) foreach(test ${unittests}) target_link_libraries(${test} ${test_link_libraries}) endforeach() @@ -253,7 +252,7 @@ if(ENABLE_DOCS) if(NOT LATEX_FOUND OR NOT LATEX_PDFLATEX_FOUND OR NOT LATEX_BIBTEX_FOUND) message(SEND_ERROR "Required LaTeX components not found") endif() - + include(${LIBSUPERMESH_SOURCE_DIR}/cmake/UseLATEX.cmake) set(LATEX_OUTPUT_PATH ${LIBSUPERMESH_BINARY_DIR}/doc) add_latex_document(doc/manual.tex INPUTS doc/version.tex diff --git a/README.md b/README.md index ca34409..59823d3 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ libsupermesh parallel supermeshing library. ## Getting started ## +Required [spatialindex](https://github.com/libspatialindex/libspatialindex) to be installed. + Documentation can be found in the libsupermesh manual. This can be built using: ``` diff --git a/spatialindex-1.8.5/AUTHORS b/spatialindex-1.8.5/AUTHORS deleted file mode 100644 index 0da3661..0000000 --- a/spatialindex-1.8.5/AUTHORS +++ /dev/null @@ -1,14 +0,0 @@ -Marios Hadjieleftheriou -- Main author -mhadji@gmail.com - -Howard Butler -- minor packaging, C API, and some Windows work -hobu.inc@gmail.com - -Leonard NorrgĂ„rd - CountVisitor in C API -leonard.norrgard@refactor.fi - -Matthias (nitro) - CustomStorage in C API -nitro@dr-code.org - -Norman Barker - flush(), index paging, C API improvements -norman.barker@gmail.com \ No newline at end of file diff --git a/spatialindex-1.8.5/CMakeLists.txt b/spatialindex-1.8.5/CMakeLists.txt deleted file mode 100644 index b46b0a0..0000000 --- a/spatialindex-1.8.5/CMakeLists.txt +++ /dev/null @@ -1,240 +0,0 @@ -# -# top-level CMake configuration file for PDAL -# -# (based originally on the libLAS files copyright Mateusz Loskot) - -cmake_minimum_required(VERSION 2.6.0) -project(spatialindex) - -#------------------------------------------------------------------------------ -# internal cmake settings -#------------------------------------------------------------------------------ - -set(CMAKE_COLOR_MAKEFILE ON) - -# Allow advanced users to generate Makefiles printing detailed commands -mark_as_advanced(CMAKE_VERBOSE_MAKEFILE) - -# Path to additional CMake modules -set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) - -if (CMAKE_MAJOR_VERSION GREATER 2) - cmake_policy(SET CMP0042 OLD) # osx rpath -endif() -#------------------------------------------------------------------------------ -# libspatialindex general settings -#------------------------------------------------------------------------------ - -SET(SIDX_VERSION_MAJOR "1") -SET(SIDX_VERSION_MINOR "8") -SET(SIDX_VERSION_PATCH "5") -SET(SIDX_LIB_VERSION "4.1.0") -SET(SIDX_LIB_SOVERSION "4") - - -set(SIDX_VERSION_STRING "${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERSION_PATCH}") - - -# Name of C++ library - -set(SIDX_LIB_NAME spatialindex) -set(SIDX_C_LIB_NAME spatialindex_c) - -if(WIN32) - if (MSVC) - if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11 OR MSVC12 OR MSVC13) - if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set( SIDX_LIB_NAME "spatialindex-64" ) - set( SIDX_C_LIB_NAME "spatialindex_c-64" ) - else( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set( SIDX_LIB_NAME "spatialindex-32" ) - set( SIDX_C_LIB_NAME "spatialindex_c-32" ) - endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - endif() - endif() -endif() - - -set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) - -include (CheckFunctionExists) - -check_function_exists(srand48 HAVE_SRAND48) -check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) -check_function_exists(memset HAVE_MEMSET) -check_function_exists(memcpy HAVE_MEMCPY) -check_function_exists(bcopy HAVE_BCOPY) - -INCLUDE (CheckIncludeFiles) -check_include_files(pthread.h HAVE_PTHREAD_H) - - -if (HAVE_SRAND48) - add_definitions(-DHAVE_SRAND48=1) -endif() - -if (HAVE_GETTIMEOFDAY) - add_definitions(-DHAVE_GETTIMEOFDAY=1) -endif() - -if (HAVE_BZERO) - add_definitions(-DHAVE_BZERO=1) -endif() - -if (HAVE_MEMSET) - add_definitions(-DHAVE_MEMSET=1) -endif() - -if (HAVE_MEMCPY) - add_definitions(-DHAVE_MEMCPY=1) -endif() - -if (HAVE_BCOPY) - add_definitions(-DHAVE_BCOPY=1) -endif() - -if (HAVE_PTHREAD_H) - add_definitions(-DHAVE_PTHREAD_H=1) -endif() - -#------------------------------------------------------------------------------ -# General build settings -#------------------------------------------------------------------------------ - -# note we default to debug mode -if(NOT MSVC_IDE) - if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING - "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel" FORCE) - endif() - message(STATUS "Setting libspatialindex build type - ${CMAKE_BUILD_TYPE}") -endif() - -set(SIDX_BUILD_TYPE ${CMAKE_BUILD_TYPE}) - -# TODO: Still testing the output paths --mloskot -set(SIDX_BUILD_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") - -# Output directory in which to build RUNTIME target files. -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SIDX_BUILD_OUTPUT_DIRECTORY}) - -# Output directory in which to build LIBRARY target files -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${SIDX_BUILD_OUTPUT_DIRECTORY}) - -# Output directory in which to build ARCHIVE target files. -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${SIDX_BUILD_OUTPUT_DIRECTORY}) - - -#------------------------------------------------------------------------------ -# Platform and compiler specific settings -#------------------------------------------------------------------------------ - -if(WIN32) - if (MSVC) - if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11 OR MSVC12 OR MSVC13) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - add_definitions(-D_CRT_NONSTDC_NO_WARNING) - add_definitions(-D_SCL_SECURE_NO_WARNINGS) - add_definitions(-DSPATIALINDEX_CREATE_DLL=1) - add_definitions(-DNOMINMAX) - - set(SIDX_COMPILER_MSVC 1) - endif() - - if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") - string(REGEX REPLACE "/W[0-4]" "/W4" - CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") - endif() - endif() - - set(CMAKE_INCLUDE_PATH c:/osgeo4w/include;$ENV{CMAKE_INCLUDE_PATH}) - set(CMAKE_LIBRARY_PATH c:/osgeo4w/lib;$ENV{CMAKE_LIBRARY_PATH}) - - set(SIDX_OS_WIN32 1) - -else() - # not WIN32 - - # Recommended C++ compilation flags - # -Weffc++ - set(SIDX_COMMON_CXX_FLAGS - "-pedantic -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wredundant-decls -Wno-long-long") - - if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SIDX_COMMON_CXX_FLAGS}") - if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -ansi") - endif() - - set(SIDX_COMPILER_GCC 1) - - elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER}" MATCHES "clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SIDX_COMMON_CXX_FLAGS}") - set(SIDX_COMPILER_CLANG 1) - endif() -endif(WIN32) - -if (APPLE) - set(SO_EXT dylib) - set(CMAKE_FIND_FRAMEWORK "LAST") -elseif(WIN32) - set(SO_EXT dll) -else() - set(SO_EXT so) -endif(APPLE) - - -#------------------------------------------------------------------------------ -# installation path settings -#------------------------------------------------------------------------------ - -if(WIN32) - set(DEFAULT_LIB_SUBDIR lib) - set(DEFAULT_DATA_SUBDIR .) - set(DEFAULT_INCLUDE_SUBDIR include) - - if (MSVC) - set(DEFAULT_BIN_SUBDIR bin) - else() - set(DEFAULT_BIN_SUBDIR .) - endif() -else() - # Common locations for Unix and Mac OS X - set(DEFAULT_BIN_SUBDIR bin) - set(DEFAULT_LIB_SUBDIR lib${LIB_SUFFIX}) - set(DEFAULT_DATA_SUBDIR share/spatialindex) - set(DEFAULT_INCLUDE_SUBDIR include) -endif() - -# Locations are changeable by user to customize layout of SIDX installation -# (default values are platform-specific) -set(SIDX_BIN_SUBDIR ${DEFAULT_BIN_SUBDIR} CACHE STRING - "Subdirectory where executables will be installed") -set(SIDX_LIB_SUBDIR ${DEFAULT_LIB_SUBDIR} CACHE STRING - "Subdirectory where libraries will be installed") -set(SIDX_INCLUDE_SUBDIR ${DEFAULT_INCLUDE_SUBDIR} CACHE STRING - "Subdirectory where header files will be installed") -set(SIDX_DATA_SUBDIR ${DEFAULT_DATA_SUBDIR} CACHE STRING - "Subdirectory where data will be installed") - -# Mark *_SUBDIR variables as advanced and dedicated to use by power-users only. -mark_as_advanced(SIDX_BIN_SUBDIR - SIDX_LIB_SUBDIR SIDX_INCLUDE_SUBDIR SIDX_DATA_SUBDIR) - -# Full paths for the installation -set(SIDX_BIN_DIR ${SIDX_BIN_SUBDIR}) -set(SIDX_LIB_DIR ${SIDX_LIB_SUBDIR}) -set(SIDX_INCLUDE_DIR ${SIDX_INCLUDE_SUBDIR}) -set(SIDX_DATA_DIR ${SIDX_DATA_SUBDIR}) - -#------------------------------------------------------------------------------ -# subdirectory controls -#------------------------------------------------------------------------------ - -add_subdirectory(src) -add_subdirectory(test) - diff --git a/spatialindex-1.8.5/COPYING b/spatialindex-1.8.5/COPYING deleted file mode 100644 index 9fae459..0000000 --- a/spatialindex-1.8.5/COPYING +++ /dev/null @@ -1,48 +0,0 @@ -Licensing History ------------------------------------------------------------------------------- - - -.. note:: - libspatialindex changed from a `LGPL`_ to a `MIT`_ license as of the 1.8.0 - release. For most situations, this should have no impact on the library's - use, but it should open it up for usage in situations that otherwise might - have been problematic. Versions of libspatialindex prior to 1.8.0 were - licensed LGPL 2.0, with the license description on this file. The codebase - has been been updated, with licensing information replaced in headers and - source files, to use the MIT license as of the 1.8.0+ release. - - This change was made to support the inclusion of software depending on - libspatialindex in static linking-only environments such as embedded systems - and Apple's iOS. libspatialindex versions prior to 1.8.0 will continue to - live on as LGPL software, and developers can continue to contribute to them - under terms of that license, but the main development effort, and ongoing - maintenance, releases, and bug applications, will move forward using the - new MIT license at http://github.com/libspatialindex/libspatialindex - -.. _`LGPL`: http://opensource.org/licenses/lgpl-2.1.php -.. _`MIT`: http://opensource.org/licenses/MIT - - - -License (MIT) ------------------------------------------------------------------------------- - -:: - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. diff --git a/spatialindex-1.8.5/ChangeLog b/spatialindex-1.8.5/ChangeLog deleted file mode 100644 index 9ab0d0a..0000000 --- a/spatialindex-1.8.5/ChangeLog +++ /dev/null @@ -1,656 +0,0 @@ -2014-10-31 - * Howard Butler CAPI: revert #40, which could cause inconsistent object lifetime behavior (23:53:04) - * Howard Butler missed a variable substitution on SIDX_LIB_VERSION (21:38:14) - -2014-09-29 - * Howard Butler Merge pull request #45 from sebastic/soversion (16:26:19) - * Bas Couwenberg Fix separate library VERSION and SOVERSION variables. (16:14:43) - * Howard Butler doc tweak (08:49:07) - * Howard Butler fix up library SOVERSION'ing and issue new release 1.8.4 #44 (08:45:00) - -2014-09-20 - * Howard Butler point to 1.8.3 release (16:41:15) - * Howard Butler increment and prepare for 1.8.3 release (16:27:48) - -2014-09-13 - * Howard Butler update ChangeLog (18:46:21) - -2014-09-11 - * Howard Butler Changelog update (10:57:08) - * Howard Butler clean up integer warning (10:56:53) - * Howard Butler Merge pull request #42 from libspatialindex/issues/42-automake-exports (10:54:58) - * Howard Butler Add sidx_export to Makefile.am #42 (10:54:07) - -2014-08-27 - * Howard Butler Merge pull request #41 from cloudant/capi_mvrtree (10:20:03) - -2014-08-26 - * Norman Barker fixed typo in MVRIntersects_Count (17:18:32) - * Norman Barker added MVR index type to the C API (17:16:03) - -2014-08-03 - * Howard Butler fix up Release name (14:14:35) - -2014-07-28 - * Howard Butler unused parameters (10:04:59) - * Howard Butler clean up C API for numResults being a uint64_t when it is only possible to specify uint32_t of nResults (09:53:36) - * Howard Butler more C API warning cleanups (09:50:55) - * Howard Butler leaf node counts are uint32_t, not size_t (09:34:41) - * Howard Butler silence condition expression warning 4127 on msvc (09:20:58) - * Howard Butler unreferenced parameter cleanup (09:13:36) - * Howard Butler nuke assignment and empty constructor of C API Index class (09:13:01) - * Howard Butler children count is uint32_t (09:11:04) - * Howard Butler clean up LeafQuery visitor id management (09:09:20) - * Howard Butler clean up more unused parameters (08:37:24) - * Howard Butler fix mismatched type warning (using uint32_t as an id instead of SpatialIndex::id_type (08:37:15) - * Howard Butler remove unused and potentially problematic throw specification for DataStream (08:28:49) - * Howard Butler export all C API stuff to the DLL (08:23:49) - -2014-07-27 - * Howard Butler more unreferenced parameter cleanups (23:37:25) - * Howard Butler screw 20ad010a1b55a4437b73c805270837c294b57251 and MSVC's dumb C4127 warning (23:36:15) - * Howard Butler more unreferenced parameter warnings (23:34:20) - * Howard Butler use ;; to denote looping forever to silence C4127 warning on MSVC (23:34:11) - * Howard Butler support MSVC 2012 and 2013 (23:30:59) - * Howard Butler big unreferenced variable cleanup (23:30:35) - * Howard Butler clean up some unreferenced parameters warnings (23:17:14) - * Howard Butler Merge branch 'master' of github.com:libspatialindex/libspatialindex (23:03:10) - * Howard Butler Merge pull request #40 from libspatialindex/issues/40-capi-property-copying (23:03:04) - * Howard Butler clean up file open mode (23:02:48) - * Howard Butler bump versions to 1.8.2 in preparation for release (22:59:49) - * Howard Butler Update ChangeLog in preparation for release (22:59:21) - * Howard Butler add Norman to AUTHORS (22:57:12) - * Howard Butler Implement a fix for #40 to maintain pointers to IndexProperty references rather than copying (18:15:38) - -2014-07-22 - * Howard Butler only do policy check for CMAKE > 2.x (11:25:02) - * Howard Butler turn off osx rpath cmake complaint (11:05:29) - -2014-07-14 - * Howard Butler more cmake quoting #27 (16:07:21) - * Howard Butler fix up unfixed LGPL file from test suite (16:07:04) - -2014-07-12 - * Howard Butler add BUILD_WITH_INSTALL_RPATH target property for OSX (23:59:03) - * Howard Butler CMake config quoting #27 (23:50:05) - * Howard Butler FSF postal adress update #5 (23:38:24) - * Howard Butler support wide character as possible tools::Variant type -- doesn't work yet though (23:32:19) - * Howard Butler add VT_PWCHAR to support wide character pointer for the Variant type (23:31:15) - * Howard Butler add MSVC 2013 and 2014 defns (23:27:45) - * Howard Butler fix redundant checks in destructor #28 (23:25:39) - * Howard Butler Remove LDFLAGS from Libs for pkg-config #23 (23:24:32) - -2014-05-12 - * Howard Butler Merge pull request #38 from cloudant/c_tpr (10:22:16) - -2014-05-10 - * Norman Barker added temporal function to capi (16:49:28) - -2014-05-08 - * Howard Butler Merge pull request #37 from cloudant/paging (13:48:51) - -2014-05-07 - * Norman Barker added paging to all indexes (19:11:58) - -2014-03-13 - * Howard Butler turn off the unused m_rwLock for now (21:15:39) - * Howard Butler switch to int64_t instead of uint64_t when checking result counts (21:15:14) - * Howard Butler add newline to end of file (21:07:45) - -2014-02-13 - * Howard Butler Merge pull request #32 from cloudant/empty_index (19:00:32) - * Howard Butler Merge pull request #33 from mlt/nominmax (19:00:07) - -2014-02-12 - * Mikhail Titov Prevent min/max from windef.h interference (15:09:53) - -2014-02-11 - * Norman Barker Added support for empty index files (17:46:14) - -2013-09-09 - * Howard Butler update download location for new release (12:07:03) - -2013-08-21 - * Howard Butler Merge pull request #26 from cloudant/skip_results (15:32:33) - -2013-08-19 - * Norman Barker made files protected variables (21:37:25) - * Norman Barker added paging and flushing (21:35:32) - -2013-07-29 - * Norman Barker Added error handling to the C API (20:52:47) - -2013-07-25 - * Norman Barker Added Result Set Limit so that the number of items can be controlled. (17:58:54) - -2013-06-26 - * Howard Butler fixups for MSVC2008 compilation (14:17:28) - * Howard Butler updates for v1.8.1 release (13:51:45) - * Howard Butler Merge branch 'master' of github.com:libspatialindex/libspatialindex (13:44:32) - * Howard Butler increment versions in preparation for 1.8.1 release (13:43:28) - * Howard Butler Merge pull request #22 from libspatialindex/issues/22-lgpl-fixups (13:40:35) - * Howard Butler update licenses for #22 (13:39:34) - * Howard Butler Merge branch 'libspatialindex-issues/19-mingw64' (13:26:44) - -2013-06-04 - * Mateusz Loskot Fix redefinition of integer types for Visual C++ (09:46:51) - -2013-05-31 - * Mateusz Loskot Add Visual C++ 11.0 support to CMake build (09:23:22) - -2013-03-04 - * Howard Butler apply Theun's patch for Makefile.am #19 (11:09:25) - -2013-02-28 - * Howard Butler first pass at fixing issue for Theuns #19 (10:54:56) - -2012-12-28 - * Howard Butler fix up link to missing file (09:05:56) - -2012-12-20 - * chrisnatali refactored as suggested by maintainer (11:01:44) - -2012-12-10 - * chrisnatali Forgot the contains case when checking region-segment intersection (14:38:13) - -2012-12-07 - * chrisnatali exposed SegmentIntersects functions in capi, fixed test (17:22:08) - -2012-12-06 - * chrisnatali Updated LineSegment to LineSegment and LineSegment to Region intersection methods and tests. Need to fix LineSegment to Region (17:03:03) - * chrisnatali Added GeomUtil and simple tests for segment intersection (14:40:22) - -2012-12-12 - * Howard Butler update download links (22:20:57) - * Howard Butler makefile.vc no longer used -- use cmake build instead (21:48:48) - * Howard Butler more release process notes (21:42:30) - * Howard Butler bring ChangeLog up to date for 1.8.0 release (21:42:20) - * Howard Butler increment release date (21:42:07) - * Howard Butler doc updates for 1.8.0 (21:40:50) - * Howard Butler doc updates for 1.8.0 (21:40:35) - * Howard Butler increment version in preparation for 1.8.0 release (19:54:32) - * Howard Butler increment SO_VERSION to 3:0:0 due to adding flush() to C and C++ APIs (19:54:12) - -2012-11-16 - * Howard Butler define pthread when we have it (11:34:50) - * Howard Butler SharedLock was renamed to LockGuard - fix up patch for #15 (11:15:13) - -2012-11-15 - * Howard Butler Merge branch 'containsWhatQuery' (15:17:18) - -2012-11-12 - * Howard Butler link to libspatialindex.org (11:02:13) - -2012-11-04 - * Howard Butler point to http://libspatialindex.org as our new URL (14:10:54) - * Howard Butler update to point to http://libspatialindex.github.com (14:06:00) - * Howard Butler try again (13:54:58) - * Howard Butler adapt a patch for #15 to be able to incorporate a more efficient containsWhatQuery method (12:43:28) - * Howard Butler update versions to 1.8.0 in prep for upcoming release (12:31:13) - * Howard Butler update versions to 1.8.0 in prep for upcoming release (12:31:03) - * Howard Butler update main page to try to get github includes working (11:03:21) - * Howard Butler use CMake if you want windows makefiles builds (11:02:30) - * Howard Butler update AUTHORS with links to Mattias and Leonard (11:00:53) - -2012-10-25 - * Howard Butler update licensing of base library to MIT, update docs accordingly (14:06:08) - * Howard Butler update licensing of C API (12:18:19) - * Howard Butler use local imports for public within-tree public includes #14 (10:49:20) - * Howard Butler adapt a patch to fix #12 -- allow cross-compilation on ANDROID (10:22:46) - * Howard Butler Merge pull request #8 from booo/master (10:03:27) - -2012-07-14 - * Marios Hadjieleftheriou Reverted to using pthread mutex and exlusively lock all queries, since fine grain locking using spinlocks was too slow. (09:57:39) - * Marios Hadjieleftheriou Reverted to using pthread mutex for all queries, since fine grain locking using spinlocks was too slow. (09:52:34) - -2012-07-10 - * Howard Butler attempt to use sched_yield for instances where pthread_yield doesn't exist (osx) -- please check this marios (15:54:01) - * Howard Butler put #ifdef guards around LockGuard which is only implemented for pthread for now (15:52:32) - * Howard Butler add check for pthread (15:52:09) - * Howard Butler be explicit about which overloads should be used to silence the warning about implementation hiding (15:51:32) - -2012-07-09 - * Marios Hadjieleftheriou Added SpinLock to fix multi-threaded support bug. Removed silly non atomic m_rwLock when pthreads is not found. (10:00:41) - -2012-04-17 - * Howard Butler make sure _c library gets soversion and that we install in include/spatialindex instead of install/libspatialindex (15:36:27) - -2012-04-09 - * booo src/CMakeLists.txt: fix issue #6 (16:28:50) - * booo Merge branch 'master' of https://github.com/libspatialindex/libspatialindex (16:26:48) - -2012-04-03 - * Marios Hadjieleftheriou Added flush() in IStorageManger interface. (13:10:45) - -2012-03-03 - * booo autogen.sh: check if libtoolize exists (08:03:59) - -2012-02-16 - * Marios Hadjieleftheriou replace bzero with memset (09:18:13) - -2012-02-07 - * Howard Butler add bit depth prefix to library name output (18:19:48) - -2011-12-29 - * Howard Butler add explicit links to download (08:20:41) - -2011-12-09 - * Howard Butler add back (copy) of README to placate automake (20:16:38) - * Howard Butler increment versions to 1.7.1 in preparation for release (20:11:06) - * Howard Butler rename so github renders it (20:08:51) - -2011-12-06 - * Howard Butler increment soversion for both cmake and autoconf builds (12:32:52) - -2011-10-19 - * Howard Butler update permissions for #3 (12:41:36) - * Howard Butler apply variation of patch in #4 (12:36:34) - * Howard Butler update packaging script for #7 (12:33:25) - -2011-10-14 - * Howard Butler update ChangeLog (12:44:43) - * Howard Butler oops, need line separators (12:44:38) - * Howard Butler update ChangeLog (12:43:43) - * Howard Butler distribut test running scripts too (12:43:33) - * Howard Butler update ChangeLog (12:34:57) - * Howard Butler newline (12:34:48) - * Howard Butler update ChangeLog (12:31:54) - * Howard Butler update release date (12:31:43) - * Howard Butler update ChangeLog again (12:15:57) - * Howard Butler fixes to be able to make things work on msvc 10 (12:12:54) - * Howard Butler only redefine c++0x types if we're <= msvc_ver 1500 (12:12:36) - * Howard Butler add definition to make sure we export symbols in windows land (12:11:51) - * Howard Butler namespace usings and such to satisfy msvc 10 (11:49:40) - * Howard Butler more ignores (11:49:24) - * Howard Butler check for msvc 10 (11:40:45) - * Howard Butler update ChangeLog (11:26:39) - * Howard Butler missing reference to file (11:20:14) - * Howard Butler missing reference to file (11:19:02) - * Howard Butler this file is now gone (11:17:10) - * Howard Butler add pkg-config script for libspatialindex -- autoconf build only for now (11:01:17) - * Howard Butler typo (10:28:04) - * Howard Butler move Makefile.am up (10:23:23) - * Howard Butler start fixing up automake include structure (10:20:16) - * Howard Butler include was still busted (10:06:05) - * Howard Butler fix include path (10:04:08) - * Howard Butler add function detection to cmake config (09:25:08) - * Howard Butler point to doxygen output (09:14:18) - * Howard Butler more doc rearranging (08:53:17) - * Howard Butler add doxygen configuration -- run doxygen docs/doxygen/doxygen.conf from the top level directory to get output (08:38:07) - * Howard Butler more ignore (08:37:39) - * Howard Butler more ignores (08:36:45) - -2011-10-13 - * Howard Butler a little proposed whitespace normalization -- my terminal isn't 250 characters long :) (21:18:10) - * Howard Butler remove SpatialIndexImpl.h, which didn't seem to be used to hide the implementation and was contributing to relative include spaghetti (21:14:01) - * Howard Butler #include file deck chair rearrangement (20:54:22) - * Howard Butler #include file deck chair rearrangement (20:49:45) - * Howard Butler don't add -ansi to clang compiles (16:31:05) - * Howard Butler unsigned values can never be <0, no need to test for this (16:30:50) - * Howard Butler clean up some warnings that clang found (16:25:05) - * Howard Butler unsigned values can never be <0, no need to test for this (16:24:46) - -2011-10-11 - * Howard Butler regressiontest directory changed names (11:33:56) - * Howard Butler rename regressiontest directory to test/ directory for added clarity. maybe next release we can have these test be auto-run with 'make test' (11:20:47) - * Howard Butler check for an existing srand48, and if we have it, don't use our local one (11:03:21) - * Howard Butler CMake for regressiontests (11:02:45) - -2011-10-10 - * Howard Butler start organizing docs (23:01:48) - * Howard Butler update CMakeLists.txt when releasing too (23:01:37) - * Howard Butler c/p fix (23:01:23) - * Howard Butler add dummy file (22:38:19) - * Howard Butler makefile for sphinx (22:37:20) - * Howard Butler more cmake config (22:31:04) - * Howard Butler ignore more (22:31:00) - * Howard Butler clean up warning (22:30:22) - -2011-10-09 - * Howard Butler add cmake config (22:59:20) - * Howard Butler ignore cmake stuff (22:58:56) - -2011-10-06 - * Howard Butler attempt 2 on #1 to fix rand in stdlib on newer gcc's (14:32:42) - * Howard Butler a fix for #1 because gcc 4.5.2 appears to have these defined in stdlib.h (13:41:09) - -2011-09-26 - * Howard Butler add documentation for http://libspatialindex.github.com (16:10:17) - -2011-09-25 - * Howard Butler increment versions in preparation for release (20:44:57) - -2011-07-15 - * Howard Butler use int64_t for IDs instead of uint64_t's (12:12:48) - * Howard Butler clean up warnings (10:55:15) - * Howard Butler initialize variables to 0's before we use them (10:51:50) - * Howard Butler fix up initialization order (10:48:07) - * Howard Butler use -pedantic for compilation (10:42:11) - * Howard Butler add .gitignore (10:40:44) - -2011-05-18 - * Marios Hadjieleftheriou (10:20:08) - -2011-03-01 - * Marios Hadjieleftheriou (08:50:59) - -2011-01-10 - * Marios Hadjieleftheriou (09:53:08) - -2010-12-04 - * Howard Butler bump version in prep for 1.6.1 release (15:22:32) - -2010-11-22 - * Sean Gillies Fix test of length value (13:53:16) - * Howard Butler whitespace normalization (13:23:02) - * Sean Gillies Add up deltas for multidimensional input (13:00:24) - * Sean Gillies Add up deltas for multidimensional input (12:49:10) - * Howard Butler revert r193 (12:46:06) - * Howard Butler we should set isPoint to true if we pass our epsilon test -- this didn't work before (10:02:47) - -2010-10-14 - * Marios Hadjieleftheriou Removed nextUnifromLongDouble. It was incorrect (08:18:23) - -2010-10-13 - * Marios Hadjieleftheriou Added nextUniformLongDouble (10:10:35) - -2010-09-16 - * Howard Butler fix #25 and include visual studio files in the release (08:56:14) - * Howard Butler bump versions in preparation for release (08:53:22) - * Howard Butler bump versions in preparation for release (08:52:38) - -2010-06-19 - * Howard Butler add Matthias' CustomStorage backend for C API (15:34:19) - -2010-04-21 - * Howard Butler Add Marios' pagesize diatribe to the docs (13:50:02) - -2010-04-12 - * Howard Butler update ChangeLog (14:56:52) - * Marios Hadjieleftheriou (12:17:47) - * Marios Hadjieleftheriou Fixed rtree/BulkLoader infinit loop bug (12:07:13) - -2010-03-31 - * Howard Butler format and layout normalization (10:33:43) - -2010-03-30 - * Howard Butler ensure that we instantiate the ivOut with at least the ivIn so we have a properly constructed Tools::Interval #16 (15:18:40) - -2010-03-05 - * Howard Butler add doc describing how to release (08:19:51) - -2010-03-04 - * Howard Butler propsets to ignore test output: (20:56:08) - * Howard Butler use subdir-objects for automake and rename the make dist output to spatialindex-src (20:53:18) - * Howard Butler increment version info in preparation for release (20:52:47) - * Howard Butler update for release (19:59:41) - * Howard Butler add CountVisitor to the CAPI to provide a cumulation of the number of hits that land within a query (10:33:28) - -2010-03-03 - * Howard Butler use uint64_t for result counts instead of uint32_t in C API (15:55:09) - -2009-12-28 - * Howard Butler fix up for gcc 4.4 (20:35:01) - -2009-12-04 - * Marios Hadjieleftheriou (15:57:15) - * Marios Hadjieleftheriou Fixed Region::touchesRegion member function bug. (12:46:19) - -2009-11-05 - * Howard Butler don't thrown an error when -DDEBUG is on and we initialize an infinite Region (10:26:45) - -2009-11-02 - * Howard Butler pass in a reference for the query bounds (21:10:46) - * Howard Butler try to do no harm when calling Index_Free on something that's null (21:04:49) - * Howard Butler pass in a reference for the query bounds (21:00:54) - * Howard Butler copy the array using memcpy because we can't free() something created with new (20:15:41) - * Howard Butler put the data in a newly malloc'd array to match our std::free call of Index_Delete (19:48:00) - * Howard Butler make sure to delete our shape when we're done (15:32:57) - * Howard Butler get dimension from the Region, no need to fetch from index properties (15:32:26) - * Howard Butler make sure we clean up the bounds and region (14:53:30) - * Howard Butler only #include where needed, and not in the global Tools.h file (14:08:16) - -2009-10-30 - * Howard Butler remove and from Tools.h and include them seperately in each file that needs them (12:09:14) - * Howard Butler define to denote we're C API (11:37:11) - * Howard Butler add a newline (10:03:47) - -2009-10-21 - * Howard Butler make sure we use new/delete instead of new/free (21:42:21) - * Howard Butler remove namespace pollution of Tools:: into the globally include'd header SpatialIndex.h (12:35:24) - -2009-10-20 - * Howard Butler bump versions in preparation for release (10:24:18) - -2009-10-19 - * Howard Butler add SIDX_Version prototype (15:31:14) - * Howard Butler ltmain.sh doesn't belong in svn (15:23:59) - * Howard Butler Makefile.in's don't belong in svn (15:23:48) - * Howard Butler C API compilation fix (13:50:42) - * Howard Butler tmpname fixes so we compile on msvc2003 (13:50:31) - * Howard Butler don't define a variable to "" or cl will complain (13:29:17) - -2009-10-08 - * Howard Butler bleaf and bindex switched around in createLevel call (14:32:03) - -2009-09-17 - * Howard Butler more leaf querying code (15:40:25) - -2009-09-16 - * Howard Butler add beginnings of leaf querying to C API (13:45:57) - -2009-09-15 - * Howard Butler remove the duplicate and unnecessary Item construct that was masking the already existing IData interface (22:34:14) - -2009-08-31 - * Howard Butler support building the c api (10:32:06) - -2009-08-24 - * Howard Butler fix issue with uint32_t by copying macros from Tools.h (08:25:53) - -2009-08-19 - * Howard Butler try to ensure -lstdc++ is linked (15:47:58) - * Howard Butler ignores (14:56:31) - * Howard Butler add C API (not currently built on windows) (11:37:50) - * Howard Butler ignore propset (10:25:06) - * Howard Butler propsets to ignore test results (10:24:15) - -2009-08-18 - * Howard Butler locking for Tools::PropertySet (commented out though because it doesn't work (13:07:34) - -2009-08-14 - * Howard Butler comment out PropertySet locking for now (12:41:31) - * Howard Butler use HAVE_PTHREAD_H for #ifdef, make Tools::PropertySet threadsafe for read/write (10:19:40) - -2009-08-13 - * Marios Hadjieleftheriou (14:10:02) - * Marios Hadjieleftheriou (10:42:43) - * Marios Hadjieleftheriou 1. Replace size_t with uint32_t to fix 64/32 bit compatibility issues 2. Fixed memory bug related to data array and bulk loading for RTree. (10:24:35) - -2009-08-10 - * Howard Butler remove #define interface, use class (08:35:22) - -2009-08-05 - * Howard Butler osgeo4w packaging (20:11:54) - * Howard Butler don't redefine interface if it is already defined (/me scowls at windows (15:21:47) - * Howard Butler comment out record deletion entirely (14:27:33) - * Howard Butler guard against invalid delete (12:58:43) - -2009-07-30 - * Howard Butler bump version to 1.4.0 in prep for release, add a windows docs to the dist (13:48:52) - * Howard Butler Add a CheckFilesExists(Tools::PropertySet&) method instead of the cheap way we were checking for existence before. This takes into account the file extensions and only returns true if both files exist (11:57:21) - * Howard Butler move the warning about 4251 down into _MSC_VER (11:56:37) - -2009-07-29 - * Howard Butler new changelog (22:10:27) - * Howard Butler update for new layout. make sure to build dll appropriately (21:32:41) - * Howard Butler turn off warning 4251 (16:24:23) - * Howard Butler fix #15 and provide a way to determine the library version at compile time (15:57:26) - * Howard Butler add back makefile.vc (15:50:19) - -2009-07-22 - * Howard Butler a note about the debugging lint that is incorrect when the bounds are infinity (14:29:35) - * Howard Butler make sure to #include to satisfy gcc 4.3+ (14:24:28) - * Marios Hadjieleftheriou (10:23:22) - * Marios Hadjieleftheriou (10:18:42) - -2009-07-21 - * Marios Hadjieleftheriou (08:11:09) - -2009-07-20 - * Howard Butler attempt to fix #8 and allow users to specify extensions for the dat and idx files of the diskstorage manager (15:32:50) - * Howard Butler make sure to update existing values in setProperties instead of assuming it doesn't exist in the map (12:35:36) - * Marios Hadjieleftheriou (10:01:52) - -2009-07-19 - * Marios Hadjieleftheriou (09:51:46) - -2009-07-18 - * Marios Hadjieleftheriou (20:26:54) - * Marios Hadjieleftheriou (20:15:51) - * Marios Hadjieleftheriou (20:13:28) - * Marios Hadjieleftheriou (20:09:59) - * Marios Hadjieleftheriou (20:02:29) - * Marios Hadjieleftheriou (17:52:03) - * Marios Hadjieleftheriou (17:19:51) - * Marios Hadjieleftheriou (17:19:07) - -2009-07-15 - * Howard Butler apply Willem's patch for #14 (09:39:07) - -2009-07-06 - * Howard Butler more descriptive and separate exception descriptions for FillFactor inconsistencies (17:23:39) - * Howard Butler silence warnings about windows compiler complaints on non-windows systems (09:38:20) - -2009-05-28 - * Howard Butler rename dlls to not have lib* in front of them (12:52:06) - * Howard Butler A much improved windows makefile based in libLAS' (11:31:33) - * Howard Butler On MSVC, just about every class complains about 4250, inheritance by dominance. We'll just shut that up for now. (11:31:04) - -2009-05-14 - * Howard Butler apply Patrick MĂ©zard's patch for the inverted use of mktemp on windows #13 (13:26:54) - * Howard Butler Fix #12, add time.h so msvc9 works (13:21:20) - -2009-05-04 - * Howard Butler apply the patch for #11 - cstring and limits includes so gcc 4.3+ works (12:10:20) - -2008-05-30 - * Marios Hadjieleftheriou (14:42:57) - -2008-05-23 - * Marios Hadjieleftheriou (13:27:25) - * Marios Hadjieleftheriou (12:55:19) - * Marios Hadjieleftheriou (12:28:17) - -2008-05-18 - * Marios Hadjieleftheriou (07:35:58) - -2008-04-30 - * Howard Butler propset to ignore aclocal.m4 (00:39:52) - * Howard Butler aclocal.m4 is autogenerated. removing (00:39:18) - * Howard Butler set svn:ignore properties for autogenerated files and automake cruft (00:35:53) - * Howard Butler delete Makefile.in's from source tree. Use autogen.sh to remake them if building from svn source yourself (00:27:52) - * Howard Butler add rand48.h to dist target (00:26:18) - -2008-04-29 - * Marios Hadjieleftheriou (14:47:25) - * Marios Hadjieleftheriou (13:17:22) - * Marios Hadjieleftheriou (13:06:31) - * Marios Hadjieleftheriou (13:03:50) - * Marios Hadjieleftheriou (11:36:51) - * Marios Hadjieleftheriou (11:36:38) - * Marios Hadjieleftheriou (11:36:22) - * Marios Hadjieleftheriou Fixex malloc memory leak. (10:40:31) - * Marios Hadjieleftheriou Fixed malloc memory leak (10:40:11) - -2008-02-26 - * Howard Butler oops. Add missing file (10:15:43) - * Howard Butler oops. Add missing file (10:14:56) - -2008-01-25 - * Howard Butler Initial push of windows patches (13:43:36) - -2008-01-23 - * Marios Hadjieleftheriou (10:25:52) - -2008-01-21 - * Marios Hadjieleftheriou (08:19:44) - -2008-01-19 - * Howard Butler bump version to 1.3 (14:51:44) - * Howard Butler Add an auto-generated ChangeLog (12:42:27) - * Howard Butler add myself and some notes (12:37:39) - * Howard Butler update to ReST (12:36:26) - * Howard Butler update ReST (12:09:45) - * Howard Butler update ReST (12:09:16) - * Howard Butler update ReST (12:03:40) - * Howard Butler update ReST (12:02:48) - * Howard Butler update ReST (12:02:10) - * Howard Butler update ReST (12:01:58) - * Howard Butler update ReST (11:59:42) - * Howard Butler update ReST (11:59:10) - * Howard Butler update ReST (11:58:53) - * Howard Butler update ReST (11:58:13) - * Howard Butler update ReST (11:56:33) - * Howard Butler update ReST (11:55:11) - * Howard Butler update ReST (11:29:26) - * Howard Butler update to ReST (11:26:06) - * Howard Butler set mimetype to reStructured text so Trac will render it for us in the browser (11:02:56) - -2008-01-17 - * Howard Butler add internal headers to the _SOURCES targets so they get included in make dist (17:34:01) - * Howard Butler add autogen.sh to simplify auto stuff (11:06:18) - * Howard Butler move debian packaging stuff out of trunk (11:04:16) - -2008-01-15 - * Howard Butler add nmake makefile (13:33:39) - -2007-12-07 - * Kenneth Christiansen Wrong names (14:44:52) - * Kenneth Christiansen Fixed rules file (13:58:13) - * Kenneth Christiansen Updates to the control file (packaging) Removal of files that shouldn't be in SVN (12:10:46) - -2007-11-30 - * Marios Hadjieleftheriou (12:04:00) - * Sean Gillies Version info to 1:0:0 (10:50:02) - -2007-11-29 - * Marios Hadjieleftheriou (16:26:44) - * Marios Hadjieleftheriou (15:54:08) - * Marios Hadjieleftheriou (15:48:42) - * Sean Gillies Add debian directory created by dh_make (12:00:13) - -2007-11-28 - * Howard Butler use -version-info instead of -release (22:05:27) - * Howard Butler include Makefile.in's (18:59:56) - * Howard Butler use .'s to separate version info and don't do -no-undefined (18:55:06) - * Howard Butler tweak formatting (18:19:42) - * Sean Gillies Add version-info to Makefile.am (18:11:46) - * Howard Butler finish incorporating -ltools (17:54:30) - * Howard Butler more progress on automake for includes directories... close, but not quite (16:48:19) - * Howard Butler Add automake files for includes (16:38:55) - * Howard Butler start incorporating -ltools into the tree (15:03:45) - -2007-08-30 - * Marios Hadjieleftheriou README should be INSTALL, and INSTALL should be README (10:16:33) - * Marios Hadjieleftheriou README should be INSTALL, and INSTALL should be README (10:15:49) - * Marios Hadjieleftheriou README file should be INSTALL, and INSTALL should be README (10:13:34) - -2007-08-01 - * Howard Butler revert r9 (23:37:29) - * Howard Butler revert r10 (23:37:03) - * Howard Butler revert r11 (23:36:42) - * Howard Butler revert r12 (23:36:19) - * Howard Butler revert r13 (23:35:52) - * Howard Butler add strings.h (23:34:57) - * Howard Butler add strings.h (23:27:45) - * Howard Butler add strings.h (23:26:36) - * Howard Butler add strings.h (23:25:26) - * Howard Butler include (21:23:28) - * Howard Butler include in DiskStorageManager (this is not available on Solaris by default) (21:21:34) - * Howard Butler add data and queries for tests (15:49:33) - * Howard Butler add Marios' latest updates (15:48:13) - * Howard Butler oops, don't include zip files (15:40:50) - * Howard Butler add 1.1.1 version of library (15:37:49) - * Howard Butler basic layout (15:32:49) - diff --git a/spatialindex-1.8.5/INSTALL b/spatialindex-1.8.5/INSTALL deleted file mode 100644 index 095b1eb..0000000 --- a/spatialindex-1.8.5/INSTALL +++ /dev/null @@ -1,231 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free -Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - -By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PREFIX', the package will -use PREFIX as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/spatialindex-1.8.5/INSTALL.WIN b/spatialindex-1.8.5/INSTALL.WIN deleted file mode 100644 index 52649de..0000000 --- a/spatialindex-1.8.5/INSTALL.WIN +++ /dev/null @@ -1,28 +0,0 @@ -Visual Studio 2005: -You have to open the spatialindex.sln solution from the IDE and build. -Unfortunatelly, vcbuild.exe does not work as expected, hence you cannot -build the DLL from the command line. - -Visutal Studio 2008: -Either use the IDE or use vcbuild to compile from the command line: - -To create 32bit DLL: -1. Open a Visual Studio command prompt (or open any shell - and run vcvars32.bat). - -2a. Release build: - Run vcbuild.exe /useenv spatialindex.sln "Release|Win32" -2b. Debug build: - Run vcbuild.exe /useenv spatialindex.sln "Debug|Win32" - -To create 64bit DLL: -1. Open a Visual Studio x64 command prompt (or open any shell - and run vcvarsall.bat x64). - -2a. Release build: - Run vcbuild.exe /useenv spatialindex.sln "Release|x64" -2b. Debug build: - Run vcbuild.exe /useenv spatialindex.sln "Debug|x64" - -Enjoy! - diff --git a/spatialindex-1.8.5/Makefile.am b/spatialindex-1.8.5/Makefile.am deleted file mode 100644 index f788e69..0000000 --- a/spatialindex-1.8.5/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = src . test include - -ACLOCAL_AMFLAGS= -I m4 -lib_LTLIBRARIES = libspatialindex.la libspatialindex_c.la - -libspatialindex_la_SOURCES = -libspatialindex_la_LIBADD = \ - src/spatialindex/liblibrary.la \ - src/storagemanager/libstoragemanager.la \ - src/rtree/librtree.la \ - src/mvrtree/libmvrtree.la \ - src/tprtree/libtprtree.la \ - src/tools/libtools.la - -libspatialindex_c_la_SOURCES = -libspatialindex_c_la_LIBADD = \ - libspatialindex.la \ - src/capi/libsidxc.la - -libspatialindex_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ -libspatialindex_c_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ - -EXTRA_DIST = INSTALL.WIN \ - spatialindex.sln \ - spatialindex-vc/spatialindex.vcproj \ - CMakeLists.txt \ - src/CMakeLists.txt \ - test/CMakeLists.txt \ - test/mvrtree/test1/run \ - test/mvrtree/test2/run \ - test/rtree/test1/run \ - test/rtree/test2/run \ - test/rtree/test3/run \ - test/rtree/test4/run \ - test/tprtree/test1/run \ - test/tprtree/test2/run diff --git a/spatialindex-1.8.5/Makefile.in b/spatialindex-1.8.5/Makefile.in deleted file mode 100644 index c2e915c..0000000 --- a/spatialindex-1.8.5/Makefile.in +++ /dev/null @@ -1,942 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \ - COPYING compile config.guess config.sub depcomp install-sh \ - missing ltmain.sh -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libspatialindex_la_DEPENDENCIES = src/spatialindex/liblibrary.la \ - src/storagemanager/libstoragemanager.la src/rtree/librtree.la \ - src/mvrtree/libmvrtree.la src/tprtree/libtprtree.la \ - src/tools/libtools.la -am_libspatialindex_la_OBJECTS = -libspatialindex_la_OBJECTS = $(am_libspatialindex_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libspatialindex_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libspatialindex_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -libspatialindex_c_la_DEPENDENCIES = libspatialindex.la \ - src/capi/libsidxc.la -am_libspatialindex_c_la_OBJECTS = -libspatialindex_c_la_OBJECTS = $(am_libspatialindex_c_la_OBJECTS) -libspatialindex_c_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libspatialindex_c_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libspatialindex_la_SOURCES) \ - $(libspatialindex_c_la_SOURCES) -DIST_SOURCES = $(libspatialindex_la_SOURCES) \ - $(libspatialindex_c_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-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 -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 -GZIP_ENV = --best -DIST_TARGETS = dist-bzip2 dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = src . test include -ACLOCAL_AMFLAGS = -I m4 -lib_LTLIBRARIES = libspatialindex.la libspatialindex_c.la -libspatialindex_la_SOURCES = -libspatialindex_la_LIBADD = \ - src/spatialindex/liblibrary.la \ - src/storagemanager/libstoragemanager.la \ - src/rtree/librtree.la \ - src/mvrtree/libmvrtree.la \ - src/tprtree/libtprtree.la \ - src/tools/libtools.la - -libspatialindex_c_la_SOURCES = -libspatialindex_c_la_LIBADD = \ - libspatialindex.la \ - src/capi/libsidxc.la - -libspatialindex_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ -libspatialindex_c_la_LDFLAGS = -version-info 4:1:0 -no-undefined -lstdc++ -EXTRA_DIST = INSTALL.WIN \ - spatialindex.sln \ - spatialindex-vc/spatialindex.vcproj \ - CMakeLists.txt \ - src/CMakeLists.txt \ - test/CMakeLists.txt \ - test/mvrtree/test1/run \ - test/mvrtree/test2/run \ - test/rtree/test1/run \ - test/rtree/test2/run \ - test/rtree/test3/run \ - test/rtree/test4/run \ - test/tprtree/test1/run \ - test/tprtree/test2/run - -all: all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - 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)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libspatialindex.la: $(libspatialindex_la_OBJECTS) $(libspatialindex_la_DEPENDENCIES) $(EXTRA_libspatialindex_la_DEPENDENCIES) - $(AM_V_CCLD)$(libspatialindex_la_LINK) -rpath $(libdir) $(libspatialindex_la_OBJECTS) $(libspatialindex_la_LIBADD) $(LIBS) - -libspatialindex_c.la: $(libspatialindex_c_la_OBJECTS) $(libspatialindex_c_la_DEPENDENCIES) $(EXTRA_libspatialindex_c_la_DEPENDENCIES) - $(AM_V_CCLD)$(libspatialindex_c_la_LINK) -rpath $(libdir) $(libspatialindex_c_la_OBJECTS) $(libspatialindex_c_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libLTLIBRARIES clean-libtool cscope cscopelist-am ctags \ - ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ - dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-libLTLIBRARIES \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/NEWS b/spatialindex-1.8.5/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/spatialindex-1.8.5/README b/spatialindex-1.8.5/README deleted file mode 100644 index 67c4401..0000000 --- a/spatialindex-1.8.5/README +++ /dev/null @@ -1,10 +0,0 @@ -***************************************************************************** - libspatialindex -***************************************************************************** - -:Author: Marios Hadjieleftheriou -:Contact: mhadji@gmail.com -:Revision: 1.8.4 -:Date: 09/24/2014 - -See http://libspatialindex.org for full documentation. diff --git a/spatialindex-1.8.5/aclocal.m4 b/spatialindex-1.8.5/aclocal.m4 deleted file mode 100644 index 690af89..0000000 --- a/spatialindex-1.8.5/aclocal.m4 +++ /dev/null @@ -1,1154 +0,0 @@ -# generated automatically by aclocal 1.14.1 -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 2002-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' -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.14.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_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.14.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - 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_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) diff --git a/spatialindex-1.8.5/compile b/spatialindex-1.8.5/compile deleted file mode 100755 index 531136b..0000000 --- a/spatialindex-1.8.5/compile +++ /dev/null @@ -1,347 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2012-10-14.11; # UTC - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# 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. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/spatialindex-1.8.5/config.guess b/spatialindex-1.8.5/config.guess deleted file mode 100755 index b79252d..0000000 --- a/spatialindex-1.8.5/config.guess +++ /dev/null @@ -1,1558 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. - -timestamp='2013-06-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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# 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. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches with a ChangeLog entry to config-patches@gnu.org. - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/spatialindex-1.8.5/config.sub b/spatialindex-1.8.5/config.sub deleted file mode 100755 index 9633db7..0000000 --- a/spatialindex-1.8.5/config.sub +++ /dev/null @@ -1,1791 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. - -timestamp='2013-08-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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# 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. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches with a ChangeLog entry to config-patches@gnu.org. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2013 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - 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 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or1k-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/spatialindex-1.8.5/configure b/spatialindex-1.8.5/configure deleted file mode 100755 index b6de1f5..0000000 --- a/spatialindex-1.8.5/configure +++ /dev/null @@ -1,17990 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for spatialindex 1.8.5. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -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 -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and mhadji@gmail.com -$0: about your system, including any error possibly output -$0: before this message. Then install a modern shell, or -$0: manually run the script under such a shell if you do -$0: have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='spatialindex' -PACKAGE_TARNAME='spatialindex-src' -PACKAGE_VERSION='1.8.5' -PACKAGE_STRING='spatialindex 1.8.5' -PACKAGE_BUGREPORT='mhadji@gmail.com' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -RAND_IS_CONFIG_FALSE -RAND_IS_CONFIG_TRUE -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -am__untar -am__tar -AMTAR -am__leading_dot -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -AWK -RANLIB -STRIP -ac_ct_AR -AR -DLLTOOL -OBJDUMP -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -ac_ct_CC -CFLAGS -CC -host_os -host_vendor -host_cpu -host -LIBTOOL -SET_MAKE -LN_S -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -CXXCPP -OBJEXT -EXEEXT -ac_ct_CXX -CPPFLAGS -LDFLAGS -CXXFLAGS -CXX -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_dependency_tracking -enable_silent_rules -enable_debug -' - ac_precious_vars='build_alias -host_alias -target_alias -CXX -CXXFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCC -CXXCPP -CC -CFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures spatialindex 1.8.5 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root - [DATAROOTDIR/doc/spatialindex-src] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of spatialindex 1.8.5:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-debug=no/yes turn on debugging default=$debug_default - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --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). - -Some influential environment variables: - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXXCPP C++ preprocessor - CC C compiler command - CFLAGS C compiler flags - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -spatialindex configure 1.8.5 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to mhadji@gmail.com ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel -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 spatialindex $as_me 1.8.5, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - - - -debug_default="no" - -CFLAGS="-Wall -Wno-long-long -pedantic $CFLAGS" -CXXFLAGS="-Wall -Wno-long-long -pedantic -std=c++98 $CXXFLAGS" - -# Checks for programs. -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 as_fn_executable_p "$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 as_fn_executable_p "$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 - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C++ compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $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 - -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 - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.2' -macro_revision='1.3337' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# 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 - - - - - - - - - - - - - - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $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 -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $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_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $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_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - 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 - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $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 -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $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 - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$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 -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $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_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$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_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $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 - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$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_c_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_c_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_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$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_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -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 "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $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 -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $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_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $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_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $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 - DUMPBIN=$ac_ct_DUMPBIN - 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" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$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%"$_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $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 : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $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 -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $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_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $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_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="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 - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # 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 - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -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 - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - 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 -done - done -IFS=$as_save_IFS - -fi -fi -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; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $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_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - 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 -done - done -IFS=$as_save_IFS - -fi -fi -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_DLLTOOL" = x; then - DLLTOOL="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 - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -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 - 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_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - 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 -done - done -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; } -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 "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 -{ $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_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="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 -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - 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 - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $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 -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $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_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $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_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - 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 - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$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 -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -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'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # 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};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - 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 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 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 - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$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 - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $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; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${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; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - 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; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - 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; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*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 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - 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" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $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 as_fn_executable_p "$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 as_fn_executable_p "$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*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $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 -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $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_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $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_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - 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 - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $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 -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $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_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $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_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - 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 - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $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 -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $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_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $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_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - 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 - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $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 -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $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_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $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_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - 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 - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $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 -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $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_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $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_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - 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 - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -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 : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -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' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -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 -{ $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; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_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_c_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_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_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_c_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 \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -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 - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - 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; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $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. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "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~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "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 $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # 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") || (\$ 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 - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - 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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "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' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$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' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - 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*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - 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 - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - 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_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $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 - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $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) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - 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" -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" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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; } -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 - (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 - (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 - 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 - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; 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 - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # 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 - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # 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;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -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= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -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); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -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); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - if test -n "$CXX" && ( test "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' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - 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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "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' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$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. - archive_expsym_cmds_CXX="\$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' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # 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*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - 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 - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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 $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 - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$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 $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 $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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - 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 - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $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. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$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") || (\$ 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*) - 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 - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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; } -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 - (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 - (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 - 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 - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; 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 - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # 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 - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${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 -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # 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;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -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= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -am__api_version='1.14' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $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 as_fn_executable_p "$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 -{ $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_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="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 -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - 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 - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='spatialindex-src' - VERSION='1.8.5' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -depcc="$CC" 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_CC_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_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -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 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $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 - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - -# Checks for header files. -for ac_header in fcntl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" -if test "x$ac_cv_header_fcntl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FCNTL_H 1 -_ACEOF - -else - as_fn_error $? "cannot find fcntl.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF - -else - as_fn_error $? "cannot find unistd.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/types.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_TYPES_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/types.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/stat.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_stat_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_STAT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/stat.h, bailing out" "$LINENO" 5 -fi - -done - - -for ac_header in pthread.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_H 1 -_ACEOF - -#ifndef ANDROID -LIBS="$LIBS -lpthread" -#endif -fi - -done - - -for ac_header in sys/resource.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_resource_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_RESOURCE_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/resource.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/time.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_TIME_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/time.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find stdint.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in features.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default" -if test "x$ac_cv_header_features_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FEATURES_H 1 -_ACEOF - -fi - -done - - -#MH_CXX_HEADER_TOOLS - -LIBS="$LIBS" - -# Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; -else - enable_debug=$debug_default -fi - - -if test "x$enable_debug" = "xyes"; then - CXXFLAGS="$CXXFLAGS -g -DDEBUG" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking wether debug information is enabled... yes" >&5 -$as_echo "checking wether debug information is enabled... yes" >&6; } -else - CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking wether debug information is enabled... no" >&5 -$as_echo "checking wether debug information is enabled... no" >&6; } -fi - -# Checks for library functions. -for ac_func in gettimeofday memset memcpy bcopy srand48 -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - if test "x$HAVE_SRAND48" = xtrue; then - RAND_IS_CONFIG_TRUE= - RAND_IS_CONFIG_FALSE='#' -else - RAND_IS_CONFIG_TRUE='#' - RAND_IS_CONFIG_FALSE= -fi - - -ac_config_files="$ac_config_files Makefile include/Makefile src/Makefile src/libspatialindex.pc src/capi/Makefile src/spatialindex/Makefile src/storagemanager/Makefile src/rtree/Makefile src/mvrtree/Makefile src/tprtree/Makefile src/tools/Makefile test/Makefile test/geometry/Makefile test/rtree/Makefile test/mvrtree/Makefile test/tprtree/Makefile" - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__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 -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${RAND_IS_CONFIG_TRUE}" && test -z "${RAND_IS_CONFIG_FALSE}"; then - as_fn_error $? "conditional \"RAND_IS_CONFIG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by spatialindex $as_me 1.8.5, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -spatialindex config.status 1.8.5 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -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"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -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 SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/libspatialindex.pc") CONFIG_FILES="$CONFIG_FILES src/libspatialindex.pc" ;; - "src/capi/Makefile") CONFIG_FILES="$CONFIG_FILES src/capi/Makefile" ;; - "src/spatialindex/Makefile") CONFIG_FILES="$CONFIG_FILES src/spatialindex/Makefile" ;; - "src/storagemanager/Makefile") CONFIG_FILES="$CONFIG_FILES src/storagemanager/Makefile" ;; - "src/rtree/Makefile") CONFIG_FILES="$CONFIG_FILES src/rtree/Makefile" ;; - "src/mvrtree/Makefile") CONFIG_FILES="$CONFIG_FILES src/mvrtree/Makefile" ;; - "src/tprtree/Makefile") CONFIG_FILES="$CONFIG_FILES src/tprtree/Makefile" ;; - "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;; - "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; - "test/geometry/Makefile") CONFIG_FILES="$CONFIG_FILES test/geometry/Makefile" ;; - "test/rtree/Makefile") CONFIG_FILES="$CONFIG_FILES test/rtree/Makefile" ;; - "test/mvrtree/Makefile") CONFIG_FILES="$CONFIG_FILES test/mvrtree/Makefile" ;; - "test/tprtree/Makefile") CONFIG_FILES="$CONFIG_FILES test/tprtree/Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# 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, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -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 - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - 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" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - diff --git a/spatialindex-1.8.5/configure.ac b/spatialindex-1.8.5/configure.ac deleted file mode 100644 index 3ce074d..0000000 --- a/spatialindex-1.8.5/configure.ac +++ /dev/null @@ -1,83 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) - -m4_define([sidx_version_major], [1]) -m4_define([sidx_version_minor], [8]) -m4_define([sidx_version_micro], [5]) -m4_define([sidx_version], - [sidx_version_major.sidx_version_minor.sidx_version_micro]) - -AC_INIT([spatialindex], [sidx_version], [mhadji@gmail.com], [spatialindex-src]) -AC_CANONICAL_BUILD -AC_CONFIG_MACRO_DIR([m4]) - -debug_default="no" - -CFLAGS="-Wall -Wno-long-long -pedantic $CFLAGS" -CXXFLAGS="-Wall -Wno-long-long -pedantic -std=c++98 $CXXFLAGS" - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CXXCPP -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_PROG_LIBTOOL -AM_INIT_AUTOMAKE([dist-bzip2 subdir-objects]) - -# Checks for header files. -AC_CHECK_HEADERS(fcntl.h,, [AC_MSG_ERROR([cannot find fcntl.h, bailing out])]) -AC_CHECK_HEADERS(unistd.h,, [AC_MSG_ERROR([cannot find unistd.h, bailing out])]) -AC_CHECK_HEADERS(sys/types.h,, [AC_MSG_ERROR([cannot find sys/types.h, bailing out])]) -AC_CHECK_HEADERS(sys/stat.h,, [AC_MSG_ERROR([cannot find sys/stat.h, bailing out])]) - -AC_CHECK_HEADERS(pthread.h, [ -#ifndef ANDROID -LIBS="$LIBS -lpthread" -#endif]) - -AC_CHECK_HEADERS(sys/resource.h,, [AC_MSG_ERROR([cannot find sys/resource.h, bailing out])]) -AC_CHECK_HEADERS(sys/time.h,, [AC_MSG_ERROR([cannot find sys/time.h, bailing out])]) -AC_CHECK_HEADERS(stdint.h,, [AC_MSG_ERROR([cannot find stdint.h, bailing out])]) -AC_CHECK_HEADERS(features.h) - -#MH_CXX_HEADER_TOOLS - -LIBS="$LIBS" - -AC_ARG_ENABLE(debug, [ --enable-debug=[no/yes] turn on debugging [default=$debug_default]],, enable_debug=$debug_default) - -if test "x$enable_debug" = "xyes"; then - CXXFLAGS="$CXXFLAGS -g -DDEBUG" - AC_MSG_RESULT(checking wether debug information is enabled... yes) -else - CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" - AC_MSG_RESULT(checking wether debug information is enabled... no) -fi - -# Checks for library functions. -AC_CHECK_FUNCS([gettimeofday memset memcpy bcopy srand48]) - -AM_CONDITIONAL([RAND_IS_CONFIG], [test "x$HAVE_SRAND48" = xtrue]) - -AC_CONFIG_FILES([ Makefile - include/Makefile - src/Makefile - src/libspatialindex.pc - src/capi/Makefile - src/spatialindex/Makefile - src/storagemanager/Makefile - src/rtree/Makefile - src/mvrtree/Makefile - src/tprtree/Makefile - src/tools/Makefile - test/Makefile - test/geometry/Makefile - test/rtree/Makefile - test/mvrtree/Makefile - test/tprtree/Makefile]) - -AC_OUTPUT - diff --git a/spatialindex-1.8.5/depcomp b/spatialindex-1.8.5/depcomp deleted file mode 100644 index 11e2d3b..0000000 --- a/spatialindex-1.8.5/depcomp +++ /dev/null @@ -1,522 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2004-05-31.23 - -# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit 0 - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit 0 - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - stat=$? - - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - outname="$stripped.o" - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # Dependencies are output in .lo.d with libtool 1.4. - # With libtool 1.5 they are output both in $dir.libs/$base.o.d - # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the - # latter, because the former will be cleaned when $dir.libs is - # erased. - tmpdepfile1="$dir.libs/$base.lo.d" - tmpdepfile2="$dir$base.o.d" - tmpdepfile3="$dir.libs/$base.d" - "$@" -Wc,-MD - else - tmpdepfile1="$dir$base.o.d" - tmpdepfile2="$dir$base.d" - tmpdepfile3="$dir$base.d" - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - elif test -f "$tmpdepfile2"; then - tmpdepfile="$tmpdepfile2" - else - tmpdepfile="$tmpdepfile3" - fi - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/include/Makefile.am b/spatialindex-1.8.5/include/Makefile.am deleted file mode 100644 index d71812b..0000000 --- a/spatialindex-1.8.5/include/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -spatialindexdir = $(includedir) - -nobase_spatialindex_HEADERS = spatialindex/SpatialIndex.h \ - spatialindex/RTree.h \ - spatialindex/MVRTree.h \ - spatialindex/TPRTree.h \ - spatialindex/Point.h \ - spatialindex/Region.h \ - spatialindex/LineSegment.h \ - spatialindex/TimePoint.h \ - spatialindex/TimeRegion.h \ - spatialindex/MovingPoint.h \ - spatialindex/MovingRegion.h \ - spatialindex/Version.h \ - spatialindex/capi/BoundsQuery.h \ - spatialindex/capi/CountVisitor.h \ - spatialindex/capi/CustomStorage.h \ - spatialindex/capi/DataStream.h \ - spatialindex/capi/Error.h \ - spatialindex/capi/IdVisitor.h \ - spatialindex/capi/Index.h \ - spatialindex/capi/LeafQuery.h \ - spatialindex/capi/ObjVisitor.h \ - spatialindex/capi/sidx_api.h \ - spatialindex/capi/sidx_export.h \ - spatialindex/capi/sidx_config.h \ - spatialindex/capi/sidx_impl.h \ - spatialindex/capi/Utility.h \ - spatialindex/tools/PointerPool.h \ - spatialindex/tools/PoolPointer.h \ - spatialindex/tools/rand48.h \ - spatialindex/tools/SmartPointer.h \ - spatialindex/tools/Tools.h diff --git a/spatialindex-1.8.5/include/Makefile.in b/spatialindex-1.8.5/include/Makefile.in deleted file mode 100644 index d4fdc99..0000000 --- a/spatialindex-1.8.5/include/Makefile.in +++ /dev/null @@ -1,582 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(nobase_spatialindex_HEADERS) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(spatialindexdir)" -HEADERS = $(nobase_spatialindex_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -spatialindexdir = $(includedir) -nobase_spatialindex_HEADERS = spatialindex/SpatialIndex.h \ - spatialindex/RTree.h \ - spatialindex/MVRTree.h \ - spatialindex/TPRTree.h \ - spatialindex/Point.h \ - spatialindex/Region.h \ - spatialindex/LineSegment.h \ - spatialindex/TimePoint.h \ - spatialindex/TimeRegion.h \ - spatialindex/MovingPoint.h \ - spatialindex/MovingRegion.h \ - spatialindex/Version.h \ - spatialindex/capi/BoundsQuery.h \ - spatialindex/capi/CountVisitor.h \ - spatialindex/capi/CustomStorage.h \ - spatialindex/capi/DataStream.h \ - spatialindex/capi/Error.h \ - spatialindex/capi/IdVisitor.h \ - spatialindex/capi/Index.h \ - spatialindex/capi/LeafQuery.h \ - spatialindex/capi/ObjVisitor.h \ - spatialindex/capi/sidx_api.h \ - spatialindex/capi/sidx_export.h \ - spatialindex/capi/sidx_config.h \ - spatialindex/capi/sidx_impl.h \ - spatialindex/capi/Utility.h \ - spatialindex/tools/PointerPool.h \ - spatialindex/tools/PoolPointer.h \ - spatialindex/tools/rand48.h \ - spatialindex/tools/SmartPointer.h \ - spatialindex/tools/Tools.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-nobase_spatialindexHEADERS: $(nobase_spatialindex_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nobase_spatialindex_HEADERS)'; test -n "$(spatialindexdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(spatialindexdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(spatialindexdir)" || exit 1; \ - fi; \ - $(am__nobase_list) | while read dir files; do \ - xfiles=; for file in $$files; do \ - if test -f "$$file"; then xfiles="$$xfiles $$file"; \ - else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ - test -z "$$xfiles" || { \ - test "x$$dir" = x. || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(spatialindexdir)/$$dir'"; \ - $(MKDIR_P) "$(DESTDIR)$(spatialindexdir)/$$dir"; }; \ - echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(spatialindexdir)/$$dir'"; \ - $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(spatialindexdir)/$$dir" || exit $$?; }; \ - done - -uninstall-nobase_spatialindexHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nobase_spatialindex_HEADERS)'; test -n "$(spatialindexdir)" || list=; \ - $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - dir='$(DESTDIR)$(spatialindexdir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(spatialindexdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-nobase_spatialindexHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-nobase_spatialindexHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man \ - install-nobase_spatialindexHEADERS install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-nobase_spatialindexHEADERS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/include/spatialindex/LineSegment.h b/spatialindex-1.8.5/include/spatialindex/LineSegment.h deleted file mode 100644 index 86c77a9..0000000 --- a/spatialindex-1.8.5/include/spatialindex/LineSegment.h +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL LineSegment : public libsupermesh::Tools::IObject, public virtual IShape - { - public: - LineSegment(); - LineSegment(const double* startPoint, const double* endPoint, uint32_t dimension); - LineSegment(const Point& startPoint, const Point& endPoint); - LineSegment(const LineSegment& l); - virtual ~LineSegment(); - - virtual LineSegment& operator=(const LineSegment& p); - virtual bool operator==(const LineSegment& p) const; - - // - // IObject interface - // - virtual LineSegment* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - // - // IShape interface - // - virtual bool intersectsShape(const IShape& in) const; - virtual bool containsShape(const IShape& in) const; - virtual bool touchesShape(const IShape& in) const; - virtual void getCenter(Point& out) const; - virtual uint32_t getDimension() const; - virtual void getMBR(Region& out) const; - virtual double getArea() const; - virtual double getMinimumDistance(const IShape& in) const; - - virtual bool intersectsLineSegment(const LineSegment& l) const; - virtual bool intersectsRegion(const Region& p) const; - virtual double getMinimumDistance(const Point& p) const; - //virtual double getMinimumDistance(const Region& r) const; - virtual double getRelativeMinimumDistance(const Point& p) const; - virtual double getRelativeMaximumDistance(const Region& r) const; - virtual double getAngleOfPerpendicularRay(); - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - uint32_t m_dimension; - double* m_pStartPoint; - double* m_pEndPoint; - - friend class Region; - friend class Point; - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const LineSegment& pt); - - protected: - - //some helpers for intersects methods - static double doubleAreaTriangle(const Point& a, const Point& b, const Point& c); - static bool leftOf(const Point& a, const Point& b, const Point& c); - static bool collinear(const Point& a, const Point& b, const Point& c); - static bool between(const Point& a, const Point& b, const Point& c); - static bool between(double a, double b, double c); - static bool intersectsProper(const Point& a, const Point& b, const Point& c, const Point& d); - static bool intersects(const Point& a, const Point& b, const Point& c, const Point& d); - - }; // LineSegment - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const LineSegment& pt); -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/MVRTree.h b/spatialindex-1.8.5/include/spatialindex/MVRTree.h deleted file mode 100644 index 150ff5c..0000000 --- a/spatialindex-1.8.5/include/spatialindex/MVRTree.h +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - SIDX_DLL enum MVRTreeVariant - { - RV_LINEAR = 0x0, - RV_QUADRATIC, - RV_RSTAR - }; - - SIDX_DLL enum PersistenObjectIdentifier - { - PersistentIndex = 0x1, - PersistentLeaf = 0x2 - }; - - SIDX_DLL enum RangeQueryType - { - ContainmentQuery = 0x1, - IntersectionQuery = 0x2 - }; - - class SIDX_DLL Data : public IData, public libsupermesh::Tools::ISerializable - { - public: - Data(uint32_t len, byte* pData, TimeRegion& r, id_type id); - virtual ~Data(); - - virtual Data* clone(); - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - virtual void getData(uint32_t& len, byte** data) const; - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - id_type m_id; - TimeRegion m_region; - byte* m_pData; - uint32_t m_dataLength; - }; // Data - - SIDX_DLL ISpatialIndex* returnMVRTree(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL ISpatialIndex* createNewMVRTree( - IStorageManager& in, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - MVRTreeVariant rv, - id_type& out_indexIdentifier - ); - SIDX_DLL ISpatialIndex* loadMVRTree( - IStorageManager& in, - id_type indexIdentifier - ); - } -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/MovingPoint.h b/spatialindex-1.8.5/include/spatialindex/MovingPoint.h deleted file mode 100644 index 2cc005c..0000000 --- a/spatialindex-1.8.5/include/spatialindex/MovingPoint.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL MovingPoint : public TimePoint, public IEvolvingShape - { - public: - MovingPoint(); - MovingPoint(const double* pCoords, const double* pVCoords, const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - MovingPoint(const double* pCoords, const double* pVCoords, double tStart, double tEnd, uint32_t dimension); - MovingPoint(const Point& p, const Point& vp, const libsupermesh::Tools::IInterval& ti); - MovingPoint(const Point& p, const Point& vp, double tStart, double tEnd); - MovingPoint(const MovingPoint& p); - virtual ~MovingPoint(); - - virtual MovingPoint& operator=(const MovingPoint& p); - virtual bool operator==(const MovingPoint& p) const; - - virtual double getCoord(uint32_t index, double t) const; - virtual double getProjectedCoord(uint32_t index, double t) const; - virtual double getVCoord(uint32_t index) const; - virtual void getPointAtTime(double t, Point& out) const; - - // - // IObject interface - // - virtual MovingPoint* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // IEvolvingShape interface - // - virtual void getVMBR(Region& out) const; - virtual void getMBRAtTime(double t, Region& out) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - private: - void initialize( - const double* pCoords, const double* pVCoords, - double tStart, double tEnd, uint32_t dimension); - - public: - double* m_pVCoords; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingPoint& pt); - }; // MovingPoint - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingPoint& pt); -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/MovingRegion.h b/spatialindex-1.8.5/include/spatialindex/MovingRegion.h deleted file mode 100644 index 3a6af3d..0000000 --- a/spatialindex-1.8.5/include/spatialindex/MovingRegion.h +++ /dev/null @@ -1,176 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once -#include -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL MovingRegion : public TimeRegion, public IEvolvingShape - { - using Region::getLow; - using Region::getHigh; - using TimeRegion::intersectsRegionInTime; - using TimeRegion::containsRegionInTime; - using TimeRegion::combineRegionInTime; - using TimeRegion::getCombinedRegionInTime; - using TimeRegion::containsPointInTime; - - public: - MovingRegion(); - MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension); - MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - const libsupermesh::Tools::IInterval& ti); - MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - double tStart, double tEnd); - MovingRegion(const Region& mbr, const Region& vbr, const libsupermesh::Tools::IInterval& ivI); - MovingRegion(const Region& mbr, const Region& vbr, double tStart, double tEnd); - MovingRegion(const MovingPoint& low, const MovingPoint& high); - MovingRegion(const MovingRegion& in); - virtual ~MovingRegion(); - - virtual MovingRegion& operator=(const MovingRegion& r); - virtual bool operator==(const MovingRegion&) const; - - bool isShrinking() const; - - virtual double getLow(uint32_t index, double t) const; - virtual double getHigh(uint32_t index, double t) const; - virtual double getExtrapolatedLow(uint32_t index, double t) const; - virtual double getExtrapolatedHigh(uint32_t index, double t) const; - virtual double getVLow(uint32_t index) const; - virtual double getVHigh(uint32_t index) const; - - virtual bool intersectsRegionInTime(const MovingRegion& r) const; - virtual bool intersectsRegionInTime(const MovingRegion& r, libsupermesh::Tools::IInterval& out) const; - virtual bool intersectsRegionInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r, libsupermesh::Tools::IInterval& ret) const; - virtual bool containsRegionInTime(const MovingRegion& r) const; - virtual bool containsRegionInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r) const; - virtual bool containsRegionAfterTime(double t, const MovingRegion& r) const; - - virtual double getProjectedSurfaceAreaInTime() const; - virtual double getProjectedSurfaceAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - - virtual double getCenterDistanceInTime(const MovingRegion& r) const; - virtual double getCenterDistanceInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r) const; - - virtual bool intersectsRegionAtTime(double t, const MovingRegion& r) const; - virtual bool containsRegionAtTime(double t, const MovingRegion& r) const; - - virtual bool intersectsPointInTime(const MovingPoint& p) const; - virtual bool intersectsPointInTime(const MovingPoint& p, libsupermesh::Tools::IInterval& out) const; - virtual bool intersectsPointInTime(const libsupermesh::Tools::IInterval& ivI, const MovingPoint& p, libsupermesh::Tools::IInterval& out) const; - virtual bool containsPointInTime(const MovingPoint& p) const; - virtual bool containsPointInTime(const libsupermesh::Tools::IInterval& ivI, const MovingPoint& p) const; - - //virtual bool intersectsPointAtTime(double t, const MovingRegion& in) const; - //virtual bool containsPointAtTime(double t, const MovingRegion& in) const; - - virtual void combineRegionInTime(const MovingRegion& r); - virtual void combineRegionAfterTime(double t, const MovingRegion& r); - virtual void getCombinedRegionInTime(MovingRegion& out, const MovingRegion& in) const; - virtual void getCombinedRegionAfterTime(double t, MovingRegion& out, const MovingRegion& in) const; - - virtual double getIntersectingAreaInTime(const MovingRegion& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const MovingRegion& r) const; - - // - // IObject interface - // - virtual MovingRegion* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // IEvolvingShape interface - // - virtual void getVMBR(Region& out) const; - virtual void getMBRAtTime(double t, Region& out) const; - - // - // ITimeShape interface - // - virtual double getAreaInTime() const; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - private: - void initialize( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension); - - public: - class CrossPoint - { - public: - double m_t; - uint32_t m_dimension; - uint32_t m_boundary; - const MovingRegion* m_to; - - struct ascending { - bool operator()(const CrossPoint& __x, const CrossPoint& __y) const { - return __x.m_t > __y.m_t; - } - }; - }; // CrossPoint - - public: - double* m_pVLow; - double* m_pVHigh; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingRegion& r); - }; // MovingRegion - - typedef libsupermesh::Tools::PoolPointer MovingRegionPtr; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const MovingRegion& r); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/Point.h b/spatialindex-1.8.5/include/spatialindex/Point.h deleted file mode 100644 index dfdf4c8..0000000 --- a/spatialindex-1.8.5/include/spatialindex/Point.h +++ /dev/null @@ -1,92 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "tools/Tools.h" - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL Point : public libsupermesh::Tools::IObject, public virtual IShape - { - public: - Point(); - Point(const double* pCoords, uint32_t dimension); - Point(const Point& p); - virtual ~Point(); - - virtual Point& operator=(const Point& p); - virtual bool operator==(const Point& p) const; - - // - // IObject interface - // - virtual Point* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - // - // IShape interface - // - virtual bool intersectsShape(const IShape& in) const; - virtual bool containsShape(const IShape& in) const; - virtual bool touchesShape(const IShape& in) const; - virtual void getCenter(Point& out) const; - virtual uint32_t getDimension() const; - virtual void getMBR(Region& out) const; - virtual double getArea() const; - virtual double getMinimumDistance(const IShape& in) const; - - virtual double getMinimumDistance(const Point& p) const; - - virtual double getCoordinate(uint32_t index) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - uint32_t m_dimension; - double* m_pCoords; - - friend class Region; - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const Point& pt); - }; // Point - - typedef libsupermesh::Tools::PoolPointer PointPtr; - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const Point& pt); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/RTree.h b/spatialindex-1.8.5/include/spatialindex/RTree.h deleted file mode 100644 index 5349343..0000000 --- a/spatialindex-1.8.5/include/spatialindex/RTree.h +++ /dev/null @@ -1,113 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - SIDX_DLL enum RTreeVariant - { - RV_LINEAR = 0x0, - RV_QUADRATIC, - RV_RSTAR - }; - - SIDX_DLL enum BulkLoadMethod - { - BLM_STR = 0x0 - }; - - SIDX_DLL enum PersistenObjectIdentifier - { - PersistentIndex = 0x1, - PersistentLeaf = 0x2 - }; - - SIDX_DLL enum RangeQueryType - { - ContainmentQuery = 0x1, - IntersectionQuery = 0x2 - }; - - class SIDX_DLL Data : public IData, public libsupermesh::Tools::ISerializable - { - public: - Data(uint32_t len, byte* pData, Region& r, id_type id); - virtual ~Data(); - - virtual Data* clone(); - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - virtual void getData(uint32_t& len, byte** data) const; - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - id_type m_id; - Region m_region; - byte* m_pData; - uint32_t m_dataLength; - }; // Data - - SIDX_DLL ISpatialIndex* returnRTree(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL ISpatialIndex* createNewRTree( - IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - RTreeVariant rv, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - RTreeVariant rv, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - IStorageManager& sm, - libsupermesh::Tools::PropertySet& ps, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* loadRTree(IStorageManager& in, id_type indexIdentifier); - } -} } diff --git a/spatialindex-1.8.5/include/spatialindex/Region.h b/spatialindex-1.8.5/include/spatialindex/Region.h deleted file mode 100644 index aa9551c..0000000 --- a/spatialindex-1.8.5/include/spatialindex/Region.h +++ /dev/null @@ -1,111 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL Region : public libsupermesh::Tools::IObject, public virtual IShape - { - public: - Region(); - Region(const double* pLow, const double* pHigh, uint32_t dimension); - Region(const Point& low, const Point& high); - Region(const Region& in); - virtual ~Region(); - - virtual Region& operator=(const Region& r); - virtual bool operator==(const Region&) const; - - // - // IObject interface - // - virtual Region* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - // - // IShape interface - // - virtual bool intersectsShape(const IShape& in) const; - virtual bool containsShape(const IShape& in) const; - virtual bool touchesShape(const IShape& in) const; - virtual void getCenter(Point& out) const; - virtual uint32_t getDimension() const; - virtual void getMBR(Region& out) const; - virtual double getArea() const; - virtual double getMinimumDistance(const IShape& in) const; - - virtual bool intersectsRegion(const Region& in) const; - virtual bool containsRegion(const Region& in) const; - virtual bool touchesRegion(const Region& in) const; - virtual double getMinimumDistance(const Region& in) const; - - virtual bool intersectsLineSegment(const LineSegment& in) const; - - virtual bool containsPoint(const Point& in) const; - virtual bool touchesPoint(const Point& in) const; - virtual double getMinimumDistance(const Point& in) const; - - virtual Region getIntersectingRegion(const Region& r) const; - virtual double getIntersectingArea(const Region& in) const; - virtual double getMargin() const; - - virtual void combineRegion(const Region& in); - virtual void combinePoint(const Point& in); - virtual void getCombinedRegion(Region& out, const Region& in) const; - - virtual double getLow(uint32_t index) const; - virtual double getHigh(uint32_t index) const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - private: - void initialize(const double* pLow, const double* pHigh, uint32_t dimension); - - public: - uint32_t m_dimension; - double* m_pLow; - double* m_pHigh; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const Region& r); - }; // Region - - typedef libsupermesh::Tools::PoolPointer RegionPtr; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const Region& r); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/SpatialIndex.h b/spatialindex-1.8.5/include/spatialindex/SpatialIndex.h deleted file mode 100644 index 3188e98..0000000 --- a/spatialindex-1.8.5/include/spatialindex/SpatialIndex.h +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "tools/Tools.h" - -#ifndef M_PI_2 -#define M_PI_2 1.57079632679489661922 -#endif - -namespace libsupermesh { namespace SpatialIndex -{ - class Point; - class LineSegment; - class Region; - - - typedef int64_t id_type; - - SIDX_DLL enum CommandType - { - CT_NODEREAD = 0x0, - CT_NODEDELETE, - CT_NODEWRITE - }; - - class SIDX_DLL InvalidPageException : public libsupermesh::Tools::Exception - { - public: - InvalidPageException(id_type id); - virtual ~InvalidPageException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // InvalidPageException - - // - // Interfaces - // - - class SIDX_DLL IShape : public libsupermesh::Tools::ISerializable - { - public: - virtual bool intersectsShape(const IShape& in) const = 0; - virtual bool containsShape(const IShape& in) const = 0; - virtual bool touchesShape(const IShape& in) const = 0; - virtual void getCenter(Point& out) const = 0; - virtual uint32_t getDimension() const = 0; - virtual void getMBR(Region& out) const = 0; - virtual double getArea() const = 0; - virtual double getMinimumDistance(const IShape& in) const = 0; - virtual ~IShape() {} - }; // IShape - - class SIDX_DLL ITimeShape : public libsupermesh::Tools::IInterval - { - public: - virtual bool intersectsShapeInTime(const ITimeShape& in) const = 0; - virtual bool intersectsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const = 0; - virtual bool containsShapeInTime(const ITimeShape& in) const = 0; - virtual bool containsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const = 0; - virtual bool touchesShapeInTime(const ITimeShape& in) const = 0; - virtual bool touchesShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const = 0; - virtual double getAreaInTime() const = 0; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const = 0; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const = 0; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const = 0; - virtual ~ITimeShape() {} - }; // ITimeShape - - class SIDX_DLL IEvolvingShape - { - public: - virtual void getVMBR(Region& out) const = 0; - virtual void getMBRAtTime(double t, Region& out) const = 0; - virtual ~IEvolvingShape() {} - }; // IEvolvingShape - - class SIDX_DLL IEntry : public libsupermesh::Tools::IObject - { - public: - virtual id_type getIdentifier() const = 0; - virtual void getShape(IShape** out) const = 0; - virtual ~IEntry() {} - }; // IEntry - - class SIDX_DLL INode : public IEntry, public libsupermesh::Tools::ISerializable - { - public: - virtual uint32_t getChildrenCount() const = 0; - virtual id_type getChildIdentifier(uint32_t index) const = 0; - virtual void getChildData(uint32_t index, uint32_t& len, byte** data) const = 0; - virtual void getChildShape(uint32_t index, IShape** out) const = 0; - virtual uint32_t getLevel() const = 0; - virtual bool isIndex() const = 0; - virtual bool isLeaf() const = 0; - virtual ~INode() {} - }; // INode - - class SIDX_DLL IData : public IEntry - { - public: - virtual void getData(uint32_t& len, byte** data) const = 0; - virtual ~IData() {} - }; // IData - - class SIDX_DLL IDataStream : public libsupermesh::Tools::IObjectStream - { - public: - virtual IData* getNext() = 0; - virtual ~IDataStream() {} - }; // IDataStream - - class SIDX_DLL ICommand - { - public: - virtual void execute(const INode& in) = 0; - virtual ~ICommand() {} - }; // ICommand - - class SIDX_DLL INearestNeighborComparator - { - public: - virtual double getMinimumDistance(const IShape& query, const IShape& entry) = 0; - virtual double getMinimumDistance(const IShape& query, const IData& data) = 0; - virtual ~INearestNeighborComparator() {} - }; // INearestNeighborComparator - - class SIDX_DLL IStorageManager - { - public: - virtual void loadByteArray(const id_type id, uint32_t& len, byte** data) = 0; - virtual void storeByteArray(id_type& id, const uint32_t len, const byte* const data) = 0; - virtual void deleteByteArray(const id_type id) = 0; - virtual void flush() = 0; - virtual ~IStorageManager() {} - }; // IStorageManager - - class SIDX_DLL IVisitor - { - public: - virtual void visitNode(const INode& in) = 0; - virtual void visitData(const IData& in) = 0; - virtual void visitData(std::vector& v) = 0; - virtual ~IVisitor() {} - }; // IVisitor - - class SIDX_DLL IQueryStrategy - { - public: - virtual void getNextEntry(const IEntry& previouslyFetched, id_type& nextEntryToFetch, bool& bFetchNextEntry) = 0; - virtual ~IQueryStrategy() {} - }; // IQueryStrategy - - class SIDX_DLL IStatistics - { - public: - virtual uint64_t getReads() const = 0; - virtual uint64_t getWrites() const = 0; - virtual uint32_t getNumberOfNodes() const = 0; - virtual uint64_t getNumberOfData() const = 0; - virtual ~IStatistics() {} - }; // IStatistics - - class SIDX_DLL ISpatialIndex - { - public: - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type shapeIdentifier) = 0; - virtual bool deleteData(const IShape& shape, id_type shapeIdentifier) = 0; - virtual void containsWhatQuery(const IShape& query, IVisitor& v) = 0; - virtual void intersectsWithQuery(const IShape& query, IVisitor& v) = 0; - virtual void pointLocationQuery(const Point& query, IVisitor& v) = 0; - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator& nnc) = 0; - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) = 0; - virtual void selfJoinQuery(const IShape& s, IVisitor& v) = 0; - virtual void queryStrategy(IQueryStrategy& qs) = 0; - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const = 0; - virtual void addCommand(ICommand* in, CommandType ct) = 0; - virtual bool isIndexValid() = 0; - virtual void getStatistics(IStatistics** out) const = 0; - virtual ~ISpatialIndex() {} - - }; // ISpatialIndex - - namespace StorageManager - { - SIDX_DLL enum StorageManagerConstants - { - EmptyPage = -0x1, - NewPage = -0x1 - }; - - class SIDX_DLL IBuffer : public IStorageManager - { - public: - virtual uint64_t getHits() = 0; - virtual void clear() = 0; - virtual ~IBuffer() {} - }; // IBuffer - - SIDX_DLL IStorageManager* returnMemoryStorageManager(libsupermesh::Tools::PropertySet& in); - SIDX_DLL IStorageManager* createNewMemoryStorageManager(); - - SIDX_DLL IStorageManager* returnDiskStorageManager(libsupermesh::Tools::PropertySet& in); - SIDX_DLL IStorageManager* createNewDiskStorageManager(std::string& baseName, uint32_t pageSize); - SIDX_DLL IStorageManager* loadDiskStorageManager(std::string& baseName); - - SIDX_DLL IBuffer* returnRandomEvictionsBuffer(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL IBuffer* createNewRandomEvictionsBuffer(IStorageManager& in, uint32_t capacity, bool bWriteThrough); - } - - // - // Global functions - // - SIDX_DLL std::ostream& operator<<(std::ostream&, const ISpatialIndex&); - SIDX_DLL std::ostream& operator<<(std::ostream&, const IStatistics&); -} } - -#include "Point.h" -#include "Region.h" -#include "LineSegment.h" -#include "TimePoint.h" -#include "TimeRegion.h" -#include "MovingPoint.h" -#include "MovingRegion.h" -#include "RTree.h" -#include "MVRTree.h" -#include "TPRTree.h" -#include "Version.h" - - -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer RegionPtr; -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer PointPtr; -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer TimeRegionPtr; -// typedef libsupermesh::SpatialIndex::libsupermesh::Tools::PoolPointer MovingRegionPtr; diff --git a/spatialindex-1.8.5/include/spatialindex/TPRTree.h b/spatialindex-1.8.5/include/spatialindex/TPRTree.h deleted file mode 100644 index 7b43f00..0000000 --- a/spatialindex-1.8.5/include/spatialindex/TPRTree.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - SIDX_DLL enum TPRTreeVariant - { - TPRV_RSTAR = 0x2 - }; - - SIDX_DLL enum PersistenObjectIdentifier - { - PersistentIndex = 0x1, - PersistentLeaf = 0x2 - }; - - SIDX_DLL enum RangeQueryType - { - ContainmentQuery = 0x1, - IntersectionQuery = 0x2 - }; - - class SIDX_DLL Data : public IData, public libsupermesh::Tools::ISerializable - { - public: - Data(uint32_t len, byte* pData, MovingRegion& r, id_type id); - virtual ~Data(); - - virtual Data* clone(); - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - virtual void getData(uint32_t& len, byte** data) const; - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - id_type m_id; - MovingRegion m_region; - byte* m_pData; - uint32_t m_dataLength; - }; // Data - - SIDX_DLL ISpatialIndex* returnTPRTree(IStorageManager& ind, libsupermesh::Tools::PropertySet& in); - SIDX_DLL ISpatialIndex* createNewTPRTree( - IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - TPRTreeVariant rv, - double horizon, - id_type& indexIdentifier - ); - SIDX_DLL ISpatialIndex* loadTPRTree(IStorageManager& in, id_type indexIdentifier); - } -} } diff --git a/spatialindex-1.8.5/include/spatialindex/TimePoint.h b/spatialindex-1.8.5/include/spatialindex/TimePoint.h deleted file mode 100644 index 700c457..0000000 --- a/spatialindex-1.8.5/include/spatialindex/TimePoint.h +++ /dev/null @@ -1,100 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL TimePoint : public Point, public ITimeShape - { - public: - TimePoint(); - TimePoint(const double* pCoords, const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - TimePoint(const double* pCoords, double tStart, double tEnd, uint32_t dimension); - TimePoint(const Point& p, const libsupermesh::Tools::IInterval& ti); - TimePoint(const Point& p, double tStart, double tEnd); - TimePoint(const TimePoint& p); - virtual ~TimePoint(); - - virtual TimePoint& operator=(const TimePoint& p); - virtual bool operator==(const TimePoint& p) const; - - // - // IObject interface - // - virtual TimePoint* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // ITimeShape interface - // - virtual bool intersectsShapeInTime(const ITimeShape& in) const; - virtual bool intersectsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool containsShapeInTime(const ITimeShape& in) const; - virtual bool containsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool touchesShapeInTime(const ITimeShape& in) const; - virtual bool touchesShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual double getAreaInTime() const; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const; - - // - // IInterval interface - // - virtual libsupermesh::Tools::IInterval& operator=(const libsupermesh::Tools::IInterval&); - virtual double getLowerBound() const; - virtual double getUpperBound() const; - virtual void setBounds(double, double); - virtual bool intersectsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual bool intersectsInterval(libsupermesh::Tools::IntervalType t, const double start, const double end) const; - virtual bool containsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual libsupermesh::Tools::IntervalType getIntervalType() const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - double m_startTime; - double m_endTime; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimePoint& pt); - }; // TimePoint - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimePoint& pt); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/TimeRegion.h b/spatialindex-1.8.5/include/spatialindex/TimeRegion.h deleted file mode 100644 index 5681b91..0000000 --- a/spatialindex-1.8.5/include/spatialindex/TimeRegion.h +++ /dev/null @@ -1,114 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - class SIDX_DLL TimeRegion : public Region, public ITimeShape - { - public: - TimeRegion(); - TimeRegion(const double* pLow, const double* pHigh, const libsupermesh::Tools::IInterval& ti, uint32_t dimension); - TimeRegion(const double* pLow, const double* pHigh, double tStart, double tEnd, uint32_t dimension); - TimeRegion(const Point& low, const Point& high, const libsupermesh::Tools::IInterval& ti); - TimeRegion(const Point& low, const Point& high, double tStart, double tEnd); - TimeRegion(const Region& in, const libsupermesh::Tools::IInterval& ti); - TimeRegion(const Region& in, double tStart, double tEnd); - TimeRegion(const TimePoint& low, const TimePoint& high); - TimeRegion(const TimeRegion& in); - virtual ~TimeRegion(); - - virtual TimeRegion& operator=(const TimeRegion& r); - virtual bool operator==(const TimeRegion&) const; - - virtual bool intersectsRegionInTime(const TimeRegion& in) const; - virtual bool containsRegionInTime(const TimeRegion& in) const; - virtual bool touchesRegionInTime(const TimeRegion& in) const; - - virtual bool containsPointInTime(const TimePoint& in) const; - virtual bool touchesPointInTime(const TimePoint& in) const; - - virtual void combineRegionInTime(const TimeRegion& in); - virtual void getCombinedRegionInTime(TimeRegion& out, const TimeRegion& in) const; - - // - // IObject interface - // - virtual TimeRegion* clone(); - - // - // ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // ITimeShape interface - // - virtual bool intersectsShapeInTime(const ITimeShape& in) const; - virtual bool intersectsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool containsShapeInTime(const ITimeShape& in) const; - virtual bool containsShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual bool touchesShapeInTime(const ITimeShape& in) const; - virtual bool touchesShapeInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& in) const; - virtual double getAreaInTime() const; - virtual double getAreaInTime(const libsupermesh::Tools::IInterval& ivI) const; - virtual double getIntersectingAreaInTime(const ITimeShape& r) const; - virtual double getIntersectingAreaInTime(const libsupermesh::Tools::IInterval& ivI, const ITimeShape& r) const; - - // - // IInterval interface - // - virtual libsupermesh::Tools::IInterval& operator=(const libsupermesh::Tools::IInterval&); - virtual double getLowerBound() const; - virtual double getUpperBound() const; - virtual void setBounds(double, double); - virtual bool intersectsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual bool intersectsInterval(libsupermesh::Tools::IntervalType t, const double start, const double end) const; - virtual bool containsInterval(const libsupermesh::Tools::IInterval& ti) const; - virtual libsupermesh::Tools::IntervalType getIntervalType() const; - - virtual void makeInfinite(uint32_t dimension); - virtual void makeDimension(uint32_t dimension); - - public: - double m_startTime; - double m_endTime; - - friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimeRegion& r); - }; // TimeRegion - - typedef libsupermesh::Tools::PoolPointer TimeRegionPtr; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const TimeRegion& r); -} } diff --git a/spatialindex-1.8.5/include/spatialindex/Version.h b/spatialindex-1.8.5/include/spatialindex/Version.h deleted file mode 100644 index b937e65..0000000 --- a/spatialindex-1.8.5/include/spatialindex/Version.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#pragma once - -#ifndef SIDX_VERSION_MAJOR -#define SIDX_VERSION_MAJOR 1 -#define SIDX_VERSION_MINOR 8 -#define SIDX_VERSION_REV 5 -#define SIDX_VERSION_BUILD 0 -#endif - -#ifndef SIDX_VERSION_NUM -#define SIDX_VERSION_NUM (SIDX_VERSION_MAJOR*1000+SIDX_VERSION_MINOR*100+SIDX_VERSION_REV*10+SIDX_VERSION_BUILD) -#endif - -#ifndef SIDX_RELEASE_DATE -#define SIDX_RELEASE_DATE 20141101 -#endif - -#ifndef SIDX_RELEASE_NAME -#define SIDX_RELEASE_NAME "1.8.5" -#endif - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h b/spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h deleted file mode 100644 index 34589d4..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/BoundsQuery.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the bounds query. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL BoundsQuery : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - libsupermesh::SpatialIndex::Region* m_bounds; - -public: - - BoundsQuery(); - ~BoundsQuery() { if (m_bounds != 0) delete m_bounds; } - void getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type& nextEntry, - bool& hasNext); - - libsupermesh::SpatialIndex::Region* GetBounds() const { return m_bounds; } -}; - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h b/spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h deleted file mode 100644 index 4866dc9..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/CountVisitor.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the count visitor. - * Author: Leonard NorrgÄrd, leonard.norrgard@refactor.fi - ****************************************************************************** - * Copyright (c) 2010, Leonard NorrgÄrd - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL CountVisitor : public libsupermesh::SpatialIndex::IVisitor -{ -private: - uint64_t nResults; - -public: - - CountVisitor(); - ~CountVisitor(); - - uint64_t GetResultCount() const { return nResults; } - - void visitNode(const libsupermesh::SpatialIndex::INode& n); - void visitData(const libsupermesh::SpatialIndex::IData& d); - void visitData(std::vector& v); -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h b/spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h deleted file mode 100644 index ebf174f..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/CustomStorage.h +++ /dev/null @@ -1,89 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the custom storage manager. - * Author: Matthias (nitro), nitro@dr-code.org - ****************************************************************************** - * Copyright (c) 2010, Matthias (nitro) - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - struct SIDX_DLL CustomStorageManagerCallbacks - { - CustomStorageManagerCallbacks() - : context(0) - , createCallback(0) - , destroyCallback(0) - , loadByteArrayCallback(0) - , storeByteArrayCallback(0) - , deleteByteArrayCallback(0) - {} - - void* context; - void (*createCallback)( const void* context, int* errorCode ); - void (*destroyCallback)( const void* context, int* errorCode ); - void (*flushCallback)( const void* context, int* errorCode ); - void (*loadByteArrayCallback)( const void* context, const id_type page, uint32_t* len, byte** data, int* errorCode ); - void (*storeByteArrayCallback)( const void* context, id_type* page, const uint32_t len, const byte* const data, int* errorCode ); - void (*deleteByteArrayCallback)( const void* context, const id_type page, int* errorCode ); - }; - - class SIDX_DLL CustomStorageManager : public libsupermesh::SpatialIndex::IStorageManager - { - public: - // I'd like this to be an enum, but casting between enums and ints is not nice - static const int NoError = 0; - static const int InvalidPageError = 1; - static const int IllegalStateError = 2; - - CustomStorageManager(libsupermesh::Tools::PropertySet&); - - virtual ~CustomStorageManager(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - private: - CustomStorageManagerCallbacks callbacks; - - inline void processErrorCode(int errorCode, const id_type page); - }; // CustomStorageManager - - // factory function - IStorageManager* returnCustomStorageManager(libsupermesh::Tools::PropertySet& in); - } -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/DataStream.h b/spatialindex-1.8.5/include/spatialindex/capi/DataStream.h deleted file mode 100644 index f6a0e5b..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/DataStream.h +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: Declarations to support stream loading via C API - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL DataStream : public libsupermesh::SpatialIndex::IDataStream -{ -public: - DataStream(int (*readNext)(libsupermesh::SpatialIndex::id_type* id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength)); - ~DataStream(); - - libsupermesh::SpatialIndex::IData* getNext(); - bool hasNext(); - - uint32_t size(); - void rewind(); - -protected: - libsupermesh::SpatialIndex::RTree::Data* m_pNext; - libsupermesh::SpatialIndex::id_type m_id; - -private: - int (*iterfunct)(libsupermesh::SpatialIndex::id_type *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength); - - bool readData(); - bool m_bDoneReading; - -}; - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/Error.h b/spatialindex-1.8.5/include/spatialindex/capi/Error.h deleted file mode 100644 index e8cc647..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/Error.h +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the error object. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL Error -{ -public: - - Error(int code, std::string const& message, std::string const& method); - - /// Copy constructor. - Error(Error const& other); - - /// Assignment operator. - Error& operator=(Error const& rhs); - - int GetCode() const { return m_code; } - const char* GetMessage() const { return m_message.c_str(); } - const char* GetMethod() const { return m_method.c_str(); } - -private: - - int m_code; - std::string m_message; - std::string m_method; -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h b/spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h deleted file mode 100644 index 40ea89a..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/IdVisitor.h +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement a query ids only. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL IdVisitor : public libsupermesh::SpatialIndex::IVisitor -{ -private: - std::vector m_vector; - uint64_t nResults; - -public: - - IdVisitor(); - ~IdVisitor(); - - uint64_t GetResultCount() const { return nResults; } - std::vector& GetResults() { return m_vector; } - - void visitNode(const libsupermesh::SpatialIndex::INode& n); - void visitData(const libsupermesh::SpatialIndex::IData& d); - void visitData(std::vector& v); -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/Index.h b/spatialindex-1.8.5/include/spatialindex/capi/Index.h deleted file mode 100644 index 28ea1fe..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/Index.h +++ /dev/null @@ -1,86 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the wrapper. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL Index -{ - -public: - Index(const libsupermesh::Tools::PropertySet& poProperties); - Index(const libsupermesh::Tools::PropertySet& poProperties, int (*readNext)(libsupermesh::SpatialIndex::id_type *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength)); - ~Index(); - - const libsupermesh::Tools::PropertySet GetProperties() { index().getIndexProperties(m_properties); return m_properties;} - - bool insertFeature(uint64_t id, double *min, double *max); - - RTIndexType GetIndexType(); - void SetIndexType(RTIndexType v); - - RTStorageType GetIndexStorage(); - void SetIndexStorage(RTStorageType v); - - RTIndexVariant GetIndexVariant(); - void SetIndexVariant(RTStorageType v); - - int64_t GetResultSetOffset(); - void SetResultSetOffset(int64_t v); - - int64_t GetResultSetLimit(); - void SetResultSetLimit(int64_t v); - - void flush(); - - libsupermesh::SpatialIndex::ISpatialIndex& index() {return *m_rtree;} - libsupermesh::SpatialIndex::StorageManager::IBuffer& buffer() {return *m_buffer;} - -private: - - Index& operator=(const Index&); - Index(); - - void Initialize(); - libsupermesh::SpatialIndex::IStorageManager* m_storage; - libsupermesh::SpatialIndex::StorageManager::IBuffer* m_buffer; - libsupermesh::SpatialIndex::ISpatialIndex* m_rtree; - - libsupermesh::Tools::PropertySet m_properties; - - void Setup(); - libsupermesh::SpatialIndex::IStorageManager* CreateStorage(); - libsupermesh::SpatialIndex::StorageManager::IBuffer* CreateIndexBuffer(libsupermesh::SpatialIndex::IStorageManager& storage); - libsupermesh::SpatialIndex::ISpatialIndex* CreateIndex(); -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h b/spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h deleted file mode 100644 index b7ee8ab..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/LeafQuery.h +++ /dev/null @@ -1,78 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement a query of the index's leaves. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class LeafQueryResult; - -class SIDX_DLL LeafQuery : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - std::queue m_ids; - std::vector m_results; -public: - - LeafQuery(); - ~LeafQuery() { } - void getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type& nextEntry, - bool& hasNext); - std::vector const& GetResults() const {return m_results;} -}; - -class SIDX_DLL LeafQueryResult -{ -private: - std::vector ids; - libsupermesh::SpatialIndex::Region* bounds; - libsupermesh::SpatialIndex::id_type m_id; - LeafQueryResult(); -public: - LeafQueryResult(libsupermesh::SpatialIndex::id_type id) : bounds(0), m_id(id){} - ~LeafQueryResult() {if (bounds!=0) delete bounds;} - - /// Copy constructor. - LeafQueryResult(LeafQueryResult const& other); - - /// Assignment operator. - LeafQueryResult& operator=(LeafQueryResult const& rhs); - - std::vector const& GetIDs() const; - void SetIDs(std::vector& v); - const libsupermesh::SpatialIndex::Region* GetBounds() const; - void SetBounds(const libsupermesh::SpatialIndex::Region* b); - libsupermesh::SpatialIndex::id_type getIdentifier() const {return m_id;} - void setIdentifier(uint32_t v) {m_id = v;} -}; diff --git a/spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h b/spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h deleted file mode 100644 index f654cd1..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/ObjVisitor.h +++ /dev/null @@ -1,56 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement the object visitor. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "sidx_export.h" - -class SIDX_DLL ObjVisitor : public libsupermesh::SpatialIndex::IVisitor -{ -private: - std::vector m_vector; - uint64_t nResults; - -public: - - ObjVisitor(); - ~ObjVisitor(); - - uint64_t GetResultCount() const { return nResults; } - std::vector& GetResults() { return m_vector; } - - void visitNode(const libsupermesh::SpatialIndex::INode& n); - void visitData(const libsupermesh::SpatialIndex::IData& d); - void visitData(std::vector& v); -}; - diff --git a/spatialindex-1.8.5/include/spatialindex/capi/Utility.h b/spatialindex-1.8.5/include/spatialindex/capi/Utility.h deleted file mode 100644 index 1388d59..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/Utility.h +++ /dev/null @@ -1,43 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include "ObjVisitor.h" -#include "IdVisitor.h" -#include "sidx_export.h" - -#pragma once - -SIDX_DLL libsupermesh::Tools::PropertySet* GetDefaults(); - -SIDX_DLL void Page_ResultSet_Ids(IdVisitor& visitor, int64_t** ids, int64_t nStart, int64_t nResultLimit, uint64_t* nResults); -SIDX_DLL void Page_ResultSet_Obj(ObjVisitor& visitor, IndexItemH** items, int64_t nStart, int64_t nResultLimit, uint64_t* nResults); diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h deleted file mode 100644 index a912a9e..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_api.h +++ /dev/null @@ -1,366 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C API. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#ifndef SIDX_API_H_INCLUDED -#define SIDX_API_H_INCLUDED - -#define SIDX_C_API 1 - -#include "sidx_config.h" - -IDX_C_START - -SIDX_DLL IndexH Index_Create(IndexPropertyH properties); - -SIDX_DLL IndexH Index_CreateWithStream( IndexPropertyH properties, - int (*readNext)(int64_t *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, size_t *nDataLength) - ); - -SIDX_DLL void Index_Destroy(IndexH index); -SIDX_DLL IndexPropertyH Index_GetProperties(IndexH index); - -SIDX_DLL RTError Index_DeleteData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension); - -SIDX_C_DLL RTError Index_DeleteTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension - ); - -SIDX_C_DLL RTError Index_DeleteMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension - ); - -SIDX_DLL RTError Index_InsertData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension, - const uint8_t* pData, - size_t nDataLength); - -SIDX_C_DLL RTError Index_InsertTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - size_t nDataLength); - -SIDX_C_DLL RTError Index_InsertMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - size_t nDataLength); - -SIDX_DLL uint32_t Index_IsValid(IndexH index); - -SIDX_C_DLL RTError Index_TPIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_DLL RTError Index_Intersects_obj( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_DLL RTError Index_Intersects_id( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults); - -SIDX_DLL RTError Index_Intersects_count( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_DLL RTError Index_NearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_TPNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults); - -SIDX_DLL RTError Index_NearestNeighbors_id( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** items, - uint64_t* nResults); - -SIDX_DLL RTError Index_GetBounds( IndexH index, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension); - - -SIDX_C_DLL RTError Index_GetLeaves( IndexH index, - uint32_t* nLeafNodes, - uint32_t** nLeafSizes, - int64_t** nLeafIDs, - int64_t*** nLeafChildIDs, - double*** pppdMin, - double*** pppdMax, - uint32_t* nDimension); - -SIDX_DLL RTError Index_SetResultSetOffset(IndexH index, int64_t value); -SIDX_DLL int64_t Index_GetResultSetOffset(IndexH index); - -SIDX_DLL RTError Index_SetResultSetLimit(IndexH index, int64_t value); -SIDX_DLL int64_t Index_GetResultSetLimit(IndexH index); - -SIDX_DLL void Index_DestroyObjResults(IndexItemH* results, uint32_t nResults); -SIDX_DLL void Index_ClearBuffer(IndexH index); -SIDX_DLL void Index_Free(void* object); -SIDX_DLL void Index_Flush(IndexH index); - -SIDX_DLL void IndexItem_Destroy(IndexItemH item); -SIDX_DLL int64_t IndexItem_GetID(IndexItemH item); - -SIDX_DLL RTError IndexItem_GetData(IndexItemH item, uint8_t** data, uint64_t* length); - -SIDX_DLL RTError IndexItem_GetBounds( IndexItemH item, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension); - -SIDX_DLL IndexPropertyH IndexProperty_Create(); -SIDX_DLL void IndexProperty_Destroy(IndexPropertyH hProp); - -SIDX_DLL RTError IndexProperty_SetIndexType(IndexPropertyH iprop, RTIndexType value); -SIDX_DLL RTIndexType IndexProperty_GetIndexType(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetDimension(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetDimension(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexVariant(IndexPropertyH iprop, RTIndexVariant value); -SIDX_DLL RTIndexVariant IndexProperty_GetIndexVariant(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexStorage(IndexPropertyH iprop, RTStorageType value); -SIDX_DLL RTStorageType IndexProperty_GetIndexStorage(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetPagesize(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetPagesize(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetIndexCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetLeafCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetLeafCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetLeafPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetLeafPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetIndexPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetRegionPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetRegionPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetPointPoolCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetPointPoolCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetBufferingCapacity(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetBufferingCapacity(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetEnsureTightMBRs(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetEnsureTightMBRs(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetOverwrite(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetOverwrite(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetNearMinimumOverlapFactor(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetNearMinimumOverlapFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetWriteThrough(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetWriteThrough(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFillFactor(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetFillFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetSplitDistributionFactor(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetSplitDistributionFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetTPRHorizon(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetTPRHorizon(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetReinsertFactor(IndexPropertyH iprop, double value); -SIDX_DLL double IndexProperty_GetReinsertFactor(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFileName(IndexPropertyH iprop, const char* value); -SIDX_DLL char* IndexProperty_GetFileName(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFileNameExtensionDat(IndexPropertyH iprop, const char* value); -SIDX_DLL char* IndexProperty_GetFileNameExtensionDat(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetFileNameExtensionIdx(IndexPropertyH iprop, const char* value); -SIDX_DLL char* IndexProperty_GetFileNameExtensionIdx(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetCustomStorageCallbacksSize(IndexPropertyH iprop, uint32_t value); -SIDX_DLL uint32_t IndexProperty_GetCustomStorageCallbacksSize(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetCustomStorageCallbacks(IndexPropertyH iprop, const void* value); -SIDX_DLL void* IndexProperty_GetCustomStorageCallbacks(IndexPropertyH iprop); - -SIDX_DLL RTError IndexProperty_SetIndexID(IndexPropertyH iprop, int64_t value); -SIDX_DLL int64_t IndexProperty_GetIndexID(IndexPropertyH iprop); - -SIDX_C_DLL void* SIDX_NewBuffer(size_t bytes); -SIDX_C_DLL void SIDX_DeleteBuffer(void* buffer); - -SIDX_DLL RTError IndexProperty_SetResultSetLimit(IndexPropertyH iprop, uint64_t value); -SIDX_DLL uint64_t IndexProperty_GetResultSetLimit(IndexPropertyH iprop); - -SIDX_C_DLL char* SIDX_Version(); - -SIDX_C_DLL char* Error_GetLastErrorMsg(void); - -IDX_C_END - -#endif diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h deleted file mode 100644 index e082ab1..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_config.h +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C API configuration - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#ifndef SIDX_CONFIG_H_INCLUDED -#define SIDX_CONFIG_H_INCLUDED - - - -#ifdef _MSC_VER - -#if _MSC_VER <= 1500 - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; -#endif - - #include - #define STRDUP _strdup - #include - #include - -#else - - #include - #define SIDX_THREAD __thread - #include - #define STRDUP strdup -#endif - -#include - -#include "sidx_export.h" - -class Item; -class Index; - -typedef enum -{ - RT_None = 0, - RT_Debug = 1, - RT_Warning = 2, - RT_Failure = 3, - RT_Fatal = 4 -} RTError; - -typedef enum -{ - RT_RTree = 0, - RT_MVRTree = 1, - RT_TPRTree = 2, - RT_InvalidIndexType = -99 -} RTIndexType; - -typedef enum -{ - RT_Memory = 0, - RT_Disk = 1, - RT_Custom = 2, - RT_InvalidStorageType = -99 -} RTStorageType; - -typedef enum -{ - RT_Linear = 0, - RT_Quadratic = 1, - RT_Star = 2, - RT_InvalidIndexVariant = -99 -} RTIndexVariant; - - -#ifdef __cplusplus -# define IDX_C_START extern "C" { -# define IDX_C_END } -#else -# define IDX_C_START -# define IDX_C_END -#endif - -typedef Index *IndexH; -typedef libsupermesh::SpatialIndex::IData *IndexItemH; -typedef libsupermesh::Tools::PropertySet *IndexPropertyH; - - - -#endif diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h deleted file mode 100644 index b6c84f1..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_export.h +++ /dev/null @@ -1,44 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2014, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#pragma once - -#ifndef SIDX_C_DLL -#if defined(_MSC_VER) -# define SIDX_C_DLL __declspec(dllexport) -# define SIDX_DLL __declspec(dllexport) -#else -# if defined(USE_GCC_VISIBILITY_FLAG) -# define SIDX_C_DLL __attribute__ ((visibility("default"))) -# define SIDX_DLL __attribute__ ((visibility("default"))) -# else -# define SIDX_C_DLL -# define SIDX_DLL -# endif -#endif -#endif diff --git a/spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h b/spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h deleted file mode 100644 index a52c565..0000000 --- a/spatialindex-1.8.5/include/spatialindex/capi/sidx_impl.h +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include -#include -#include -#include - -#include "sidx_config.h" -#include "Utility.h" -#include "ObjVisitor.h" -#include "IdVisitor.h" -#include "CountVisitor.h" -#include "BoundsQuery.h" -#include "LeafQuery.h" -#include "Error.h" -#include "DataStream.h" -#include "Index.h" -#include "CustomStorage.h" diff --git a/spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h b/spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h deleted file mode 100644 index 71726b2..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/PointerPool.h +++ /dev/null @@ -1,128 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "PoolPointer.h" - -namespace libsupermesh { namespace Tools -{ - template class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - X* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - X* p = 0; - - if (! m_pool.empty()) - { - p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - m_hits++; - #endif - } - else - { - p = new X(); - #ifndef NDEBUG - m_pointerCount++; - m_misses++; - #endif - } - - return PoolPointer(p, this); - } - - void release(X* p) - { - if (m_pool.size() < m_capacity) - { - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - private: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h b/spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h deleted file mode 100644 index 20e693e..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/PoolPointer.h +++ /dev/null @@ -1,107 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "PointerPool.h" - -namespace libsupermesh { namespace Tools -{ - template class PointerPool; - - template class PoolPointer - { - public: - explicit PoolPointer(X* p = 0) : m_pointer(p), m_pPool(0) { m_prev = m_next = this; } - explicit PoolPointer(X* p, PointerPool* pPool) throw() : m_pointer(p), m_pPool(pPool) { m_prev = m_next = this; } - ~PoolPointer() { release(); } - PoolPointer(const PoolPointer& p) throw() { acquire(p); } - PoolPointer& operator=(const PoolPointer& p) - { - if (this != &p) - { - release(); - acquire(p); - } - return *this; - } - - X& operator*() const throw() { return *m_pointer; } - X* operator->() const throw() { return m_pointer; } - X* get() const throw() { return m_pointer; } - bool unique() const throw() { return m_prev ? m_prev == this : true; } - void relinquish() throw() - { - m_pPool = 0; - m_pointer = 0; - release(); - } - - private: - X* m_pointer; - mutable const PoolPointer* m_prev; - mutable const PoolPointer* m_next; - PointerPool* m_pPool; - - void acquire(const PoolPointer& p) throw() - { - m_pPool = p.m_pPool; - m_pointer = p.m_pointer; - m_next = p.m_next; - m_next->m_prev = this; - m_prev = &p; - #ifndef mutable - p.m_next = this; - #else - (const_cast*>(&p))->m_next = this; - #endif - } - - void release() - { - if (unique()) - { - if (m_pPool != 0) m_pPool->release(m_pointer); - else delete m_pointer; - } - else - { - m_prev->m_next = m_next; - m_next->m_prev = m_prev; - m_prev = m_next = 0; - } - m_pointer = 0; - m_pPool = 0; - } - }; -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h b/spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h deleted file mode 100644 index 3e37d89..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/SmartPointer.h +++ /dev/null @@ -1,89 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace Tools -{ - template class SmartPointer - { - public: - explicit SmartPointer(X* p = 0) throw() : m_pointer(p) { m_prev = m_next = this; } - ~SmartPointer() { release(); } - SmartPointer(const SmartPointer& p) throw() { acquire(p); } - SmartPointer& operator=(const SmartPointer& p) - { - if (this != &p) - { - release(); - acquire(p); - } - return *this; - } - - X& operator*() const throw() { return *m_pointer; } - X* operator->() const throw() { return m_pointer; } - X* get() const throw() { return m_pointer; } - bool unique() const throw() { return m_prev ? m_prev == this : true; } - - private: - X* m_pointer; - mutable const SmartPointer* m_prev; - mutable const SmartPointer* m_next; - - void acquire(const SmartPointer& p) throw() - { - m_pointer = p.m_pointer; - m_next = p.m_next; - m_next->m_prev = this; - m_prev = &p; - #ifndef mutable - p.m_next = this; - #else - (const_cast*>(&p))->m_next = this; - #endif - } - - void release() - { - if (unique()) delete m_pointer; - else - { - m_prev->m_next = m_next; - m_next->m_prev = m_prev; - m_prev = m_next = 0; - } - m_pointer = 0; - } - }; -} } - diff --git a/spatialindex-1.8.5/include/spatialindex/tools/Tools.h b/spatialindex-1.8.5/include/spatialindex/tools/Tools.h deleted file mode 100644 index 98a4917..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/Tools.h +++ /dev/null @@ -1,512 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - - -#if (defined _WIN32 || defined _WIN64 || defined WIN32 || defined WIN64) && !defined __GNUC__ - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; - -// Nuke this annoying warning. See http://www.unknownroad.com/rtfm/VisualStudio/warningC4251.html -#pragma warning( disable: 4251 ) - -#else - #include -#endif - -#if (defined _WIN32 || defined _WIN64 || defined WIN32 || defined WIN64) && !defined __GNUC__ - #ifdef SPATIALINDEX_CREATE_DLL - #define SIDX_DLL __declspec(dllexport) - #else - #define SIDX_DLL __declspec(dllimport) - #endif -#else - #define SIDX_DLL -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if HAVE_PTHREAD_H - #include -#endif - -#include "SmartPointer.h" -#include "PointerPool.h" -#include "PoolPointer.h" - -typedef uint8_t byte; - -namespace libsupermesh { namespace Tools -{ - SIDX_DLL enum IntervalType - { - IT_RIGHTOPEN = 0x0, - IT_LEFTOPEN, - IT_OPEN, - IT_CLOSED - }; - - SIDX_DLL enum VariantType - { - VT_LONG = 0x0, - VT_BYTE, - VT_SHORT, - VT_FLOAT, - VT_DOUBLE, - VT_CHAR, - VT_USHORT, - VT_ULONG, - VT_INT, - VT_UINT, - VT_BOOL, - VT_PCHAR, - VT_PVOID, - VT_EMPTY, - VT_LONGLONG, - VT_ULONGLONG, - VT_PWCHAR - }; - - SIDX_DLL enum FileMode - { - APPEND = 0x0, - CREATE - }; - - // - // Exceptions - // - class SIDX_DLL Exception - { - public: - virtual std::string what() = 0; - virtual ~Exception() {} - }; - - class SIDX_DLL IndexOutOfBoundsException : public Exception - { - public: - IndexOutOfBoundsException(size_t i); - virtual ~IndexOutOfBoundsException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // IndexOutOfBoundsException - - class SIDX_DLL IllegalArgumentException : public Exception - { - public: - IllegalArgumentException(std::string s); - virtual ~IllegalArgumentException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // IllegalArgumentException - - class SIDX_DLL IllegalStateException : public Exception - { - public: - IllegalStateException(std::string s); - virtual ~IllegalStateException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // IllegalStateException - - class SIDX_DLL EndOfStreamException : public Exception - { - public: - EndOfStreamException(std::string s); - virtual ~EndOfStreamException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // EndOfStreamException - - class SIDX_DLL ResourceLockedException : public Exception - { - public: - ResourceLockedException(std::string s); - virtual ~ResourceLockedException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // ResourceLockedException - - class SIDX_DLL NotSupportedException : public Exception - { - public: - NotSupportedException(std::string s); - virtual ~NotSupportedException() {} - virtual std::string what(); - - private: - std::string m_error; - }; // NotSupportedException - - // - // Interfaces - // - class SIDX_DLL IInterval - { - public: - virtual ~IInterval() {} - - virtual double getLowerBound() const = 0; - virtual double getUpperBound() const = 0; - virtual void setBounds(double, double) = 0; - virtual bool intersectsInterval(const IInterval&) const = 0; - virtual bool intersectsInterval(IntervalType type, const double start, const double end) const = 0; - virtual bool containsInterval(const IInterval&) const = 0; - virtual IntervalType getIntervalType() const = 0; - }; // IInterval - - class SIDX_DLL IObject - { - public: - virtual ~IObject() {} - - virtual IObject* clone() = 0; - // return a new object that is an exact copy of this one. - // IMPORTANT: do not return the this pointer! - }; // IObject - - class SIDX_DLL ISerializable - { - public: - virtual ~ISerializable() {} - - virtual uint32_t getByteArraySize() = 0; - // returns the size of the required byte array. - virtual void loadFromByteArray(const byte* data) = 0; - // load this object using the byte array. - virtual void storeToByteArray(byte** data, uint32_t& length) = 0; - // store this object in the byte array. - }; - - class SIDX_DLL IComparable - { - public: - virtual ~IComparable() {} - - virtual bool operator<(const IComparable& o) const = 0; - virtual bool operator>(const IComparable& o) const = 0; - virtual bool operator==(const IComparable& o) const = 0; - }; //IComparable - - class SIDX_DLL IObjectComparator - { - public: - virtual ~IObjectComparator() {} - - virtual int compare(IObject* o1, IObject* o2) = 0; - }; // IObjectComparator - - class SIDX_DLL IObjectStream - { - public: - virtual ~IObjectStream() {} - - virtual IObject* getNext() = 0; - // returns a pointer to the next entry in the - // stream or 0 at the end of the stream. - - virtual bool hasNext() = 0; - // returns true if there are more items in the stream. - - virtual uint32_t size() = 0; - // returns the total number of entries available in the stream. - - virtual void rewind() = 0; - // sets the stream pointer to the first entry, if possible. - }; // IObjectStream - - // - // Classes & Functions - // - - class SIDX_DLL Variant - { - public: - Variant(); - - VariantType m_varType; - - union - { - int16_t iVal; // VT_SHORT - int32_t lVal; // VT_LONG - int64_t llVal; // VT_LONGLONG - byte bVal; // VT_BYTE - float fltVal; // VT_FLOAT - double dblVal; // VT_DOUBLE - char cVal; // VT_CHAR - uint16_t uiVal; // VT_USHORT - uint32_t ulVal; // VT_ULONG - uint64_t ullVal; // VT_ULONGLONG - bool blVal; // VT_BOOL - char* pcVal; // VT_PCHAR - void* pvVal; // VT_PVOID - wchar_t* pwcVal; - } m_val; - }; // Variant - - class SIDX_DLL PropertySet; - SIDX_DLL std::ostream& operator<<(std::ostream& os, const libsupermesh::Tools::PropertySet& p); - - class SIDX_DLL PropertySet : public ISerializable - { - public: - PropertySet(); - PropertySet(const byte* data); - virtual ~PropertySet(); - - Variant getProperty(std::string property) const; - void setProperty(std::string property, Variant const& v); - void removeProperty(std::string property); - - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& length); - - private: - std::map m_propertySet; -// #ifdef HAVE_PTHREAD_H -// pthread_rwlock_t m_rwLock; -// #else -// bool m_rwLock; -// #endif - friend SIDX_DLL std::ostream& libsupermesh::Tools::operator<<(std::ostream& os, const libsupermesh::Tools::PropertySet& p); - }; // PropertySet - - // does not support degenerate intervals. - class SIDX_DLL Interval : public IInterval - { - public: - Interval(); - Interval(IntervalType, double, double); - Interval(double, double); - Interval(const Interval&); - virtual ~Interval() {} - virtual IInterval& operator=(const IInterval&); - - virtual bool operator==(const Interval&) const; - virtual bool operator!=(const Interval&) const; - virtual double getLowerBound() const; - virtual double getUpperBound() const; - virtual void setBounds(double, double); - virtual bool intersectsInterval(const IInterval&) const; - virtual bool intersectsInterval(IntervalType type, const double start, const double end) const; - virtual bool containsInterval(const IInterval&) const; - virtual IntervalType getIntervalType() const; - - IntervalType m_type; - double m_low; - double m_high; - }; // Interval - - SIDX_DLL std::ostream& operator<<(std::ostream& os, const libsupermesh::Tools::Interval& iv); - - class SIDX_DLL Random - { - public: - Random(); - Random(uint32_t seed, uint16_t xsubi0); - virtual ~Random(); - - int32_t nextUniformLong(); - // returns a uniformly distributed long. - uint32_t nextUniformUnsignedLong(); - // returns a uniformly distributed unsigned long. - int32_t nextUniformLong(int32_t low, int32_t high); - // returns a uniformly distributed long in the range [low, high). - uint32_t nextUniformUnsignedLong(uint32_t low, uint32_t high); - // returns a uniformly distributed unsigned long in the range [low, high). - int64_t nextUniformLongLong(); - // returns a uniformly distributed long long. - uint64_t nextUniformUnsignedLongLong(); - // returns a uniformly distributed unsigned long long. - int64_t nextUniformLongLong(int64_t low, int64_t high); - // returns a uniformly distributed unsigned long long in the range [low, high). - uint64_t nextUniformUnsignedLongLong(uint64_t low, uint64_t high); - // returns a uniformly distributed unsigned long long in the range [low, high). - int16_t nextUniformShort(); - // returns a uniformly distributed short. - uint16_t nextUniformUnsignedShort(); - // returns a uniformly distributed unsigned short. - double nextUniformDouble(); - // returns a uniformly distributed double in the range [0, 1). - double nextUniformDouble(double low, double high); - // returns a uniformly distributed double in the range [low, high). - - bool flipCoin(); - - private: - void initDrand(uint32_t seed, uint16_t xsubi0); - - uint16_t* m_pBuffer; - }; // Random - - #if HAVE_PTHREAD_H - class SIDX_DLL LockGuard - { - public: - LockGuard(pthread_mutex_t* pLock); - ~LockGuard(); - - private: - pthread_mutex_t* m_pLock; - }; // LockGuard - #endif - - class SIDX_DLL BufferedFile - { - public: - BufferedFile(uint32_t u32BufferSize = 16384); - virtual ~BufferedFile(); - - virtual void close(); - virtual bool eof(); - virtual void rewind() = 0; - virtual void seek(std::fstream::off_type offset) = 0; - - protected: - std::fstream m_file; - char* m_buffer; - uint32_t m_u32BufferSize; - bool m_bEOF; - }; - - class SIDX_DLL BufferedFileReader : public BufferedFile - { - public: - BufferedFileReader(); - BufferedFileReader(const std::string& sFileName, uint32_t u32BufferSize = 32768); - virtual ~BufferedFileReader(); - - virtual void open(const std::string& sFileName); - virtual void rewind(); - virtual void seek(std::fstream::off_type offset); - - virtual uint8_t readUInt8(); - virtual uint16_t readUInt16(); - virtual uint32_t readUInt32(); - virtual uint64_t readUInt64(); - virtual float readFloat(); - virtual double readDouble(); - virtual bool readBoolean(); - virtual std::string readString(); - virtual void readBytes(uint32_t u32Len, byte** pData); - }; - - class SIDX_DLL BufferedFileWriter : public BufferedFile - { - public: - BufferedFileWriter(); - BufferedFileWriter(const std::string& sFileName, FileMode mode = CREATE, uint32_t u32BufferSize = 32768); - virtual ~BufferedFileWriter(); - - virtual void open(const std::string& sFileName, FileMode mode = CREATE); - virtual void rewind(); - virtual void seek(std::fstream::off_type offset); - - virtual void write(uint8_t i); - virtual void write(uint16_t i); - virtual void write(uint32_t i); - virtual void write(uint64_t i); - virtual void write(float i); - virtual void write(double i); - virtual void write(bool b); - virtual void write(const std::string& s); - virtual void write(uint32_t u32Len, byte* pData); - }; - - class SIDX_DLL TemporaryFile - { - public: - TemporaryFile(); - virtual ~TemporaryFile(); - - void rewindForReading(); - void rewindForWriting(); - bool eof(); - std::string getFileName() const; - - uint8_t readUInt8(); - uint16_t readUInt16(); - uint32_t readUInt32(); - uint64_t readUInt64(); - float readFloat(); - double readDouble(); - std::string readString(); - void readBytes(uint32_t u32Len, byte** pData); - - void write(uint8_t i); - void write(uint16_t i); - void write(uint32_t i); - void write(uint64_t i); - void write(float i); - void write(double i); - void write(const std::string& s); - void write(uint32_t u32Len, byte* pData); - - private: - std::string m_sFile; - BufferedFile* m_pFile; - }; -} } diff --git a/spatialindex-1.8.5/include/spatialindex/tools/rand48.h b/spatialindex-1.8.5/include/spatialindex/tools/rand48.h deleted file mode 100644 index f9cf2bb..0000000 --- a/spatialindex-1.8.5/include/spatialindex/tools/rand48.h +++ /dev/null @@ -1,85 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2011, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#pragma once - -/* Only define this stuff if we're not ANDROID */ -#ifndef ANDROID - -#ifndef HAVE_SRAND48 - -#if HAVE_FEATURES_H -#include -#ifndef __THROW -/* copy-pasted from sys/cdefs.h */ -/* GCC can always grok prototypes. For C++ programs we add throw() -to help it optimize the function calls. But this works only with -gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions -as non-throwing using a function attribute since programs can use -the -fexceptions options for C code as well. */ -# if !defined __cplusplus && __GNUC_PREREQ (3, 3) -# define __THROW __attribute__ ((__nothrow__)) -# define __NTH(fct) __attribute__ ((__nothrow__)) fct -# else -# if defined __cplusplus && __GNUC_PREREQ (2,8) -# define __THROW throw () -# define __NTH(fct) fct throw () -# else -# define __THROW -# define __NTH(fct) fct -# endif -# endif - -#endif -#else -# define __THROW -# define __NTH(fct) fct -#endif - -extern void srand48(long int seed) __THROW; - -extern unsigned short *seed48(unsigned short xseed[3]) __THROW; - -extern long nrand48(unsigned short xseed[3]) __THROW; - -extern long mrand48(void) __THROW; - -extern long lrand48(void) __THROW; - -extern void lcong48(unsigned short p[7]) __THROW; - -extern long jrand48(unsigned short xseed[3]) __THROW; - -extern double erand48(unsigned short xseed[3]) __THROW; - -extern double drand48(void) __THROW; - -#endif - -/* Only define this stuff if we're not ANDROID */ -#endif \ No newline at end of file diff --git a/spatialindex-1.8.5/install-sh b/spatialindex-1.8.5/install-sh deleted file mode 100755 index dd97db7..0000000 --- a/spatialindex-1.8.5/install-sh +++ /dev/null @@ -1,322 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2004-09-10.20 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= -dstarg= -no_target_directory= - -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -c) shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit 0;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; - - --version) echo "$0 $scriptversion"; exit 0;; - - *) # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - test -n "$dir_arg$dstarg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done - break;; - esac -done - -if test -z "$1"; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src ;; - esac - - if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi - else - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dstarg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dstarg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 - exit 1 - fi - dst=$dst/`basename "$src"` - fi - fi - - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - - # Make sure that the destination directory exists. - - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit - fi - pathcomp=$pathcomp/ - done - fi - - if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - - else - dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Copy the file name to the temp name. - $doit $cpprog "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - } - } - fi || { (exit 1); exit; } -done - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/ltmain.sh b/spatialindex-1.8.5/ltmain.sh deleted file mode 100644 index a356aca..0000000 --- a/spatialindex-1.8.5/ltmain.sh +++ /dev/null @@ -1,9661 +0,0 @@ - -# 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, 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. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --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 -# -# 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.4.2 Debian-2.4.2-1.7ubuntu1 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" -TIMESTAMP="" -package_revision=1.3337 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -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. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - 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"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -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: -# 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 () -{ - # 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 -} - -# 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 - - # 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: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# 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='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. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# 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: ${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: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - 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 () -{ - $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/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - 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'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# 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=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/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. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# 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 - - -# 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 - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --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" - ;; - --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: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # 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*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # 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 - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - 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 -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# 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. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - 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 "* | " $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. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - 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 "* | " $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. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </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 () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - 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 - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -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. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -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)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -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) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -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. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# 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... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - 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" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - 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. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - 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 "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 "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - 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= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # 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 - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - 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" && \ - func_fatal_help "you must specify an install program" - - 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" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - 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" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - 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 "$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 - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - 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 - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # 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 $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -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. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - 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 - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - 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 || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - 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 "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # 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 (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 /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_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 -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - 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 - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - 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 [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=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# 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 - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - 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 () -{ -" - 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 \"\$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'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - 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 - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - 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 "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - 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 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#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) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -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_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_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - 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); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - 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); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - 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) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -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 *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - 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) -{ - 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 */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_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 () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - 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]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # 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 "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # 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|--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|-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 "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # 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 "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - 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" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # 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*|@*|-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" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - 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. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - 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" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) - libs="$deplibs %DEPLIBS%" - test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" - ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.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 - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-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 - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - 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 "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - 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" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - 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 - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; 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="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - 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 - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - 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" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - 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 - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - 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" - 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 - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - 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 - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - 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 - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - 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 "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - # 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|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - 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= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - 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 "$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 - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) 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* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </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 | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$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 - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - 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 " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - 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 "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - 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 - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # 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 "$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 - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval "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 - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - 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" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # 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. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - 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 "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # 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 - 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 - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - 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\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - 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 - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - 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" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - 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..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - 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" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - 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 - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - 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 "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # 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 - 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 - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - 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 - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - 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 "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - 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 "$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 $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - 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 " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - 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. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - 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 - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - 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}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$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 - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$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" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) 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..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - 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" - 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" - ;; - -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" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - 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) - # 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 -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - 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 - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -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 \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/spatialindex-1.8.5/m4/libtool.m4 b/spatialindex-1.8.5/m4/libtool.m4 deleted file mode 100644 index d7c043f..0000000 --- a/spatialindex-1.8.5/m4/libtool.m4 +++ /dev/null @@ -1,7997 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 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 -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -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 -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -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]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -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 -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_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 -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_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' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# 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 "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$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)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -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 \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_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 -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -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) 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." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# 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. -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 - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -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)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _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], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(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)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -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 -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&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 - fi - 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 - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [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' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - 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 - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - 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}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _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 -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], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# 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], -[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 - # 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*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -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" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_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], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$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 - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*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*) - 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" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -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], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_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 - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&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 "$_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 - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - 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>&AS_MESSAGE_LOG_FD - $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 - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -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); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&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 "$_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 - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -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], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; 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 - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -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}' - ;; - 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 - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - 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 - - # 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;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_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], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -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], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -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 - -_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"]) -_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 - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -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 "$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" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_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:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&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:$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" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -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' - -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* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - 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, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -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 -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -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'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # 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};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if 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 - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 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 - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_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_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# 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], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_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 - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # 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. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - 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++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - 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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *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)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - 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' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_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 - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _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 - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - 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,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - 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,' - ;; - *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' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _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_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. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -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. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -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 -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -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") || (\$ 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*) - 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 - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - 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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - 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 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - 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(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/;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' - # 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 $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - 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 - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _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 | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - 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' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _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; 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 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$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~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - 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)='${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 $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _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 - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _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 - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _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' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _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 - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # 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") || (\$ 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 - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _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 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' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _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' - 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' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - 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*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - 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 - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _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 - ;; - - hpux9*) - if test "$GCC" = yes; then - _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 - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - 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_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - 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 $pic_flag ${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}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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 - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _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. - # 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" && 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' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _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(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" && 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" && 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' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - 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} $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" && 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 "-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' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _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 $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $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 -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _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' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _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' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_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 - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_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_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_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 -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_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_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## 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_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _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], -[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 -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_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_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_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 - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _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_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_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' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _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 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' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _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' - 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' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - 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) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - 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)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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 $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 - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _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 $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 $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _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' - ;; - irix5* | irix6*) - 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" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_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 $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 - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *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 | 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 | 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 | 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 | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _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' - ;; - esac - - _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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$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~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _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; 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='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _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=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - 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" && 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" && 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 "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`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" && 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 $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 - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - 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' - _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)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_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 $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 $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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -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 -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - 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(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - 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' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -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 -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# 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)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_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 - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _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. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - 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 - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _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_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)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_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_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_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 - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # 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_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - 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_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_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)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_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_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_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 - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # 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_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# 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=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ 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_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 -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_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= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -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], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_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 -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - 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 -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _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_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##*/}"]) - - _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}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _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"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _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"]) - - # 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 - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _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 - ;; - *-*-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 -]) -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/spatialindex-1.8.5/m4/ltoptions.m4 b/spatialindex-1.8.5/m4/ltoptions.m4 deleted file mode 100644 index 5d9acd8..0000000 --- a/spatialindex-1.8.5/m4/ltoptions.m4 +++ /dev/null @@ -1,384 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# 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 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])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# 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@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [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]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/spatialindex-1.8.5/m4/ltsugar.m4 b/spatialindex-1.8.5/m4/ltsugar.m4 deleted file mode 100644 index 9000a05..0000000 --- a/spatialindex-1.8.5/m4/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 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 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/spatialindex-1.8.5/m4/ltversion.m4 b/spatialindex-1.8.5/m4/ltversion.m4 deleted file mode 100644 index 07a8602..0000000 --- a/spatialindex-1.8.5/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 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. - -# @configure_input@ - -# serial 3337 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) - -AC_DEFUN([LTVERSION_VERSION], -[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/spatialindex-1.8.5/m4/lt~obsolete.m4 b/spatialindex-1.8.5/m4/lt~obsolete.m4 deleted file mode 100644 index c573da9..0000000 --- a/spatialindex-1.8.5/m4/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# 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 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# 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.) -# -# 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])]) diff --git a/spatialindex-1.8.5/missing b/spatialindex-1.8.5/missing deleted file mode 100644 index 64b5f90..0000000 --- a/spatialindex-1.8.5/missing +++ /dev/null @@ -1,353 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2004-09-07.08 - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 -# Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Send bug reports to ." - exit 0 - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit 0 - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). -case "$1" in - lex|yacc) - # Not GNU programs, they don't have --version. - ;; - - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/mkinstalldirs b/spatialindex-1.8.5/mkinstalldirs deleted file mode 100755 index 6fbe5e1..0000000 --- a/spatialindex-1.8.5/mkinstalldirs +++ /dev/null @@ -1,150 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2004-02-15.20 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit 0 - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj b/spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj deleted file mode 100755 index 42b100f..0000000 --- a/spatialindex-1.8.5/spatialindex-vc/spatialindex.vcproj +++ /dev/null @@ -1,960 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spatialindex-1.8.5/spatialindex.sln b/spatialindex-1.8.5/spatialindex.sln deleted file mode 100755 index c0f1d60..0000000 --- a/spatialindex-1.8.5/spatialindex.sln +++ /dev/null @@ -1,91 +0,0 @@ -ï»ż -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spatialindex-vc", "spatialindex-vc\spatialindex.vcproj", "{38FBBD59-8344-4D8E-B728-3D51763B6A70}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeBulkLoad", "regressiontest\rtree\RTreeBulkLoad.vcproj", "{7D9C8655-0155-4EE3-B04C-6D831E2982CE}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeGenerator", "regressiontest\rtree\RTreeGenerator.vcproj", "{03504DB7-ACF3-40CF-A8A7-310E80666DC0}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeLoad", "regressiontest\rtree\RTreeLoad.vcproj", "{551D683C-E5DC-4713-9D9F-F629D15BE5DA}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeQuery", "regressiontest\rtree\RTreeQuery.vcproj", "{1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTreeExhaustive", "regressiontest\rtree\RTreeExhaustive.vcproj", "{D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}" - ProjectSection(ProjectDependencies) = postProject - {38FBBD59-8344-4D8E-B728-3D51763B6A70} = {38FBBD59-8344-4D8E-B728-3D51763B6A70} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|Win32.ActiveCfg = Debug|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|Win32.Build.0 = Debug|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|x64.ActiveCfg = Debug|x64 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Debug|x64.Build.0 = Debug|x64 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|Win32.ActiveCfg = Release|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|Win32.Build.0 = Release|Win32 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|x64.ActiveCfg = Release|x64 - {38FBBD59-8344-4D8E-B728-3D51763B6A70}.Release|x64.Build.0 = Release|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|Win32.ActiveCfg = Debug|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|Win32.Build.0 = Debug|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|x64.ActiveCfg = Debug|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Debug|x64.Build.0 = Debug|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|Win32.ActiveCfg = Release|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|Win32.Build.0 = Release|Win32 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|x64.ActiveCfg = Release|x64 - {7D9C8655-0155-4EE3-B04C-6D831E2982CE}.Release|x64.Build.0 = Release|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|Win32.ActiveCfg = Debug|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|Win32.Build.0 = Debug|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|x64.ActiveCfg = Debug|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Debug|x64.Build.0 = Debug|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|Win32.ActiveCfg = Release|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|Win32.Build.0 = Release|Win32 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|x64.ActiveCfg = Release|x64 - {03504DB7-ACF3-40CF-A8A7-310E80666DC0}.Release|x64.Build.0 = Release|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|Win32.ActiveCfg = Debug|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|Win32.Build.0 = Debug|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|x64.ActiveCfg = Debug|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Debug|x64.Build.0 = Debug|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|Win32.ActiveCfg = Release|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|Win32.Build.0 = Release|Win32 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|x64.ActiveCfg = Release|x64 - {551D683C-E5DC-4713-9D9F-F629D15BE5DA}.Release|x64.Build.0 = Release|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|Win32.ActiveCfg = Debug|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|Win32.Build.0 = Debug|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|x64.ActiveCfg = Debug|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Debug|x64.Build.0 = Debug|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|Win32.ActiveCfg = Release|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|Win32.Build.0 = Release|Win32 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|x64.ActiveCfg = Release|x64 - {1FBCCD7B-2641-4B93-9CF0-44E1EE8D55B9}.Release|x64.Build.0 = Release|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|Win32.Build.0 = Debug|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|x64.ActiveCfg = Debug|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Debug|x64.Build.0 = Debug|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|Win32.ActiveCfg = Release|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|Win32.Build.0 = Release|Win32 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|x64.ActiveCfg = Release|x64 - {D2C6947B-5527-4D6A-88CB-842DDCCFB2FF}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/spatialindex-1.8.5/src/CMakeLists.txt b/spatialindex-1.8.5/src/CMakeLists.txt deleted file mode 100644 index 61e1691..0000000 --- a/spatialindex-1.8.5/src/CMakeLists.txt +++ /dev/null @@ -1,239 +0,0 @@ -############################################################################### -# -# src/CMakeLists.txt controls building of SIDX library -# -# Copyright (c) 2009 Mateusz Loskot -# -############################################################################### - -############################################################################### -# Source files specification -# -# Naming format: -# SIDX_CPP - all the .cpp files -# SIDX_HPP - all the .hpp files -# SIDX__CPP - all the .cpp files for the given subdir/namespace -# ... - -set(SIDX_HEADERS_DIR "${PROJECT_SOURCE_DIR}/include/spatialindex/") -set(SIDX_HEADERS_CAPI_DIR "${PROJECT_SOURCE_DIR}/include/spatialindex/capi") -set(SIDX_HPP "") -set(SIDX_CPP "") - -set(SIDX_SRC_DIR "${PROJECT_SOURCE_DIR}/src") -set(SIDX_CAPI_DIR "${PROJECT_SOURCE_DIR}/src/capi") - -# -# base -# -set(SIDX_BASE_HPP - "${SIDX_HEADERS_DIR}/LineSegment.h" - "${SIDX_HEADERS_DIR}/MovingPoint.h" - "${SIDX_HEADERS_DIR}/MVRTree.h" - "${SIDX_HEADERS_DIR}/Point.h" - "${SIDX_HEADERS_DIR}/Region.h" - "${SIDX_HEADERS_DIR}/RTree.h" - "${SIDX_HEADERS_DIR}/SpatialIndex.h" - "${SIDX_HEADERS_DIR}/TimePoint.h" - "${SIDX_HEADERS_DIR}/TimeRegion.h" - "${SIDX_HEADERS_DIR}/TPRTree.h" - "${SIDX_HEADERS_DIR}/Version.h" -) -list (APPEND SIDX_HPP ${SIDX_BASE_HPP} ) - -set(SIDX_CAPI_HPP - "${SIDX_HEADERS_CAPI_DIR}/BoundsQuery.h" - "${SIDX_HEADERS_CAPI_DIR}/CountVisitor.h" - "${SIDX_HEADERS_CAPI_DIR}/CustomStorage.h" - "${SIDX_HEADERS_CAPI_DIR}/DataStream.h" - "${SIDX_HEADERS_CAPI_DIR}/Error.h" - "${SIDX_HEADERS_CAPI_DIR}/IdVisitor.h" - "${SIDX_HEADERS_CAPI_DIR}/Index.h" - "${SIDX_HEADERS_CAPI_DIR}/LeafQuery.h" - "${SIDX_HEADERS_CAPI_DIR}/ObjVisitor.h" - "${SIDX_HEADERS_CAPI_DIR}/sidx_api.h" - "${SIDX_HEADERS_CAPI_DIR}/sidx_config.h" - "${SIDX_HEADERS_CAPI_DIR}/sidx_impl.h" - "${SIDX_HEADERS_CAPI_DIR}/Utility.h" -) -list (APPEND SIDX_HPP ${SIDX_CAPI_HPP} ) - -set(SIDX_CAPI_CPP - "${SIDX_CAPI_DIR}/BoundsQuery.cc" - "${SIDX_CAPI_DIR}/CountVisitor.cc" - "${SIDX_CAPI_DIR}/CustomStorage.cc" - "${SIDX_CAPI_DIR}/DataStream.cc" - "${SIDX_CAPI_DIR}/Error.cc" - "${SIDX_CAPI_DIR}/IdVisitor.cc" - "${SIDX_CAPI_DIR}/Index.cc" - "${SIDX_CAPI_DIR}/LeafQuery.cc" - "${SIDX_CAPI_DIR}/ObjVisitor.cc" - "${SIDX_CAPI_DIR}/sidx_api.cc" - "${SIDX_CAPI_DIR}/Utility.cc" -) - - -set(SIDX_SPATIALINDEX_CPP - "${SIDX_SRC_DIR}/spatialindex/LineSegment.cc" - "${SIDX_SRC_DIR}/spatialindex/MovingPoint.cc" - "${SIDX_SRC_DIR}/spatialindex/MovingRegion.cc" - "${SIDX_SRC_DIR}/spatialindex/Point.cc" - "${SIDX_SRC_DIR}/spatialindex/Region.cc" - "${SIDX_SRC_DIR}/spatialindex/SpatialIndexImpl.cc" - "${SIDX_SRC_DIR}/spatialindex/TimePoint.cc" - "${SIDX_SRC_DIR}/spatialindex/TimeRegion.cc" -) -list (APPEND SIDX_CPP ${SIDX_SPATIALINDEX_CPP} ) - -set(SIDX_MVRTREE_CPP - "${SIDX_SRC_DIR}/mvrtree/Index.cc" - "${SIDX_SRC_DIR}/mvrtree/Index.h" - "${SIDX_SRC_DIR}/mvrtree/Leaf.cc" - "${SIDX_SRC_DIR}/mvrtree/Leaf.h" - "${SIDX_SRC_DIR}/mvrtree/MVRTree.cc" - "${SIDX_SRC_DIR}/mvrtree/MVRTree.h" - "${SIDX_SRC_DIR}/mvrtree/Node.cc" - "${SIDX_SRC_DIR}/mvrtree/Node.h" - "${SIDX_SRC_DIR}/mvrtree/PointerPoolNode.h" - "${SIDX_SRC_DIR}/mvrtree/Statistics.cc" - "${SIDX_SRC_DIR}/mvrtree/Statistics.h" -) -list (APPEND SIDX_CPP ${SIDX_MVRTREE_CPP}) - -set(SIDX_RTREE_CPP - "${SIDX_SRC_DIR}/rtree/BulkLoader.cc" - "${SIDX_SRC_DIR}/rtree/BulkLoader.h" - "${SIDX_SRC_DIR}/rtree/Index.cc" - "${SIDX_SRC_DIR}/rtree/Index.h" - "${SIDX_SRC_DIR}/rtree/Leaf.cc" - "${SIDX_SRC_DIR}/rtree/Leaf.h" - "${SIDX_SRC_DIR}/rtree/Node.cc" - "${SIDX_SRC_DIR}/rtree/Node.h" - "${SIDX_SRC_DIR}/rtree/PointerPoolNode.h" - "${SIDX_SRC_DIR}/rtree/RTree.cc" - "${SIDX_SRC_DIR}/rtree/RTree.h" - "${SIDX_SRC_DIR}/rtree/Statistics.cc" - "${SIDX_SRC_DIR}/rtree/Statistics.h" -) -list (APPEND SIDX_CPP ${SIDX_RTREE_CPP}) - -set(SIDX_STORAGEMANAGER_CPP - "${SIDX_SRC_DIR}/storagemanager/Buffer.cc" - "${SIDX_SRC_DIR}/storagemanager/DiskStorageManager.cc" - "${SIDX_SRC_DIR}/storagemanager/DiskStorageManager.h" - "${SIDX_SRC_DIR}/storagemanager/MemoryStorageManager.cc" - "${SIDX_SRC_DIR}/storagemanager/MemoryStorageManager.h" - "${SIDX_SRC_DIR}/storagemanager/RandomEvictionsBuffer.cc" - "${SIDX_SRC_DIR}/storagemanager/RandomEvictionsBuffer.h" -) -list (APPEND SIDX_CPP ${SIDX_STORAGEMANAGER_CPP}) - -set(SIDX_RAND48 ) - -if (NOT HAVE_SRAND48) - set(SIDX_RAND48 "${SIDX_SRC_DIR}/tools/rand48.cc") -endif() - -set(SIDX_TOOLS_CPP - ${SIDX_RAND48} - "${SIDX_SRC_DIR}/tools/Tools.cc" -) -list (APPEND SIDX_CPP ${SIDX_TOOLS_CPP}) - -set(SIDX_TOOLS_CPP - "${SIDX_SRC_DIR}/tprtree/Index.cc" - "${SIDX_SRC_DIR}/tprtree/Index.h" - "${SIDX_SRC_DIR}/tprtree/Leaf.cc" - "${SIDX_SRC_DIR}/tprtree/Leaf.h" - "${SIDX_SRC_DIR}/tprtree/Node.cc" - "${SIDX_SRC_DIR}/tprtree/Node.h" - "${SIDX_SRC_DIR}/tprtree/PointerPoolNode.h" - "${SIDX_SRC_DIR}/tprtree/Statistics.cc" - "${SIDX_SRC_DIR}/tprtree/Statistics.h" - "${SIDX_SRC_DIR}/tprtree/TPRTree.cc" - "${SIDX_SRC_DIR}/tprtree/TPRTree.h" -) -list (APPEND SIDX_CPP ${SIDX_TOOLS_CPP} ) -# -# Group source files for IDE source explorers (e.g. Visual Studio) -# - -source_group("CMake Files" FILES CMakeLists.txt) - -source_group("Header Files" FILES ${SIDX_BASE_HPP}) -source_group("C API Header Files" FILES ${SIDX_CAPI_HPP}) - -source_group("Source Files" FILES ${SIDX_BASE_CPP}) -source_group("C API Source Files" FILES ${SIDX_CAPI_CPP}) - - -# Standard include directory of SIDX library -include_directories(../include) - -set (APPS_CPP_DEPENDENCIES "${SIDX_LIB_NAME}" CACHE INTERNAL "libraries to link") - -############################################################################### -# Targets settings - -set(SIDX_SOURCES - ${SIDX_HPP} - ${SIDX_CPP}) - -# NOTE: -# This hack is required to correctly link static into shared library. -# Such practice is not recommended as not portable, instead each library, -# static and shared should be built from sources separately. -#if(UNIX) -# add_definitions("-fPIC") -#endif() - -if(WIN32) - add_definitions("-DSIDX_DLL_EXPORT=1") -if (NOT WITH_STATIC_LASZIP) - add_definitions("-DSIDX_DLL_IMPORT=1") -endif() -endif() - -add_library(${SIDX_LIB_NAME} SHARED ${SIDX_SOURCES}) - -add_library(${SIDX_C_LIB_NAME} SHARED ${SIDX_CAPI_CPP}) - -target_link_libraries(${SIDX_C_LIB_NAME} - ${SIDX_LIB_NAME} -) - - - -set_target_properties(${SIDX_LIB_NAME} - PROPERTIES VERSION "${SIDX_LIB_VERSION}" - SOVERSION "${SIDX_LIB_SOVERSION}" ) - -set_target_properties(${SIDX_C_LIB_NAME} - PROPERTIES VERSION "${SIDX_LIB_VERSION}" - SOVERSION "${SIDX_LIB_SOVERSION}" ) - - - -if (APPLE) - set_target_properties( - ${SIDX_LIB_NAME} - PROPERTIES - INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" BUILD_WITH_INSTALL_RPATH OFF) - - set_target_properties( - ${SIDX_C_LIB_NAME} - PROPERTIES - INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" BUILD_WITH_INSTALL_RPATH OFF) -endif() - -############################################################################### -# Targets installation - -install(TARGETS ${SIDX_LIB_NAME} ${SIDX_C_LIB_NAME} - RUNTIME DESTINATION ${SIDX_BIN_DIR} - LIBRARY DESTINATION ${SIDX_LIB_DIR} - ARCHIVE DESTINATION ${SIDX_LIB_DIR}) - -install(DIRECTORY ${SIDX_HEADERS_DIR} - DESTINATION include/spatialindex - FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp") diff --git a/spatialindex-1.8.5/src/Makefile.am b/spatialindex-1.8.5/src/Makefile.am deleted file mode 100644 index 9891fa7..0000000 --- a/spatialindex-1.8.5/src/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = storagemanager spatialindex rtree mvrtree tprtree tools capi - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libspatialindex.pc \ No newline at end of file diff --git a/spatialindex-1.8.5/src/Makefile.in b/spatialindex-1.8.5/src/Makefile.in deleted file mode 100644 index 8484516..0000000 --- a/spatialindex-1.8.5/src/Makefile.in +++ /dev/null @@ -1,666 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(srcdir)/libspatialindex.pc.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = libspatialindex.pc -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-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__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = storagemanager spatialindex rtree mvrtree tprtree tools capi -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libspatialindex.pc -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -libspatialindex.pc: $(top_builddir)/config.status $(srcdir)/libspatialindex.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(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"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-pkgconfigDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/capi/BoundsQuery.cc b/spatialindex-1.8.5/src/capi/BoundsQuery.cc deleted file mode 100644 index 271d738..0000000 --- a/spatialindex-1.8.5/src/capi/BoundsQuery.cc +++ /dev/null @@ -1,51 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the bounds query. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -BoundsQuery::BoundsQuery() -{ - m_bounds = new libsupermesh::SpatialIndex::Region; -} - -void BoundsQuery::getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type&, - bool& hasNext) -{ - libsupermesh::SpatialIndex::IShape* ps; - entry.getShape(&ps); - ps->getMBR(*m_bounds); - delete ps; - - hasNext = false; -} diff --git a/spatialindex-1.8.5/src/capi/CountVisitor.cc b/spatialindex-1.8.5/src/capi/CountVisitor.cc deleted file mode 100644 index 4cbc28b..0000000 --- a/spatialindex-1.8.5/src/capi/CountVisitor.cc +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the count visitor. - * Author: Leonard NorrgĂ„rd, leonard.norrgard@refactor.fi - ****************************************************************************** - * Copyright (c) 2010, Leonard NorrgĂ„rd - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -CountVisitor::CountVisitor(): nResults(0) -{ -} - -CountVisitor::~CountVisitor() -{ - -} - -void CountVisitor::visitNode(const libsupermesh::SpatialIndex::INode& ) -{ - -} - -void CountVisitor::visitData(const libsupermesh::SpatialIndex::IData& ) -{ - nResults += 1; -} - -void CountVisitor::visitData(std::vector& ) -{ -} diff --git a/spatialindex-1.8.5/src/capi/CustomStorage.cc b/spatialindex-1.8.5/src/capi/CustomStorage.cc deleted file mode 100644 index 1805245..0000000 --- a/spatialindex-1.8.5/src/capi/CustomStorage.cc +++ /dev/null @@ -1,122 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object to implement the custom storage manager. - * Author: Matthias (nitro), nitro@dr-code.org - ****************************************************************************** - * Copyright (c) 2010, Matthias (nitro) - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - - -IStorageManager* libsupermesh::SpatialIndex::StorageManager::returnCustomStorageManager(libsupermesh::Tools::PropertySet& ps) -{ - IStorageManager* sm = new CustomStorageManager(ps); - return sm; -} - -CustomStorageManager::CustomStorageManager(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - var = ps.getProperty("CustomStorageCallbacks"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PVOID) - throw libsupermesh::Tools::IllegalArgumentException("CustomStorageManager: Property CustomStorageCallbacks must be libsupermesh::Tools::VT_PVOID"); - - if (!var.m_val.pvVal) - throw libsupermesh::Tools::IllegalArgumentException("CustomStorageManager: Property CustomStorageCallbacks must not be 0."); - - // we already checked for validity in IndexProperty_SetCustomStorageCallbacks - CustomStorageManagerCallbacks* callbackArray = static_cast(var.m_val.pvVal); - callbacks = *callbackArray; - } - - int errorCode( NoError ); - if ( callbacks.createCallback ) callbacks.createCallback( callbacks.context, &errorCode ); - processErrorCode( errorCode, NewPage ); -} - -CustomStorageManager::~CustomStorageManager() -{ - int errorCode( NoError ); - if ( callbacks.destroyCallback ) callbacks.destroyCallback( callbacks.context, &errorCode ); - processErrorCode( errorCode, NewPage ); -} - -void CustomStorageManager::flush() -{ - int errorCode( NoError ); - if ( callbacks.flushCallback ) callbacks.flushCallback( callbacks.context, &errorCode ); - processErrorCode( errorCode, NewPage ); -} - -void CustomStorageManager::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - int errorCode( NoError ); - if ( callbacks.loadByteArrayCallback ) callbacks.loadByteArrayCallback( callbacks.context, page, &len, data, &errorCode ); - processErrorCode( errorCode, page ); -} - -void CustomStorageManager::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - int errorCode( NoError ); - if ( callbacks.storeByteArrayCallback ) callbacks.storeByteArrayCallback( callbacks.context, &page, len, data, &errorCode ); - processErrorCode( errorCode, page ); -} - -void CustomStorageManager::deleteByteArray(const id_type page) -{ - int errorCode( NoError ); - if ( callbacks.deleteByteArrayCallback ) callbacks.deleteByteArrayCallback( callbacks.context, page, &errorCode ); - processErrorCode( errorCode, page ); -} - -inline void CustomStorageManager::processErrorCode(int errorCode, const id_type page) -{ - switch (errorCode) - { - case NoError: - break; - - case InvalidPageError: - throw InvalidPageException( page ); - break; - - case IllegalStateError: - throw libsupermesh::Tools::IllegalStateException( "CustomStorageManager: Error in user implementation." ); - break; - - default: - throw libsupermesh::Tools::IllegalStateException( "CustomStorageManager: Unknown error." ); - } -} diff --git a/spatialindex-1.8.5/src/capi/DataStream.cc b/spatialindex-1.8.5/src/capi/DataStream.cc deleted file mode 100644 index be81411..0000000 --- a/spatialindex-1.8.5/src/capi/DataStream.cc +++ /dev/null @@ -1,118 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the datastream. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - - -DataStream::DataStream(int (*readNext)(libsupermesh::SpatialIndex::id_type * id, - double **pMin, - double **pMax, - uint32_t *nDimension, - const uint8_t** pData, - uint32_t *nDataLength) ) - : m_pNext(0), - m_bDoneReading(false) -{ - iterfunct = readNext; - - // Read the first one. - readData(); -} - -DataStream::~DataStream() -{ - if (m_pNext != 0) delete m_pNext; -} - -bool DataStream::readData() -{ - libsupermesh::SpatialIndex::id_type id; - double *pMin=0; - double *pMax=0; - uint32_t nDimension=0; - uint8_t *p_data=0; - uint32_t nDataLength=0; - - if (m_bDoneReading == true) { - return false; - } - - int ret = iterfunct(&id, &pMin, &pMax, &nDimension, const_cast(&p_data), &nDataLength); - - // The callback should return anything other than 0 - // when it is done. - if (ret != 0) - { - m_bDoneReading = true; - return false; - } - - libsupermesh::SpatialIndex::Region r = libsupermesh::SpatialIndex::Region(pMin, pMax, nDimension); - - // Data gets copied here anyway. We should fix this part of libsupermesh::SpatialIndex::RTree::Data's constructor - m_pNext = new libsupermesh::SpatialIndex::RTree::Data(nDataLength, p_data, r, id); - - return true; -} - - -libsupermesh::SpatialIndex::IData* DataStream::getNext() -{ - if (m_pNext == 0) return 0; - - libsupermesh::SpatialIndex::RTree::Data* ret = m_pNext; - m_pNext = 0; - readData(); - return ret; -} - -bool DataStream::hasNext() -{ - return (m_pNext != 0); -} - -uint32_t DataStream::size() -{ - throw libsupermesh::Tools::NotSupportedException("Operation not supported."); -} - -void DataStream::rewind() -{ - throw libsupermesh::Tools::NotSupportedException("Operation not supported."); - - if (m_pNext != 0) - { - delete m_pNext; - m_pNext = 0; - } -} diff --git a/spatialindex-1.8.5/src/capi/Error.cc b/spatialindex-1.8.5/src/capi/Error.cc deleted file mode 100644 index ee99d55..0000000 --- a/spatialindex-1.8.5/src/capi/Error.cc +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the error object. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include - -Error::Error(int code, std::string const& message, std::string const& method) : - m_code(code), - m_message(message), - m_method(method) -{ -} - -Error::Error(Error const& other) : - m_code(other.m_code), - m_message(other.m_message), - m_method(other.m_method) -{ -} - -Error& Error::operator=(Error const& rhs) -{ - if (&rhs != this) - { - m_code = rhs.m_code; - m_message = rhs.m_message; - m_method = rhs.m_method; - - } - return *this; -} diff --git a/spatialindex-1.8.5/src/capi/IdVisitor.cc b/spatialindex-1.8.5/src/capi/IdVisitor.cc deleted file mode 100644 index 90981a3..0000000 --- a/spatialindex-1.8.5/src/capi/IdVisitor.cc +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the id visitor. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -IdVisitor::IdVisitor(): nResults(0) -{ -} - -IdVisitor::~IdVisitor() -{ - -} - -void IdVisitor::visitNode(const libsupermesh::SpatialIndex::INode& ) -{ - -} - -void IdVisitor::visitData(const libsupermesh::SpatialIndex::IData& d) -{ - nResults += 1; - - m_vector.push_back(d.getIdentifier()); -} - -void IdVisitor::visitData(std::vector& ) -{ -} diff --git a/spatialindex-1.8.5/src/capi/Index.cc b/spatialindex-1.8.5/src/capi/Index.cc deleted file mode 100644 index ad1d06c..0000000 --- a/spatialindex-1.8.5/src/capi/Index.cc +++ /dev/null @@ -1,436 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the index. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -libsupermesh::SpatialIndex::ISpatialIndex* Index::CreateIndex() -{ - using namespace libsupermesh::SpatialIndex; - - ISpatialIndex* index = 0; - - libsupermesh::Tools::Variant var; - - if (GetIndexType() == RT_RTree) { - - try { - index = RTree::returnRTree( *m_buffer, m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - } - - else if (GetIndexType() == RT_MVRTree) { - - try { - index = MVRTree::returnMVRTree( *m_buffer, m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - } - - else if (GetIndexType() == RT_TPRTree) { - - try { - index = TPRTree::returnTPRTree( *m_buffer,m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - } - - return index; -} - - -Index::Index(const libsupermesh::Tools::PropertySet& poProperties): m_properties(poProperties) -{ - Setup(); - - Initialize(); -} - - -Index::~Index() -{ - delete m_rtree; - delete m_buffer; - delete m_storage; -} - -Index::Index( const libsupermesh::Tools::PropertySet& poProperties, - int (*readNext)(libsupermesh::SpatialIndex::id_type *id, - double **pMin, - double **pMax, - uint32_t *nDimension, - const uint8_t **pData, - uint32_t *nDataLength)) -: m_properties(poProperties) -{ - using namespace libsupermesh::SpatialIndex; - - Setup(); - - m_storage = CreateStorage(); - m_buffer = CreateIndexBuffer(*m_storage); - - DataStream ds(readNext); - - double dFillFactor = 0.7; - uint32_t nIdxCapacity = 100; - uint32_t nIdxLeafCap = 100; - uint32_t nIdxDimension = 2; - libsupermesh::SpatialIndex::RTree::RTreeVariant eVariant = libsupermesh::SpatialIndex::RTree::RV_RSTAR; - libsupermesh::SpatialIndex::id_type m_IdxIdentifier; - - // Fetch a bunch of properties. We can't bulk load an rtree using merely - // properties, we have to use the helper method(s). - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) - throw std::runtime_error("Index::Index (streaming):" - " Property FillFactor must be libsupermesh::Tools::VT_DOUBLE"); - - dFillFactor = var.m_val.dblVal; - } - - var = m_properties.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::Index (streaming): " - "Property IndexCapacity must be libsupermesh::Tools::VT_ULONG"); - - nIdxCapacity = var.m_val.ulVal; - } - - var = m_properties.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::Index (streaming): " - "Property LeafCapacity must be libsupermesh::Tools::VT_ULONG"); - - nIdxLeafCap = var.m_val.ulVal; - } - - var = m_properties.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::Index (streaming): " - "Property Dimension must be libsupermesh::Tools::VT_ULONG"); - - nIdxDimension = var.m_val.ulVal; - } - - var = m_properties.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG) - throw std::runtime_error("Index::Index (streaming): " - "Property TreeVariant must be libsupermesh::Tools::VT_LONG"); - - eVariant = static_cast(var.m_val.lVal); - } - - var = m_properties.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) - throw std::runtime_error("Index::Index (streaming): " - "Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - m_IdxIdentifier = var.m_val.llVal; - } - - m_rtree = RTree::createAndBulkLoadNewRTree( libsupermesh::SpatialIndex::RTree::BLM_STR, - ds, - *m_buffer, - dFillFactor, - nIdxCapacity, - nIdxLeafCap, - nIdxDimension, - eVariant, - m_IdxIdentifier); -} - - -libsupermesh::SpatialIndex::StorageManager::IBuffer* Index::CreateIndexBuffer(libsupermesh::SpatialIndex::IStorageManager& storage) -{ - using namespace libsupermesh::SpatialIndex::StorageManager; - IBuffer* buffer = 0; - try { - if ( m_storage == 0 ) - throw std::runtime_error("Storage was invalid to create index buffer"); - buffer = returnRandomEvictionsBuffer(storage, m_properties); - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - return buffer; -} - - -libsupermesh::SpatialIndex::IStorageManager* Index::CreateStorage() -{ - using namespace libsupermesh::SpatialIndex::StorageManager; - - libsupermesh::SpatialIndex::IStorageManager* storage = 0; - std::string filename(""); - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("FileName"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) - throw std::runtime_error("Index::CreateStorage: " - "Property FileName must be libsupermesh::Tools::VT_PCHAR"); - - filename = std::string(var.m_val.pcVal); - } - - if (GetIndexStorage() == RT_Disk) { - if (filename.empty()) { - std::ostringstream os; - os << "Spatial Index Error: filename was empty." - " Set IndexStorageType to RT_Memory"; - throw std::runtime_error(os.str()); - } - try { - storage = returnDiskStorageManager(m_properties); - return storage; - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - - } else if (GetIndexStorage() == RT_Memory) { - - try { - storage = returnMemoryStorageManager(m_properties); - return storage; - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - - } else if (GetIndexStorage() == RT_Custom) { - - try { - storage = returnCustomStorageManager(m_properties); - return storage; - } catch (libsupermesh::Tools::Exception& e) { - std::ostringstream os; - os << "Spatial Index Error: " << e.what(); - throw std::runtime_error(os.str()); - } - - } - return storage; -} - - - - -void Index::Initialize() -{ - m_storage = CreateStorage(); - m_buffer = CreateIndexBuffer(*m_storage); - m_rtree = CreateIndex(); -} - -void Index::Setup() - -{ - m_buffer = 0; - m_storage = 0; - m_rtree = 0; -} - -RTIndexType Index::GetIndexType() -{ - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("IndexType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::GetIndexType: " - "Property IndexType must be libsupermesh::Tools::VT_ULONG"); - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - return RT_InvalidIndexType; - -} -void Index::SetIndexType(RTIndexType v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = v; - m_properties.setProperty("IndexType", var); -} - -RTStorageType Index::GetIndexStorage() -{ - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("IndexStorageType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::GetIndexStorage: " - "Property IndexStorageType must be libsupermesh::Tools::VT_ULONG"); - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - return RT_InvalidStorageType; -} - -void Index::SetIndexStorage(RTStorageType v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = v; - m_properties.setProperty("IndexStorageType", var); -} - -RTIndexVariant Index::GetIndexVariant() -{ - - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("TreeVariant"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw std::runtime_error("Index::GetIndexVariant: " - "Property TreeVariant must be libsupermesh::Tools::VT_ULONG"); - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - return RT_InvalidIndexVariant; -} - -void Index::SetIndexVariant(RTStorageType v) -{ - using namespace libsupermesh::SpatialIndex; - libsupermesh::Tools::Variant var; - - if (GetIndexType() == RT_RTree) { - var.m_val.ulVal = static_cast(v); - m_properties.setProperty("TreeVariant", var); - } else if (GetIndexType() == RT_MVRTree) { - var.m_val.ulVal = static_cast(v); - m_properties.setProperty("TreeVariant", var); - } else if (GetIndexType() == RT_TPRTree) { - var.m_val.ulVal = static_cast(v); - m_properties.setProperty("TreeVariant", var); - } -} - -int64_t Index::GetResultSetOffset() -{ - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("ResultSetOffset"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) - throw std::runtime_error("Index::ResultSetOffset: " - "Property ResultSetOffset must be libsupermesh::Tools::VT_LONGLONG"); - return var.m_val.llVal; - } - - // if we didn't get anything, we're returning 0 as there is no limit - return 0; -} - -void Index::SetResultSetOffset(int64_t v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = v; - m_properties.setProperty("ResultSetOffset", var); -} - - -int64_t Index::GetResultSetLimit() -{ - libsupermesh::Tools::Variant var; - var = m_properties.getProperty("ResultSetLimit"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) - throw std::runtime_error("Index::ResultSetLimit: " - "Property ResultSetLimit must be libsupermesh::Tools::VT_LONGLONG"); - return var.m_val.llVal; - } - - // if we didn't get anything, we're returning 0 as there is no limit - return 0; -} - -void Index::SetResultSetLimit(int64_t v) -{ - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = v; - m_properties.setProperty("ResultSetLimit", var); -} - -void Index::flush() -{ - m_storage->flush(); -} diff --git a/spatialindex-1.8.5/src/capi/LeafQuery.cc b/spatialindex-1.8.5/src/capi/LeafQuery.cc deleted file mode 100644 index 2686c99..0000000 --- a/spatialindex-1.8.5/src/capi/LeafQuery.cc +++ /dev/null @@ -1,132 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement a query of the index's leaves. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -LeafQuery::LeafQuery() -{ - -} - -LeafQueryResult get_results(const libsupermesh::SpatialIndex::INode* n) -{ - LeafQueryResult result (n->getIdentifier()); - - libsupermesh::SpatialIndex::IShape* ps; - n->getShape(&ps); - libsupermesh::SpatialIndex::Region* pr = dynamic_cast(ps); - std::vector ids; - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push_back(n->getChildIdentifier(cChild)); - } - - result.SetIDs(ids); - result.SetBounds(pr); - delete ps; - - return result; -} -void LeafQuery::getNextEntry( const libsupermesh::SpatialIndex::IEntry& entry, - libsupermesh::SpatialIndex::id_type& nextEntry, - bool& hasNext) -{ - - const libsupermesh::SpatialIndex::INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 0) - { - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - m_ids.push(n->getChildIdentifier(cChild)); - } - } - - if (n->isLeaf()) { - m_results.push_back(get_results(n)); - } - - if (! m_ids.empty()) - { - nextEntry = m_ids.front(); m_ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } -} - - -std::vector const& LeafQueryResult::GetIDs() const -{ - return ids; -} - -void LeafQueryResult::SetIDs(std::vector& v) -{ - ids.resize(v.size()); - std::copy(v.begin(), v.end(), ids.begin()); -} -const libsupermesh::SpatialIndex::Region* LeafQueryResult::GetBounds() const -{ - return bounds; -} - -void LeafQueryResult::SetBounds(const libsupermesh::SpatialIndex::Region* b) -{ - bounds = new libsupermesh::SpatialIndex::Region(*b); -} - -LeafQueryResult::LeafQueryResult(LeafQueryResult const& other) -{ - ids.resize(other.ids.size()); - std::copy(other.ids.begin(), other.ids.end(), ids.begin()); - m_id = other.m_id; - - bounds = other.bounds->clone(); -} - -LeafQueryResult& LeafQueryResult::operator=(LeafQueryResult const& rhs) -{ - if (&rhs != this) - { - ids.resize(rhs.ids.size()); - std::copy(rhs.ids.begin(), rhs.ids.end(), ids.begin()); - m_id = rhs.m_id; - bounds = rhs.bounds->clone(); - } - return *this; -} - diff --git a/spatialindex-1.8.5/src/capi/Makefile.am b/spatialindex-1.8.5/src/capi/Makefile.am deleted file mode 100644 index 2c35d40..0000000 --- a/spatialindex-1.8.5/src/capi/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libsidxc.la -INCLUDES = -I../../include -I../../include/capi -libsidxc_la_SOURCES = BoundsQuery.cc \ - CountVisitor.cc \ - CustomStorage.cc \ - DataStream.cc \ - Error.cc \ - IdVisitor.cc \ - Index.cc \ - LeafQuery.cc \ - ObjVisitor.cc \ - sidx_api.cc \ - Utility.cc diff --git a/spatialindex-1.8.5/src/capi/Makefile.in b/spatialindex-1.8.5/src/capi/Makefile.in deleted file mode 100644 index 967b69c..0000000 --- a/spatialindex-1.8.5/src/capi/Makefile.in +++ /dev/null @@ -1,601 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/capi -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libsidxc_la_LIBADD = -am_libsidxc_la_OBJECTS = BoundsQuery.lo CountVisitor.lo \ - CustomStorage.lo DataStream.lo Error.lo IdVisitor.lo Index.lo \ - LeafQuery.lo ObjVisitor.lo sidx_api.lo Utility.lo -libsidxc_la_OBJECTS = $(am_libsidxc_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libsidxc_la_SOURCES) -DIST_SOURCES = $(libsidxc_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libsidxc.la -INCLUDES = -I../../include -I../../include/capi -libsidxc_la_SOURCES = BoundsQuery.cc \ - CountVisitor.cc \ - CustomStorage.cc \ - DataStream.cc \ - Error.cc \ - IdVisitor.cc \ - Index.cc \ - LeafQuery.cc \ - ObjVisitor.cc \ - sidx_api.cc \ - Utility.cc - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/capi/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/capi/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libsidxc.la: $(libsidxc_la_OBJECTS) $(libsidxc_la_DEPENDENCIES) $(EXTRA_libsidxc_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libsidxc_la_OBJECTS) $(libsidxc_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoundsQuery.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CountVisitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CustomStorage.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DataStream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IdVisitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeafQuery.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ObjVisitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Utility.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sidx_api.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/capi/ObjVisitor.cc b/spatialindex-1.8.5/src/capi/ObjVisitor.cc deleted file mode 100644 index 9d6ecb7..0000000 --- a/spatialindex-1.8.5/src/capi/ObjVisitor.cc +++ /dev/null @@ -1,66 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ objects to implement the object visitor. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -ObjVisitor::ObjVisitor(): nResults(0) -{ -} - -ObjVisitor::~ObjVisitor() -{ - std::vector::iterator it; - for (it = m_vector.begin(); it != m_vector.end(); it++) { - delete *it; - } - -} - -void ObjVisitor::visitNode(const libsupermesh::SpatialIndex::INode& ) -{ -} - -void ObjVisitor::visitData(const libsupermesh::SpatialIndex::IData& d) -{ - - libsupermesh::SpatialIndex::IData* item = dynamic_cast(const_cast(d).clone()) ; - - nResults += 1; - - m_vector.push_back(item); -} - -void ObjVisitor::visitData(std::vector& ) -{ -} - diff --git a/spatialindex-1.8.5/src/capi/Utility.cc b/spatialindex-1.8.5/src/capi/Utility.cc deleted file mode 100644 index 4cd2449..0000000 --- a/spatialindex-1.8.5/src/capi/Utility.cc +++ /dev/null @@ -1,240 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C++ object declarations to implement utilities. - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -libsupermesh::Tools::PropertySet* GetDefaults() -{ - libsupermesh::Tools::PropertySet* ps = new libsupermesh::Tools::PropertySet; - - libsupermesh::Tools::Variant var; - - // Rtree defaults - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 0.7; - ps->setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = libsupermesh::SpatialIndex::RTree::RV_RSTAR; - ps->setProperty("TreeVariant", var); - - // var.m_varType = libsupermesh::Tools::VT_LONGLONG; - // var.m_val.llVal = 0; - // ps->setProperty("IndexIdentifier", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 32; - ps->setProperty("NearMinimumOverlapFactor", var); - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 0.4; - ps->setProperty("SplitDistributionFactor", var); - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 0.3; - ps->setProperty("ReinsertFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 2; - ps->setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.bVal = true; - ps->setProperty("EnsureTightMBRs", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("IndexPoolCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 100; - ps->setProperty("LeafPoolCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 1000; - ps->setProperty("RegionPoolCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 500; - ps->setProperty("PointPoolCapacity", var); - - // horizon for TPRTree - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = 20.0; - ps->setProperty("Horizon", var); - - // Buffering defaults - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 10; - ps->setProperty("Capacity", var); - - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.bVal = false; - ps->setProperty("WriteThrough", var); - - // Disk Storage Manager defaults - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.bVal = true; - ps->setProperty("Overwrite", var); - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast(""); - ps->setProperty("FileName", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = 4096; - ps->setProperty("PageSize", var); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = 0; - ps->setProperty("ResultSetLimit", var); - - // Our custom properties related to whether - // or not we are using a disk or memory storage manager - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = RT_Disk; - ps->setProperty("IndexStorageType", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = RT_RTree; - ps->setProperty("IndexType", var); - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast("dat"); - ps->setProperty("FileNameDat", var); - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast("idx"); - ps->setProperty("FileNameIdx", var); - - // Custom storage manager properties - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.pcVal = 0; - ps->setProperty("CustomStorageCallbacksSize", var); - - var.m_varType = libsupermesh::Tools::VT_PVOID; - var.m_val.pcVal = 0; - ps->setProperty("CustomStorageCallbacks", var); - - return ps; -} - -void Page_ResultSet_Ids(IdVisitor& visitor, int64_t** ids, int64_t nStart, int64_t nResultLimit, uint64_t* nResults) -{ - int64_t nResultCount; - - nResultCount = visitor.GetResultCount(); - - if (nResultLimit == 0) - { - // no offset paging - nResultLimit = nResultCount; - nStart = 0; - } - else - { - if ((nResultCount - (nStart + nResultLimit)) < 0) - { - // not enough results to fill nResultCount - nStart = std::min(nStart, nResultCount); - nResultCount = nStart + std::min(nResultLimit, nResultCount - nStart); - } - else - { - nResultCount = std::min(nResultCount, nStart + nResultLimit); - } - } - - *ids = (int64_t*) malloc (nResultLimit * sizeof(int64_t)); - - std::vector& results = visitor.GetResults(); - - for (int64_t i = nStart; i < nResultCount; ++i) - { - (*ids)[i - nStart] = results[i]; - } - - *nResults = nResultCount - nStart; -} - -void Page_ResultSet_Obj(ObjVisitor& visitor, IndexItemH** items, int64_t nStart, int64_t nResultLimit, uint64_t* nResults) -{ - int64_t nResultCount; - - nResultCount = visitor.GetResultCount(); - - if (nResultLimit == 0) - { - // no offset paging - nResultLimit = nResultCount; - nStart = 0; - } - else - { - if ((nResultCount - (nStart + nResultLimit)) < 0) - { - // not enough results to fill nResultCount - nStart = std::min(nStart, nResultCount); - nResultCount = nStart + std::min(nResultLimit, nResultCount - nStart); - } - else - { - nResultCount = std::min(nResultCount, nStart + nResultLimit); - } - } - - *items = (libsupermesh::SpatialIndex::IData**) malloc (nResultLimit * sizeof(libsupermesh::SpatialIndex::IData*)); - - std::vector& results = visitor.GetResults(); - - // copy the Items into the newly allocated item array - // we need to make sure to copy the actual Item instead - // of just the pointers, as the visitor will nuke them - // upon ~ - for (int64_t i = nStart; i < nResultCount; ++i) - { - libsupermesh::SpatialIndex::IData* result =results[i]; - (*items)[i - nStart] = dynamic_cast(result->clone()); - } - *nResults = nResultCount - nStart; -} diff --git a/spatialindex-1.8.5/src/capi/sidx_api.cc b/spatialindex-1.8.5/src/capi/sidx_api.cc deleted file mode 100644 index 891eda3..0000000 --- a/spatialindex-1.8.5/src/capi/sidx_api.cc +++ /dev/null @@ -1,3519 +0,0 @@ -/****************************************************************************** - * Project: libsidx - A C API wrapper around libspatialindex - * Purpose: C API wrapper implementation - * Author: Howard Butler, hobu.inc@gmail.com - ****************************************************************************** - * Copyright (c) 2009, Howard Butler - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -static std::stack errors; - - -#ifdef _WIN32 -# pragma warning(push) -# pragma warning(disable: 4127) // assignment operator could not be generated -#endif - -#define VALIDATE_POINTER0(ptr, func) \ - do { if( NULL == ptr ) { \ - RTError const ret = RT_Failure; \ - std::ostringstream msg; \ - msg << "Pointer \'" << #ptr << "\' is NULL in \'" << (func) <<"\'."; \ - std::string message(msg.str()); \ - Error_PushError( ret, message.c_str(), (func)); \ - return; \ - }} while(0) - -#define VALIDATE_POINTER1(ptr, func, rc) \ - do { if( NULL == ptr ) { \ - RTError const ret = RT_Failure; \ - std::ostringstream msg; \ - msg << "Pointer \'" << #ptr << "\' is NULL in \'" << (func) <<"\'."; \ - std::string message(msg.str()); \ - Error_PushError( ret, message.c_str(), (func)); \ - return (rc); \ - }} while(0) - -IDX_C_START - -SIDX_C_DLL void Error_Reset(void) { - if (errors.empty()) return; - for (std::size_t i=0;i(errors.size()); -} - -SIDX_C_DLL IndexH Index_Create(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "Index_Create", NULL); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try { - return (IndexH) new Index(*prop); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Create"); - return NULL; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Create"); - return NULL; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Create"); - return NULL; - } - return NULL; -} - -SIDX_C_DLL IndexH Index_CreateWithStream( IndexPropertyH hProp, - int (*readNext)(libsupermesh::SpatialIndex::id_type *id, double **pMin, double **pMax, uint32_t *nDimension, const uint8_t **pData, uint32_t *nDataLength) - ) -{ - VALIDATE_POINTER1(hProp, "Index_CreateWithStream", NULL); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - - try { - return (IndexH) new Index(*prop, readNext); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_CreateWithStream"); - return NULL; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_CreateWithStream"); - return NULL; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_CreateWithStream"); - return NULL; - } - return NULL; -} - -SIDX_C_DLL void Index_Destroy(IndexH index) -{ - VALIDATE_POINTER0(index, "Index_Destroy"); - Index* idx = (Index*) index; - if (idx) delete idx; -} - -SIDX_C_DLL void Index_Flush(IndexH index) -{ - VALIDATE_POINTER0(index, "Index_Flush"); - Index* idx = (Index*) index; - if (idx) - { - idx->flush(); - } -} - -SIDX_C_DLL RTError Index_DeleteTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension - ) -{ - VALIDATE_POINTER1(index, "Index_DeleteTPData", RT_Failure); - - Index* idx = static_cast(index); - - try { - idx->index().deleteData(libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension), id); - return RT_None; - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_DeleteTPData"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_DeleteTPData"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_DeleteTPData"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_DeleteMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension - ) -{ - VALIDATE_POINTER1(index, "Index_DeleteMVRData", RT_Failure); - - Index* idx = static_cast(index); - - try { - idx->index().deleteData(libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension), id); - return RT_None; - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_DeleteMVRData"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_DeleteMVRData"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_DeleteMVRData"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_DeleteData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension) -{ - VALIDATE_POINTER1(index, "Index_DeleteData", RT_Failure); - - Index* idx = static_cast(index); - - try { - idx->index().deleteData(libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension), id); - return RT_None; - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_DeleteData"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_DeleteData"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_DeleteData"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_InsertTPData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - uint32_t nDataLength - ) -{ - VALIDATE_POINTER1(index, "Index_InsertTPData", RT_Failure); - - Index* idx = static_cast(index); - - // Test the data and check for the case when mins equal maxs (x,y,z,v) - // In that case, we will insert a libsupermesh::SpatialIndex::MovingPoint - // instead of a libsupermesh::SpatialIndex::MovingRegion - - bool isPoint = false; - libsupermesh::SpatialIndex::IShape* shape = 0; - double const epsilon = std::numeric_limits::epsilon(); - - double length(0), vlength(0); - for (uint32_t i = 0; i < nDimension; ++i) { - double delta = pdMin[i] - pdMax[i]; - length += std::fabs(delta); - - double vDelta = pdVMin[i] - pdVMax[i]; - vlength += std::fabs(vDelta); - } - - if ((length <= epsilon) && (vlength <= epsilon)){ - isPoint = true; - } - - if (isPoint == true) { - shape = new libsupermesh::SpatialIndex::MovingPoint(pdMin, pdVMin, tStart, tEnd, nDimension); - } else { - shape = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - } - try { - idx->index().insertData(nDataLength, - pData, - *shape, - id); - - delete shape; - return RT_None; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_InsertTPData"); - delete shape; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_InsertTPData"); - delete shape; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_InsertTPData"); - delete shape; - return RT_Failure; - } - return RT_None; - -} - -SIDX_C_DLL RTError Index_InsertMVRData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - const uint8_t* pData, - uint32_t nDataLength - ) -{ - VALIDATE_POINTER1(index, "Index_InsertMVRData", RT_Failure); - - Index* idx = static_cast(index); - - // Test the data and check for the case when mins equal maxs - // In that case, we will insert a libsupermesh::SpatialIndex::TimePoint - // instead of a libsupermesh::SpatialIndex::timeRegion - - bool isPoint = false; - libsupermesh::SpatialIndex::IShape* shape = 0; - double const epsilon = std::numeric_limits::epsilon(); - - double length(0); - for (uint32_t i = 0; i < nDimension; ++i) { - double delta = pdMin[i] - pdMax[i]; - length += std::fabs(delta); - } - - if (length <= epsilon){ - isPoint = true; - } - - if (isPoint == true) { - shape = new libsupermesh::SpatialIndex::TimePoint(pdMin, tStart, tEnd, nDimension); - } else { - shape = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - } - try { - idx->index().insertData(nDataLength, - pData, - *shape, - id); - - delete shape; - return RT_None; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_InsertMVRData"); - delete shape; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_InsertMVRData"); - delete shape; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_InsertMVRData"); - delete shape; - return RT_Failure; - } - return RT_None; -} - - -SIDX_C_DLL RTError Index_InsertData( IndexH index, - int64_t id, - double* pdMin, - double* pdMax, - uint32_t nDimension, - const uint8_t* pData, - uint32_t nDataLength) -{ - VALIDATE_POINTER1(index, "Index_InsertData", RT_Failure); - - Index* idx = static_cast(index); - - // Test the data and check for the case when minx == maxx, miny == maxy - // and minz == maxz. In that case, we will insert a libsupermesh::SpatialIndex::Point - // instead of a libsupermesh::SpatialIndex::Region - - bool isPoint = false; - libsupermesh::SpatialIndex::IShape* shape = 0; - double const epsilon = std::numeric_limits::epsilon(); - - double length(0); - for (uint32_t i = 0; i < nDimension; ++i) { - double delta = pdMin[i] - pdMax[i]; - length += std::fabs(delta); - } - - if (length <= epsilon) { - isPoint = true; - } - - if (isPoint == true) { - shape = new libsupermesh::SpatialIndex::Point(pdMin, nDimension); - } else { - shape = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - } - try { - idx->index().insertData(nDataLength, - pData, - *shape, - id); - - delete shape; - return RT_None; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_InsertData"); - delete shape; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_InsertData"); - delete shape; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_InsertData"); - delete shape; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPIntersects_obj", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRIntersects_obj( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRIntersects_obj", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_Intersects_obj( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_obj", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPIntersects_id", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPIntersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRIntersects_id( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRIntersects_id", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRIntersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRIntersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_MVRIntersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_Intersects_id( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_id", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPIntersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPIntersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPIntersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPIntersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRIntersects_count( IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRIntersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRIntersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRIntersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_MVRIntersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_Intersects_count( IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - idx->index().intersectsWithQuery( *r, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_SegmentIntersects_obj( IndexH index, - double* pdStartPoint, - double* pdEndPoint, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::LineSegment* l = new libsupermesh::SpatialIndex::LineSegment(pdStartPoint, pdEndPoint, nDimension); - idx->index().intersectsWithQuery( *l, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete l; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_SegmentIntersects_id( IndexH index, - double* pdStartPoint, - double* pdEndPoint, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - try { - libsupermesh::SpatialIndex::LineSegment* l = new libsupermesh::SpatialIndex::LineSegment(pdStartPoint, pdEndPoint, nDimension); - idx->index().intersectsWithQuery( *l, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete l; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_SegmentIntersects_count( IndexH index, - double* pdStartPoint, - double* pdEndPoint, - uint32_t nDimension, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_Intersects_count", RT_Failure); - Index* idx = static_cast(index); - - CountVisitor* visitor = new CountVisitor; - try { - libsupermesh::SpatialIndex::LineSegment* l = new libsupermesh::SpatialIndex::LineSegment(pdStartPoint, pdEndPoint, nDimension); - idx->index().intersectsWithQuery( *l, - *visitor); - - *nResults = visitor->GetResultCount(); - - delete l; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_Intersects_count"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPNearestNeighbors_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_TPNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRNearestNeighbors_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - idx->index().nearestNeighborQuery( *nResults, - *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_MVRNearestNeighbors_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_NearestNeighbors_id(IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - int64_t** ids, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_NearestNeighbors_id", RT_Failure); - Index* idx = static_cast(index); - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - IdVisitor* visitor = new IdVisitor; - - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Ids(*visitor, ids, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_NearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_NearestNeighbors_id"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_id"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_TPNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double* pdVMin, - double* pdVMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_TPNearestNeighbors_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::MovingRegion* r = new libsupermesh::SpatialIndex::MovingRegion(pdMin, pdMax, pdVMin, pdVMax, tStart, tEnd, nDimension); - - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_TPNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_TPNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_MVRNearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - double tStart, - double tEnd, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_MVRNearestNeighbors_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::TimeRegion* r = new libsupermesh::SpatialIndex::TimeRegion(pdMin, pdMax, tStart, tEnd, nDimension); - - idx->index().nearestNeighborQuery( *nResults, - *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_MVRNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_MVRNearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_NearestNeighbors_obj(IndexH index, - double* pdMin, - double* pdMax, - uint32_t nDimension, - IndexItemH** items, - uint64_t* nResults) -{ - VALIDATE_POINTER1(index, "Index_NearestNeighbors_obj", RT_Failure); - Index* idx = static_cast(index); - - int64_t nResultLimit, nStart; - - nResultLimit = idx->GetResultSetLimit(); - nStart = idx->GetResultSetOffset(); - - ObjVisitor* visitor = new ObjVisitor; - try { - libsupermesh::SpatialIndex::Region* r = new libsupermesh::SpatialIndex::Region(pdMin, pdMax, nDimension); - - idx->index().nearestNeighborQuery( static_cast(*nResults), - *r, - *visitor); - - Page_ResultSet_Obj(*visitor, items, nStart, nResultLimit, nResults); - - delete r; - delete visitor; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_NearestNeighbors_obj"); - delete visitor; - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTError Index_GetBounds( IndexH index, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension) -{ - VALIDATE_POINTER1(index, "Index_GetBounds", RT_Failure); - Index* idx = static_cast(index); - - BoundsQuery* query = new BoundsQuery; - - try { - idx->index().queryStrategy( *query); - - const libsupermesh::SpatialIndex::Region* bounds = query->GetBounds(); - if (bounds == 0) { - *nDimension = 0; - delete query; - return RT_None; - } - - *nDimension =bounds->getDimension(); - - *ppdMin = (double*) malloc (*nDimension * sizeof(double)); - *ppdMax = (double*) malloc (*nDimension * sizeof(double)); - - for (uint32_t i=0; i< *nDimension; ++i) { - (*ppdMin)[i] = bounds->getLow(i); - (*ppdMax)[i] = bounds->getHigh(i); - } - - delete query; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_GetBounds"); - delete query; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_GetBounds"); - delete query; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_GetBounds"); - delete query; - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL RTError Index_SetResultSetOffset(IndexH index, int64_t value) -{ - try - { - VALIDATE_POINTER1(index, "Index_SetResultSetOffset", RT_Failure); - Index* idx = static_cast(index); - idx->SetResultSetOffset(value); - } - catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_SetResultSetOffset"); - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL int64_t Index_GetResultSetOffset(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_GetResultSetOffset", 0); - Index* idx = static_cast(index); - return idx->GetResultSetOffset(); -} - -SIDX_DLL RTError Index_SetResultSetLimit(IndexH index, int64_t value) -{ - try - { - VALIDATE_POINTER1(index, "Index_SetResultSetLimit", RT_Failure); - Index* idx = static_cast(index); - idx->SetResultSetLimit(value); - } - catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_SetResultSetLimit"); - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL int64_t Index_GetResultSetLimit(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_GetResultSetLimit", 0); - Index* idx = static_cast(index); - return idx->GetResultSetLimit(); -} - -SIDX_C_DLL uint32_t Index_IsValid(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_IsValid", 0); - Index* idx = static_cast(index); - return static_cast(idx->index().isIndexValid()); -} - -SIDX_C_DLL IndexPropertyH Index_GetProperties(IndexH index) -{ - VALIDATE_POINTER1(index, "Index_GetProperties", 0); - Index* idx = static_cast(index); - libsupermesh::Tools::PropertySet* ps = new libsupermesh::Tools::PropertySet; - - idx->index().getIndexProperties(*ps); - return (IndexPropertyH)ps; -} - -SIDX_C_DLL void Index_ClearBuffer(IndexH index) -{ - VALIDATE_POINTER0(index, "Index_ClearBuffer"); - Index* idx = static_cast(index); - idx->buffer().clear(); -} - -SIDX_C_DLL void Index_DestroyObjResults(IndexItemH* results, uint32_t nResults) -{ - VALIDATE_POINTER0(results, "Index_DestroyObjResults"); - libsupermesh::SpatialIndex::IData* it; - for (uint32_t i=0; i< nResults; ++i) { - if (results[i] != NULL) { - it = static_cast(results[i]); - if (it != 0) - delete it; - } - } - - std::free(results); -} - - -SIDX_C_DLL void Index_Free(void* results) -{ - VALIDATE_POINTER0(results, "Index_Free"); - if (results != 0) - std::free(results); -} - -SIDX_C_DLL RTError Index_GetLeaves( IndexH index, - uint32_t* nNumLeafNodes, - uint32_t** nLeafSizes, - int64_t** nLeafIDs, - int64_t*** nLeafChildIDs, - double*** pppdMin, - double*** pppdMax, - uint32_t* nDimension) -{ - VALIDATE_POINTER1(index, "Index_GetLeaves", RT_Failure); - Index* idx = static_cast(index); - - std::vector::const_iterator i; - LeafQuery* query = new LeafQuery; - - // Fetch the dimensionality of the index - libsupermesh::Tools::PropertySet ps; - idx->index().getIndexProperties(ps); - - libsupermesh::Tools::Variant var; - var = ps.getProperty("Dimension"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property Dimension must be libsupermesh::Tools::VT_ULONG", - "Index_GetLeaves"); - return RT_Failure; - } - } - - *nDimension = var.m_val.ulVal; - - try { - idx->index().queryStrategy( *query); - - const std::vector& results = query->GetResults(); - - *nNumLeafNodes = (uint32_t)results.size(); - - *nLeafSizes = (uint32_t*) malloc (*nNumLeafNodes * sizeof(uint32_t)); - *nLeafIDs = (int64_t*) malloc (*nNumLeafNodes * sizeof(int64_t)); - - *nLeafChildIDs = (int64_t**) malloc(*nNumLeafNodes * sizeof(int64_t*)); - *pppdMin = (double**) malloc (*nNumLeafNodes * sizeof(double*)); - *pppdMax = (double**) malloc (*nNumLeafNodes * sizeof(double*)); - - uint32_t k=0; - for (i = results.begin(); i != results.end(); ++i) - { - std::vector const& ids = (*i).GetIDs(); - const libsupermesh::SpatialIndex::Region* b = (*i).GetBounds(); - - (*nLeafIDs)[k] = (*i).getIdentifier(); - (*nLeafSizes)[k] = (uint32_t)ids.size(); - - (*nLeafChildIDs)[k] = (int64_t*) malloc( (*nLeafSizes)[k] * sizeof(int64_t)); - (*pppdMin)[k] = (double*) malloc ( (*nLeafSizes)[k] * sizeof(double)); - (*pppdMax)[k] = (double*) malloc ( (*nLeafSizes)[k] * sizeof(double)); - for (uint32_t i=0; i< *nDimension; ++i) { - (*pppdMin)[k][i] = b->getLow(i); - (*pppdMax)[k][i] = b->getHigh(i); - } - for (uint32_t cChild = 0; cChild < ids.size(); cChild++) - { - (*nLeafChildIDs)[k][cChild] = ids[cChild]; - } - ++k; - } - - - delete query; - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "Index_GetLeaves"); - delete query; - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "Index_GetLeaves"); - delete query; - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "Index_GetLeaves"); - delete query; - return RT_Failure; - } - return RT_None; -} - - -SIDX_C_DLL void IndexItem_Destroy(IndexItemH item) -{ - VALIDATE_POINTER0(item, "IndexItem_Destroy"); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - if (it != 0) delete it; -} - -SIDX_C_DLL RTError IndexItem_GetData( IndexItemH item, - uint8_t** data, - uint64_t* length) -{ - VALIDATE_POINTER1(item, "IndexItem_GetData", RT_Failure); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - uint8_t* p_data; - uint32_t* l= new uint32_t; - - it->getData(*l,&p_data); - *length = (uint64_t)*l; - *data = (uint8_t*) malloc (*length * sizeof(uint8_t)); - - memcpy(*data, p_data, *length); - delete[] p_data; - delete l; - return RT_None; - -} - -SIDX_C_DLL int64_t IndexItem_GetID(IndexItemH item) -{ - VALIDATE_POINTER1(item, "IndexItem_GetID",0); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - int64_t value = it->getIdentifier(); - return value; -} - -SIDX_C_DLL RTError IndexItem_GetBounds( IndexItemH item, - double** ppdMin, - double** ppdMax, - uint32_t* nDimension) -{ - VALIDATE_POINTER1(item, "IndexItem_GetBounds", RT_Failure); - libsupermesh::SpatialIndex::IData* it = static_cast(item); - - libsupermesh::SpatialIndex::IShape* s; - it->getShape(&s); - - libsupermesh::SpatialIndex::Region *bounds = new libsupermesh::SpatialIndex::Region(); - s->getMBR(*bounds); - - if (bounds == 0) { - *nDimension = 0; - delete bounds; - delete s; - return RT_None; - } - *nDimension = bounds->getDimension(); - - *ppdMin = (double*) malloc (*nDimension * sizeof(double)); - *ppdMax = (double*) malloc (*nDimension * sizeof(double)); - - if (ppdMin == NULL || ppdMax == NULL) { - Error_PushError(RT_Failure, - "Unable to allocation bounds array(s)", - "IndexItem_GetBounds"); - return RT_Failure; - } - - for (uint32_t i=0; i< *nDimension; ++i) { - (*ppdMin)[i] = bounds->getLow(i); - (*ppdMax)[i] = bounds->getHigh(i); - } - delete bounds; - delete s; - return RT_None; -} -SIDX_C_DLL IndexPropertyH IndexProperty_Create() -{ - libsupermesh::Tools::PropertySet* ps = GetDefaults(); - libsupermesh::Tools::Variant var; - return (IndexPropertyH)ps; -} - -SIDX_C_DLL void IndexProperty_Destroy(IndexPropertyH hProp) -{ - VALIDATE_POINTER0(hProp, "IndexProperty_Destroy"); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - if (prop != 0) delete prop; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexType(IndexPropertyH hProp, - RTIndexType value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexType", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (!(value == RT_RTree || value == RT_MVRTree || value == RT_TPRTree)) { - throw std::runtime_error("Inputted value is not a valid index type"); - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexType", var); - - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexType"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexType"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexType"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTIndexType IndexProperty_GetIndexType(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexType", RT_InvalidIndexType); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexType must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexType"); - return RT_InvalidIndexType; - } - return (RTIndexType) var.m_val.ulVal; - } - - Error_PushError(RT_Failure, - "Property IndexType was empty", - "IndexProperty_GetIndexType"); - return RT_InvalidIndexType; - -} - -SIDX_C_DLL RTError IndexProperty_SetDimension(IndexPropertyH hProp, uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetDimension", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("Dimension", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetDimension"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetDimension"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetDimension"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetDimension(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetDimension", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Dimension"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexType must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetDimension"); - return 0; - } - - return var.m_val.ulVal; - } - - // A zero dimension index is invalid. - Error_PushError(RT_Failure, - "Property Dimension was empty", - "IndexProperty_GetDimension"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexVariant( IndexPropertyH hProp, - RTIndexVariant value) -{ - using namespace libsupermesh::SpatialIndex; - - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexVariant", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - - try - { - - if (!(value == RT_Linear || value == RT_Quadratic || value == RT_Star)) { - throw std::runtime_error("Inputted value is not a valid index variant"); - } - - var.m_varType = libsupermesh::Tools::VT_LONG; - RTIndexType type = IndexProperty_GetIndexType(hProp); - if (type == RT_InvalidIndexType ) { - Error_PushError(RT_Failure, - "Index type is not properly set", - "IndexProperty_SetIndexVariant"); - return RT_Failure; - } - if (type == RT_RTree) { - var.m_val.lVal = static_cast(value); - prop->setProperty("TreeVariant", var); - } else if (type == RT_MVRTree) { - var.m_val.lVal = static_cast(value); - prop->setProperty("TreeVariant", var); - } else if (type == RT_TPRTree) { - var.m_val.lVal = static_cast(value); - prop->setProperty("TreeVariant", var); - } - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexVariant"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTIndexVariant IndexProperty_GetIndexVariant(IndexPropertyH hProp) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_GetIndexVariant", - RT_InvalidIndexVariant); - - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("TreeVariant"); - - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG) { - Error_PushError(RT_Failure, - "Property IndexVariant must be libsupermesh::Tools::VT_LONG", - "IndexProperty_GetIndexVariant"); - return RT_InvalidIndexVariant; - } - - return static_cast(var.m_val.lVal); - } - - // if we didn't get anything, we're returning an error condition - Error_PushError(RT_Failure, - "Property IndexVariant was empty", - "IndexProperty_GetIndexVariant"); - return RT_InvalidIndexVariant; - -} - -SIDX_C_DLL RTError IndexProperty_SetIndexStorage( IndexPropertyH hProp, - RTStorageType value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexStorage", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (!(value == RT_Disk || value == RT_Memory || value == RT_Custom)) { - throw std::runtime_error("Inputted value is not a valid index storage type"); - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexStorageType", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexStorage"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexStorage"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexStorage"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL RTStorageType IndexProperty_GetIndexStorage(IndexPropertyH hProp) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_GetIndexStorage", - RT_InvalidStorageType); - - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexStorageType"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexStorage must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexStorage"); - return RT_InvalidStorageType; - } - - return static_cast(var.m_val.ulVal); - } - - // if we didn't get anything, we're returning an error condition - Error_PushError(RT_Failure, - "Property IndexStorage was empty", - "IndexProperty_GetIndexStorage"); - return RT_InvalidStorageType; - -} - -SIDX_C_DLL RTError IndexProperty_SetIndexCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetIndexCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property IndexCapacity was empty", - "IndexProperty_GetIndexCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetLeafCapacity( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetLeafCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("LeafCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetLeafCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetLeafCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetLeafCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetLeafCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetLeafCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("LeafCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property LeafCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetLeafCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property LeafCapacity was empty", - "IndexProperty_GetLeafCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetPagesize( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetPagesize", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("PageSize", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetPagesize"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetPagesize"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetPagesize"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetPagesize(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetPagesize", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("PageSize"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property PageSize must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetPagesize"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property PageSize was empty", - "IndexProperty_GetPagesize"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetLeafPoolCapacity( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetLeafPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("LeafPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetLeafPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetLeafPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetLeafPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetLeafPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetLeafPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("LeafPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetLeafPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property LeafPoolCapacity was empty", - "IndexProperty_GetLeafPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexPoolCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("IndexPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetIndexPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetIndexPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property IndexPoolCapacity was empty", - "IndexProperty_GetIndexPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetRegionPoolCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetRegionPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("RegionPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetRegionPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetRegionPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetRegionPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetRegionPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetRegionPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("RegionPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetRegionPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property RegionPoolCapacity was empty", - "IndexProperty_GetRegionPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetPointPoolCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetPointPoolCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("PointPoolCapacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetPointPoolCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetPointPoolCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetPointPoolCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetPointPoolCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetPointPoolCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("PointPoolCapacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetPointPoolCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property PointPoolCapacity was empty", - "IndexProperty_GetPointPoolCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetNearMinimumOverlapFactor( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetNearMinimumOverlapFactor", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("NearMinimumOverlapFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetNearMinimumOverlapFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetNearMinimumOverlapFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetNearMinimumOverlapFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetNearMinimumOverlapFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetNearMinimumOverlapFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("NearMinimumOverlapFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetNearMinimumOverlapFactor"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property NearMinimumOverlapFactor was empty", - "IndexProperty_GetNearMinimumOverlapFactor"); - return 0; -} - - -SIDX_C_DLL RTError IndexProperty_SetBufferingCapacity(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetBufferingCapacity", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("Capacity", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetBufferingCapacity"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetBufferingCapacity"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetBufferingCapacity"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetBufferingCapacity(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetBufferingCapacity", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Capacity"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property Capacity must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetBufferingCapacity"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property Capacity was empty", - "IndexProperty_GetBufferingCapacity"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetEnsureTightMBRs( IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetEnsureTightMBRs", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (value > 1 ) { - Error_PushError(RT_Failure, - "EnsureTightMBRs is a boolean value and must be 1 or 0", - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = value != 0; - prop->setProperty("EnsureTightMBRs", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetEnsureTightMBRs"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetEnsureTightMBRs(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetEnsureTightMBRs", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("EnsureTightMBRs"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) { - Error_PushError(RT_Failure, - "Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL", - "IndexProperty_GetEnsureTightMBRs"); - return 0; - } - - return var.m_val.blVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property EnsureTightMBRs was empty", - "IndexProperty_GetEnsureTightMBRs"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetWriteThrough(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetWriteThrough", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (value > 1 ) { - Error_PushError(RT_Failure, - "WriteThrough is a boolean value and must be 1 or 0", - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = value != 0; - prop->setProperty("WriteThrough", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetWriteThrough"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetWriteThrough(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetWriteThrough", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("WriteThrough"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) { - Error_PushError(RT_Failure, - "Property WriteThrough must be libsupermesh::Tools::VT_BOOL", - "IndexProperty_GetWriteThrough"); - return 0; - } - - return var.m_val.blVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property WriteThrough was empty", - "IndexProperty_GetWriteThrough"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetOverwrite(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetOverwrite", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - if (value > 1 ) { - Error_PushError(RT_Failure, - "Overwrite is a boolean value and must be 1 or 0", - "IndexProperty_SetOverwrite"); - return RT_Failure; - } - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = value != 0; - prop->setProperty("Overwrite", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetOverwrite"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetOverwrite"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetOverwrite"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetOverwrite(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetOverwrite", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Overwrite"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) { - Error_PushError(RT_Failure, - "Property Overwrite must be libsupermesh::Tools::VT_BOOL", - "IndexProperty_GetOverwrite"); - return 0; - } - - return var.m_val.blVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property Overwrite was empty", - "IndexProperty_GetOverwrite"); - return 0; -} - - -SIDX_C_DLL RTError IndexProperty_SetFillFactor( IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetFillFactor", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("FillFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFillFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFillFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFillFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetFillFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFillFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FillFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property FillFactor must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetFillFactor"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FillFactor was empty", - "IndexProperty_GetFillFactor"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetSplitDistributionFactor( IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetSplitDistributionFactor", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("SplitDistributionFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetSplitDistributionFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetSplitDistributionFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetSplitDistributionFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetSplitDistributionFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetSplitDistributionFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("SplitDistributionFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetSplitDistributionFactor"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property SplitDistributionFactor was empty", - "IndexProperty_GetSplitDistributionFactor"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetTPRHorizon(IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetTPRHorizon", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("Horizon", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetTPRHorizon"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetTPRHorizon"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetTPRHorizon"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetTPRHorizon(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetTPRHorizon", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("Horizon"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property Horizon must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetTPRHorizon"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property Horizon was empty", - "IndexProperty_GetTPRHorizon"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetReinsertFactor( IndexPropertyH hProp, - double value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetReinsertFactor", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = value; - prop->setProperty("ReinsertFactor", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetReinsertFactor"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetReinsertFactor"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetReinsertFactor"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL double IndexProperty_GetReinsertFactor(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetReinsertFactor", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("ReinsertFactor"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) { - Error_PushError(RT_Failure, - "Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE", - "IndexProperty_GetReinsertFactor"); - return 0; - } - - return var.m_val.dblVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property ReinsertFactor was empty", - "IndexProperty_GetReinsertFactor"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetFileName( IndexPropertyH hProp, - const char* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetFileName", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = STRDUP(value); // not sure if we should copy here - prop->setProperty("FileName", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFileName"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFileName"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFileName"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL char* IndexProperty_GetFileName(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFileName", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FileName"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) { - Error_PushError(RT_Failure, - "Property FileName must be libsupermesh::Tools::VT_PCHAR", - "IndexProperty_GetFileName"); - return NULL; - } - - return STRDUP(var.m_val.pcVal); - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FileName was empty", - "IndexProperty_GetFileName"); - return NULL; -} - - -SIDX_C_DLL RTError IndexProperty_SetFileNameExtensionDat( IndexPropertyH hProp, - const char* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetFileNameExtensionDat", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = STRDUP(value); // not sure if we should copy here - prop->setProperty("FileNameDat", var); - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFileNameExtensionDat"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFileNameExtensionDat"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFileNameExtensionDat"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL char* IndexProperty_GetFileNameExtensionDat(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFileNameExtensionDat", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FileNameDat"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) { - Error_PushError(RT_Failure, - "Property FileNameDat must be libsupermesh::Tools::VT_PCHAR", - "IndexProperty_GetFileNameExtensionDat"); - return NULL; - } - - return STRDUP(var.m_val.pcVal); - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FileNameDat was empty", - "IndexProperty_GetFileNameExtensionDat"); - return NULL; -} - -SIDX_C_DLL RTError IndexProperty_SetFileNameExtensionIdx( IndexPropertyH hProp, - const char* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetFileNameExtensionIdx", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = STRDUP(value); // not sure if we should copy here - prop->setProperty("FileNameIdx", var); - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetFileNameExtensionIdx"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetFileNameExtensionIdx"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetFileNameExtensionIdx"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL char* IndexProperty_GetFileNameExtensionIdx(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetFileNameExtensionIdx", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("FileNameIdx"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PCHAR) { - Error_PushError(RT_Failure, - "Property FileNameIdx must be libsupermesh::Tools::VT_PCHAR", - "IndexProperty_GetFileNameExtensionIdx"); - return NULL; - } - - return STRDUP(var.m_val.pcVal); - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property FileNameIdx was empty", - "IndexProperty_GetFileNameExtensionIdx"); - return NULL; -} - -SIDX_C_DLL RTError IndexProperty_SetCustomStorageCallbacksSize(IndexPropertyH hProp, - uint32_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetCustomStorageCallbacksSize", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = value; - prop->setProperty("CustomStorageCallbacksSize", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetCustomStorageCallbacksSize"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetCustomStorageCallbacksSize"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetCustomStorageCallbacksSize"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL uint32_t IndexProperty_GetCustomStorageCallbacksSize(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetCustomStorageCallbacksSize", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("CustomStorageCallbacksSize"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) { - Error_PushError(RT_Failure, - "Property CustomStorageCallbacksSize must be libsupermesh::Tools::VT_ULONG", - "IndexProperty_GetCustomStorageCallbacksSize"); - return 0; - } - - return var.m_val.ulVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property CustomStorageCallbacksSize was empty", - "IndexProperty_GetCustomStorageCallbacksSize"); - return 0; -} - -SIDX_C_DLL RTError IndexProperty_SetCustomStorageCallbacks( IndexPropertyH hProp, - const void* value) -{ - VALIDATE_POINTER1( hProp, - "IndexProperty_SetCustomStorageCallbacks", - RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - // check if the CustomStorageCallbacksSize is alright, so we can make a copy of the passed in structure - libsupermesh::Tools::Variant varSize; - varSize = prop->getProperty("CustomStorageCallbacksSize"); - if ( varSize.m_val.ulVal != sizeof(libsupermesh::SpatialIndex::StorageManager::CustomStorageManagerCallbacks) ) - { - std::ostringstream ss; - ss << "The supplied storage callbacks size is wrong, expected " - << sizeof(libsupermesh::SpatialIndex::StorageManager::CustomStorageManagerCallbacks) - << ", got " << varSize.m_val.ulVal; - Error_PushError(RT_Failure, - ss.str().c_str(), - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_PVOID; - var.m_val.pvVal = value ? - new libsupermesh::SpatialIndex::StorageManager::CustomStorageManagerCallbacks( - *static_cast(value) - ) - : 0; - prop->setProperty("CustomStorageCallbacks", var); - - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetCustomStorageCallbacks"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL void* IndexProperty_GetCustomStorageCallbacks(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetCustomStorageCallbacks", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("CustomStorageCallbacks"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_PVOID) { - Error_PushError(RT_Failure, - "Property CustomStorageCallbacks must be libsupermesh::Tools::VT_PVOID", - "IndexProperty_GetCustomStorageCallbacks"); - return NULL; - } - - return var.m_val.pvVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property CustomStorageCallbacks was empty", - "IndexProperty_GetCustomStorageCallbacks"); - return NULL; -} - -SIDX_C_DLL RTError IndexProperty_SetIndexID(IndexPropertyH hProp, - int64_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetIndexID", RT_Failure); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = value; - prop->setProperty("IndexIdentifier", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetIndexID"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetIndexID"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetIndexID"); - return RT_Failure; - } - return RT_None; -} - -SIDX_C_DLL int64_t IndexProperty_GetIndexID(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetIndexID", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("IndexIdentifier"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) { - Error_PushError(RT_Failure, - "Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG", - "IndexProperty_GetIndexID"); - return 0; - } - - return var.m_val.llVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property IndexIdentifier was empty", - "IndexProperty_GetIndexID"); - return 0; -} - -SIDX_C_DLL void* SIDX_NewBuffer(size_t length) -{ - return new char[length]; -} - -SIDX_DLL RTError IndexProperty_SetResultSetLimit(IndexPropertyH hProp, int64_t value) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_SetResultSetLimit", RT_Failure); - - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - try - { - libsupermesh::Tools::Variant var; - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = value; - prop->setProperty("ResultSetLimit", var); - } catch (libsupermesh::Tools::Exception& e) - { - Error_PushError(RT_Failure, - e.what().c_str(), - "IndexProperty_SetResultSetLimit"); - return RT_Failure; - } catch (std::exception const& e) - { - Error_PushError(RT_Failure, - e.what(), - "IndexProperty_SetResultSetLimit"); - return RT_Failure; - } catch (...) { - Error_PushError(RT_Failure, - "Unknown Error", - "IndexProperty_SetResultSetLimit"); - return RT_Failure; - } - return RT_None; -} - -SIDX_DLL int64_t IndexProperty_GetResultSetLimit(IndexPropertyH hProp) -{ - VALIDATE_POINTER1(hProp, "IndexProperty_GetResultSetLimit", 0); - libsupermesh::Tools::PropertySet* prop = static_cast(hProp); - - libsupermesh::Tools::Variant var; - var = prop->getProperty("ResultSetLimit"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONGLONG) { - Error_PushError(RT_Failure, - "Property ResultSetLimit must be libsupermesh::Tools::VT_LONGLONG", - "IndexProperty_GetResultSetLimit"); - return 0; - } - - return var.m_val.llVal; - } - - // return nothing for an error - Error_PushError(RT_Failure, - "Property ResultSetLimit was empty", - "IndexProperty_GetResultSetLimit"); - return 0; -} - - -SIDX_C_DLL void SIDX_DeleteBuffer(void* buffer) -{ - delete [] static_cast(buffer); -} - - -SIDX_C_DLL char* SIDX_Version() -{ - - std::ostringstream ot; - -#ifdef SIDX_RELEASE_NAME - ot << SIDX_RELEASE_NAME; -#else - ot << "1.3.2"; -#endif - - std::string out(ot.str()); - return STRDUP(out.c_str()); - -} -IDX_C_END - -#ifdef _WIN32 -# pragma warning(pop) -#endif - - diff --git a/spatialindex-1.8.5/src/libspatialindex.pc.in b/spatialindex-1.8.5/src/libspatialindex.pc.in deleted file mode 100644 index d1a58e6..0000000 --- a/spatialindex-1.8.5/src/libspatialindex.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: libspatialindex -Description: Generic C/C++ library for spatial indexing -Requires: -Version: @PACKAGE_VERSION@ -Libs: -L@libdir@ -Cflags: -I${includedir}/spatialindex @CFLAGS@ @CPPFLAGS@ - diff --git a/spatialindex-1.8.5/src/mvrtree/Index.cc b/spatialindex-1.8.5/src/mvrtree/Index.cc deleted file mode 100644 index 9d121ef..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Index.cc +++ /dev/null @@ -1,442 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "MVRTree.h" -#include "Node.h" -#include "Leaf.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::MVRTree; - -Index::~Index() -{ -} - -Index::Index(libsupermesh::SpatialIndex::MVRTree::MVRTree* pTree, id_type id, uint32_t level) : Node(pTree, id, level, pTree->m_indexCapacity) -{ -} - -NodePtr Index::chooseSubtree(const TimeRegion& mbr, uint32_t insertionLevel, std::stack& pathBuffer) -{ - if (m_level == insertionLevel) return NodePtr(this, &(m_pTree->m_indexPool)); - - pathBuffer.push(m_identifier); - - uint32_t child = 0; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - child = findLeastEnlargement(mbr); - break; - case RV_RSTAR: - if (m_level == 1) - { - // if this node points to leaves... - child = findLeastOverlap(mbr); - } - else - { - child = findLeastEnlargement(mbr); - } - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::chooseSubtree: Tree variant not supported."); - } - assert (child != std::numeric_limits::max()); - - NodePtr n = m_pTree->readNode(m_pIdentifier[child]); - NodePtr ret = n->chooseSubtree(mbr, insertionLevel, pathBuffer); - assert(n.unique()); - if (ret.get() == n.get()) n.relinquish(); - - return ret; -} - -NodePtr Index::findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // check live nodes only. - if (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max()) continue; - //if (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max() || - // m_ptrMBR[cChild]->m_startTime > mbr.m_startTime) continue; - - if (m_ptrMBR[cChild]->containsRegion(mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findLeaf(mbr, id, pathBuffer); - if (n.get() == l.get()) n.relinquish(); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} - -void Index::split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_indexPool.acquire(); - pRight = m_pTree->m_indexPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Index(m_pTree, m_identifier, m_level), &(m_pTree->m_indexPool)); - if (pRight.get() == 0) pRight = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(0, 0, *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(0, 0, *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - } -} - -uint32_t Index::findLeastEnlargement(const TimeRegion& r) const -{ - double area = std::numeric_limits::max(); - uint32_t best = std::numeric_limits::max(); - - TimeRegionPtr t = m_pTree->m_regionPool.acquire(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // if this child is already dead do not consider it. - if (m_ptrMBR[cChild]->m_endTime <= r.m_startTime) continue; - - m_ptrMBR[cChild]->getCombinedRegion(*t, r); - - double a = m_ptrMBR[cChild]->getArea(); - double enl = t->getArea() - a; - - if (enl < area) - { - area = enl; - best = cChild; - } - else if ( - enl > area - std::numeric_limits::epsilon() && - enl < area + std::numeric_limits::epsilon()) - { - if (a < m_ptrMBR[best]->getArea()) best = cChild; - } - } - -#ifndef NDEBUG - if (best == std::numeric_limits::max()) - { - std::ostringstream s; - s << "findLeastEnlargement: All entries of node " << m_identifier << " are dead."; - throw libsupermesh::Tools::IllegalStateException(s.str()); - } -#endif - - return best; -} - -uint32_t Index::findLeastOverlap(const TimeRegion& r) const -{ - OverlapEntry** entries = new OverlapEntry*[m_children]; - - double leastOverlap = std::numeric_limits::max(); - double me = std::numeric_limits::max(); - OverlapEntry* best = 0; - uint32_t cLiveEntries = 0; - - // find combined region and enlargement of every entry and store it. - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_ptrMBR[cChild]->m_endTime <= r.m_startTime) continue; - - try - { - entries[cLiveEntries] = new OverlapEntry(); - } - catch (...) - { - for (uint32_t i = 0; i < cLiveEntries; ++i) delete entries[i]; - delete[] entries; - throw; - } - - entries[cLiveEntries]->m_index = cChild; - entries[cLiveEntries]->m_original = m_ptrMBR[cChild]; - entries[cLiveEntries]->m_combined = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->getCombinedRegion(*(entries[cLiveEntries]->m_combined), r); - entries[cLiveEntries]->m_oa = entries[cLiveEntries]->m_original->getArea(); - entries[cLiveEntries]->m_ca = entries[cLiveEntries]->m_combined->getArea(); - entries[cLiveEntries]->m_enlargement = entries[cLiveEntries]->m_ca - entries[cLiveEntries]->m_oa; - - if (entries[cLiveEntries]->m_enlargement < me) - { - me = entries[cLiveEntries]->m_enlargement; - best = entries[cLiveEntries]; - } - else if (entries[cLiveEntries]->m_enlargement == me && entries[cLiveEntries]->m_oa < best->m_oa) - { - best = entries[cLiveEntries]; - } - ++cLiveEntries; - } - -#ifndef NDEBUG - if (cLiveEntries == 0) - { - std::ostringstream s; - s << "findLeastOverlap: All entries of node " << m_identifier << " are dead."; - throw libsupermesh::Tools::IllegalStateException(s.str()); - } -#endif - - if (me < -std::numeric_limits::epsilon() || me > std::numeric_limits::epsilon()) - { - uint32_t cIterations; - - if (cLiveEntries > m_pTree->m_nearMinimumOverlapFactor) - { - // sort entries in increasing order of enlargement. - ::qsort(entries, cLiveEntries, - sizeof(OverlapEntry*), - OverlapEntry::compareEntries); - assert(entries[0]->m_enlargement <= entries[m_children - 1]->m_enlargement); - - cIterations = m_pTree->m_nearMinimumOverlapFactor; - } - else - { - cIterations = cLiveEntries; - } - - // calculate overlap of most important original entries (near minimum overlap cost). - for (uint32_t cIndex = 0; cIndex < cIterations; ++cIndex) - { - double dif = 0.0; - OverlapEntry* e = entries[cIndex]; - - for (uint32_t cChild = 0; cChild < cLiveEntries; ++cChild) - { - if (cIndex != cChild) - { - double f = e->m_combined->getIntersectingArea(*(entries[cChild]->m_original)); - if (f != 0.0) dif += f - e->m_original->getIntersectingArea(*(entries[cChild]->m_original)); - } - } // for (cChild) - - if (dif < leastOverlap) - { - leastOverlap = dif; - best = e; - } - else if (dif == leastOverlap) - { - if (e->m_enlargement == best->m_enlargement) - { - // keep the one with least area. - if (e->m_original->getArea() < best->m_original->getArea()) best = e; - } - else - { - // keep the one with least enlargement. - if (e->m_enlargement < best->m_enlargement) best = e; - } - } - } // for (cIndex) - } - - uint32_t ret = best->m_index; - - for (uint32_t cChild = 0; cChild < cLiveEntries; ++cChild) - { - delete entries[cChild]; - } - delete[] entries; - - return ret; -} - -void Index::adjustTree(Node* n, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n->m_identifier) break; - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - bool bContained = m_nodeMBR.containsRegion(n->m_nodeMBR); - bool bTouches = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool bRecompute = (! bContained || (bTouches && m_pTree->m_bTightMBRs)); - - // we should not adjust time here - double st = m_ptrMBR[child]->m_startTime; - double en = m_ptrMBR[child]->m_endTime; - *(m_ptrMBR[child]) = n->m_nodeMBR; - m_ptrMBR[child]->m_startTime = st; - m_ptrMBR[child]->m_endTime = en; - - if (bRecompute) - { - // no need to update times here. The inserted MBR is younger than all nodes. - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - m_pTree->writeNode(this); - - if (bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} - -void Index::adjustTree(Node* n, Node* nn, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child, child2 = m_capacity; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == nn->m_identifier) child2 = child; - if (m_pIdentifier[child] == n->m_identifier) break; - } - - if (child2 == m_capacity) - { - for (child2 = child + 1; child2 < m_children; ++child2) - { - if (m_pIdentifier[child2] == nn->m_identifier) break; - } - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - // 3. the SIBLING MBR is touching. - bool b1 = m_nodeMBR.containsRegion(n->m_nodeMBR); - bool b2 = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool b3 = m_nodeMBR.touchesRegion(*(m_ptrMBR[child2])); - bool bRecompute = (! b1) || ((b2 || b3) && m_pTree->m_bTightMBRs); - - // we should not adjust time here - double st = m_ptrMBR[child]->m_startTime; - double en = m_ptrMBR[child]->m_endTime; - *(m_ptrMBR[child]) = n->m_nodeMBR; - m_ptrMBR[child]->m_startTime = st; - m_ptrMBR[child]->m_endTime = en; - - st = m_ptrMBR[child2]->m_startTime; - en = m_ptrMBR[child2]->m_endTime; - *(m_ptrMBR[child2]) = nn->m_nodeMBR; - m_ptrMBR[child2]->m_startTime = st; - m_ptrMBR[child2]->m_endTime = en; - - if (bRecompute) - { - // no need to update times here. The inserted MBR is younger than all nodes. - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - m_pTree->writeNode(this); - - if (bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} diff --git a/spatialindex-1.8.5/src/mvrtree/Index.h b/spatialindex-1.8.5/src/mvrtree/Index.h deleted file mode 100644 index 682359c..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Index.h +++ /dev/null @@ -1,86 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class Index : public Node - { - public: - virtual ~Index(); - - private: - Index(MVRTree* pTree, id_type id, uint32_t level); - - virtual NodePtr chooseSubtree(const TimeRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& left, NodePtr& right, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - - uint32_t findLeastEnlargement(const TimeRegion&) const; - uint32_t findLeastOverlap(const TimeRegion&) const; - - void adjustTree(Node*, std::stack&); - void adjustTree(Node* n, Node* nn, std::stack& pathBuffer); - - class OverlapEntry - { - public: - uint32_t m_index; - double m_enlargement; - TimeRegionPtr m_original; - TimeRegionPtr m_combined; - double m_oa; - double m_ca; - - static int compareEntries(const void* pv1, const void* pv2) - { - OverlapEntry* pe1 = * (OverlapEntry**) pv1; - OverlapEntry* pe2 = * (OverlapEntry**) pv2; - - if (pe1->m_enlargement < pe2->m_enlargement) return -1; - if (pe1->m_enlargement > pe2->m_enlargement) return 1; - return 0; - } - }; // OverlapEntry - - friend class MVRTree; - friend class Node; - }; // Index - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/Leaf.cc b/spatialindex-1.8.5/src/mvrtree/Leaf.cc deleted file mode 100644 index 82a0951..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Leaf.cc +++ /dev/null @@ -1,116 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "MVRTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::MVRTree; - -Leaf::~Leaf() -{ -} - -Leaf::Leaf(libsupermesh::SpatialIndex::MVRTree::MVRTree* pTree, id_type id): Node(pTree, id, 0, pTree->m_leafCapacity) -{ -} - -NodePtr Leaf::chooseSubtree(const TimeRegion&, uint32_t, std::stack&) -{ - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - return NodePtr(this, &(m_pTree->m_leafPool)); -} - -NodePtr Leaf::findLeaf(const TimeRegion& mbr, id_type id, std::stack&) -{ - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - if (m_pIdentifier[cChild] == id && static_cast(mbr) == static_cast(*(m_ptrMBR[cChild]))) - return NodePtr(this, &(m_pTree->m_leafPool)); - } - - return NodePtr(); -} - -void Leaf::split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2, mbr2, id2, bInsertMbr2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Leaf::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_leafPool.acquire(); - pRight = m_pTree->m_leafPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - if (pRight.get() == 0) pRight = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(m_pDataLength[g1[cIndex]], m_pData[g1[cIndex]], *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g1[cIndex]] = 0; - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(m_pDataLength[g2[cIndex]], m_pData[g2[cIndex]], *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g2[cIndex]] = 0; - } -} diff --git a/spatialindex-1.8.5/src/mvrtree/Leaf.h b/spatialindex-1.8.5/src/mvrtree/Leaf.h deleted file mode 100644 index 9a170da..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Leaf.h +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class Leaf : public Node - { - public: - virtual ~Leaf(); - - private: - Leaf(MVRTree* pTree, id_type id); - - virtual NodePtr chooseSubtree(const TimeRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& left, NodePtr& right, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - - friend class MVRTree; - friend class Node; - }; // Leaf - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/MVRTree.cc b/spatialindex-1.8.5/src/mvrtree/MVRTree.cc deleted file mode 100644 index 8a41480..0000000 --- a/spatialindex-1.8.5/src/mvrtree/MVRTree.cc +++ /dev/null @@ -1,1365 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "Node.h" -#include "Leaf.h" -#include "Index.h" -#include "MVRTree.h" - -#include - -using namespace libsupermesh::SpatialIndex::MVRTree; - -libsupermesh::SpatialIndex::MVRTree::Data::Data(uint32_t len, byte* pData, TimeRegion& r, id_type id) - : m_id(id), m_region(r), m_pData(0), m_dataLength(len) -{ - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, pData, m_dataLength); - } -} - -libsupermesh::SpatialIndex::MVRTree::Data::~Data() -{ - delete[] m_pData; -} - -libsupermesh::SpatialIndex::MVRTree::Data* libsupermesh::SpatialIndex::MVRTree::Data::clone() -{ - return new Data(m_dataLength, m_pData, m_region, m_id); -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::MVRTree::Data::getIdentifier() const -{ - return m_id; -} - -void libsupermesh::SpatialIndex::MVRTree::Data::getShape(IShape** out) const -{ - *out = new TimeRegion(m_region); -} - -void libsupermesh::SpatialIndex::MVRTree::Data::getData(uint32_t& len, byte** data) const -{ - len = m_dataLength; - *data = 0; - - if (m_dataLength > 0) - { - *data = new byte[m_dataLength]; - memcpy(*data, m_pData, m_dataLength); - } -} - -uint32_t libsupermesh::SpatialIndex::MVRTree::Data::getByteArraySize() -{ - return - sizeof(id_type) + - sizeof(uint32_t) + - m_dataLength + - m_region.getByteArraySize(); -} - -void libsupermesh::SpatialIndex::MVRTree::Data::loadFromByteArray(const byte* ptr) -{ - memcpy(&m_id, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - delete[] m_pData; - m_pData = 0; - - memcpy(&m_dataLength, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, ptr, m_dataLength); - ptr += m_dataLength; - } - - m_region.loadFromByteArray(ptr); -} - -void libsupermesh::SpatialIndex::MVRTree::Data::storeToByteArray(byte** data, uint32_t& len) -{ - // it is thread safe this way. - uint32_t regionsize; - byte* regiondata = 0; - m_region.storeToByteArray(®iondata, regionsize); - - len = sizeof(id_type) + sizeof(uint32_t) + m_dataLength + regionsize; - - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_id, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_dataLength, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - memcpy(ptr, m_pData, m_dataLength); - ptr += m_dataLength; - } - - memcpy(ptr, regiondata, regionsize); - delete[] regiondata; - // ptr += regionsize; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::MVRTree::returnMVRTree(libsupermesh::SpatialIndex::IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::SpatialIndex::ISpatialIndex* si = new libsupermesh::SpatialIndex::MVRTree::MVRTree(sm, ps); - return si; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::MVRTree::createNewMVRTree( - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - MVRTreeVariant rv, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = fillFactor; - ps.setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = indexCapacity; - ps.setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = leafCapacity; - ps.setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = dimension; - ps.setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = rv; - ps.setProperty("TreeVariant", var); - - ISpatialIndex* ret = returnMVRTree(sm, ps); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var = ps.getProperty("IndexIdentifier"); - indexIdentifier = var.m_val.llVal; - - return ret; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::MVRTree::loadMVRTree(IStorageManager& sm, id_type indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = indexIdentifier; - ps.setProperty("IndexIdentifier", var); - - return returnMVRTree(sm, ps); -} - -libsupermesh::SpatialIndex::MVRTree::MVRTree::MVRTree(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_pStorageManager(&sm), - m_headerID(StorageManager::NewPage), - m_treeVariant(RV_RSTAR), - m_fillFactor(0.7), - m_indexCapacity(100), - m_leafCapacity(100), - m_nearMinimumOverlapFactor(32), - m_splitDistributionFactor(0.4), - m_reinsertFactor(0.3), - m_strongVersionOverflow(0.8), - //m_strongVersionUnderflow(0.2), - m_versionUnderflow(0.3), - m_dimension(2), - m_bTightMBRs(true), - m_bHasVersionCopied(false), - m_currentTime(0.0), - m_pointPool(500), - m_regionPool(1000), - m_indexPool(100), - m_leafPool(100) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - libsupermesh::Tools::Variant var = ps.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType == libsupermesh::Tools::VT_LONGLONG) m_headerID = var.m_val.llVal; - else if (var.m_varType == libsupermesh::Tools::VT_LONG) m_headerID = var.m_val.lVal; - // for backward compatibility only. - else throw libsupermesh::Tools::IllegalArgumentException("MVRTree: Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - initOld(ps); - } - else - { - initNew(ps); - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = m_headerID; - ps.setProperty("IndexIdentifier", var); - } -} - -libsupermesh::SpatialIndex::MVRTree::MVRTree::~MVRTree() -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - storeHeader(); -} - -// -// ISpatialIndex interface -// - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&shape); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IInterval interface."); - if (ti->getLowerBound() < m_currentTime) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape start time is older than tree current time."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - // convert the shape into a TimeRegion (R-Trees index regions only; i.e., approximations of the shapes). - Region mbrold; - shape.getMBR(mbrold); - - TimeRegionPtr mbr = m_regionPool.acquire(); - mbr->makeDimension(mbrold.m_dimension); - - memcpy(mbr->m_pLow, mbrold.m_pLow, mbrold.m_dimension * sizeof(double)); - memcpy(mbr->m_pHigh, mbrold.m_pHigh, mbrold.m_dimension * sizeof(double)); - mbr->m_startTime = ti->getLowerBound(); - mbr->m_endTime = std::numeric_limits::max(); - - byte* buffer = 0; - - if (len > 0) - { - buffer = new byte[len]; - memcpy(buffer, pData, len); - } - - insertData_impl(len, buffer, *mbr, id); - // the buffer is stored in the tree. Do not delete here. -} - -bool libsupermesh::SpatialIndex::MVRTree::MVRTree::deleteData(const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("deleteData: Shape has the wrong number of dimensions."); - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&shape); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("deleteData: Shape does not support the libsupermesh::Tools::IInterval interface."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - Region mbrold; - shape.getMBR(mbrold); - - TimeRegionPtr mbr = m_regionPool.acquire(); - mbr->makeDimension(mbrold.m_dimension); - - memcpy(mbr->m_pLow, mbrold.m_pLow, mbrold.m_dimension * sizeof(double)); - memcpy(mbr->m_pHigh, mbrold.m_pHigh, mbrold.m_dimension * sizeof(double)); - mbr->m_startTime = ti->getLowerBound(); - mbr->m_endTime = ti->getUpperBound(); - - bool ret = deleteData_impl(*mbr, id); - - return ret; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::containsWhatQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsWhatQuery: Shape has the wrong number of dimensions."); - rangeQuery(ContainmentQuery, query, v); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::intersectsWithQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsWithQuery: Shape has the wrong number of dimensions."); - rangeQuery(IntersectionQuery, query, v); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::pointLocationQuery(const Point& query, IVisitor& v) -{ - if (query.m_dimension != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape has the wrong number of dimensions."); - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&query); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape does not support the libsupermesh::Tools::IInterval interface."); - TimeRegion r(query, query, *ti); - rangeQuery(IntersectionQuery, r, v); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::nearestNeighborQuery(uint32_t, const IShape&, IVisitor&, INearestNeighborComparator&) -{ - throw libsupermesh::Tools::IllegalStateException("nearestNeighborQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - NNComparator nnc; - nearestNeighborQuery(k, query, v, nnc); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::selfJoinQuery(const IShape&, IVisitor&) -{ - throw libsupermesh::Tools::IllegalStateException("selfJoinQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::queryStrategy(IQueryStrategy& qs) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - id_type next = m_roots[m_roots.size() - 1].m_id; - bool hasNext = true; - - while (hasNext) - { - NodePtr n = readNode(next); - qs.getNextEntry(*n, next, hasNext); - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::getIndexProperties(libsupermesh::Tools::PropertySet& out) const -{ - libsupermesh::Tools::Variant var; - - // dimension - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_dimension; - out.setProperty("Dimension", var); - - // index capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexCapacity; - out.setProperty("IndexCapacity", var); - - // leaf capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafCapacity; - out.setProperty("LeafCapacity", var); - - // Tree variant - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = m_treeVariant; - out.setProperty("TreeVariant", var); - - // fill factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_fillFactor; - out.setProperty("FillFactor", var); - - // near minimum overlap factor - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_nearMinimumOverlapFactor; - out.setProperty("NearMinimumOverlapFactor", var); - - // split distribution factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_splitDistributionFactor; - out.setProperty("SplitDistributionFactor", var); - - // reinsert factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_reinsertFactor; - out.setProperty("ReinsertFactor", var); - - // tight MBRs - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = m_bTightMBRs; - out.setProperty("EnsureTightMBRs", var); - - // index pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexPool.getCapacity(); - out.setProperty("IndexPoolCapacity", var); - - // leaf pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafPool.getCapacity(); - out.setProperty("LeafPoolCapacity", var); - - // region pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_regionPool.getCapacity(); - out.setProperty("RegionPoolCapacity", var); - - // point pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_pointPool.getCapacity(); - out.setProperty("PointPoolCapacity", var); - - // strong version overflow - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_strongVersionOverflow; - out.setProperty("StrongVersionOverflow", var); - - // strong version underflow - //var.m_varType = libsupermesh::Tools::VT_DOUBLE; - //var.m_val.dblVal = m_strongVersionUnderflow; - //out.setProperty("StrongVersionUnderflow", var); - - // weak version underflow - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_versionUnderflow; - out.setProperty("VersionUnderflow", var); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::addCommand(ICommand* pCommand, CommandType ct) -{ - switch (ct) - { - case CT_NODEREAD: - m_readNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEWRITE: - m_writeNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEDELETE: - m_deleteNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - } -} - -bool libsupermesh::SpatialIndex::MVRTree::MVRTree::isIndexValid() -{ - bool ret = true; - std::stack st; - std::set visitedEntries; - uint32_t degenerateEntries = 0; - - for (uint32_t cRoot = 0; cRoot < m_roots.size(); ++cRoot) - { - NodePtr root = readNode(m_roots[cRoot].m_id); - - if (root->m_level != m_stats.m_treeHeight[cRoot] - 1) - { - std::cerr << "Invalid tree height." << std::endl; - return false; - } - - ValidateEntry e(0, root->m_nodeMBR, root); - e.m_bIsDead = (root->m_nodeMBR.m_endTime < std::numeric_limits::max()) ? true : false; - st.push(e); - } - - while (! st.empty()) - { - ValidateEntry e = st.top(); st.pop(); - - std::set::iterator itSet = visitedEntries.find(e.m_pNode->m_identifier); - if (itSet == visitedEntries.end()) - { - visitedEntries.insert(e.m_pNode->m_identifier); - if (e.m_pNode->m_nodeMBR.m_startTime == e.m_pNode->m_nodeMBR.m_endTime) ++degenerateEntries; - } - - TimeRegion tmpRegion; - tmpRegion = m_infiniteRegion; - - for (uint32_t cDim = 0; cDim < tmpRegion.m_dimension; ++cDim) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - tmpRegion.m_pLow[cDim] = std::min(tmpRegion.m_pLow[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pLow[cDim]); - tmpRegion.m_pHigh[cDim] = std::max(tmpRegion.m_pHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - - tmpRegion.m_startTime = e.m_pNode->m_nodeMBR.m_startTime; - tmpRegion.m_endTime = e.m_pNode->m_nodeMBR.m_endTime; - if (! (tmpRegion == e.m_pNode->m_nodeMBR)) - { - std::cerr << "Invalid parent information." << std::endl; - ret = false; - } - - if (! e.m_bIsDead) - { - tmpRegion.m_startTime = e.m_parentMBR.m_startTime; - tmpRegion.m_endTime = e.m_parentMBR.m_endTime; - if (! (tmpRegion == e.m_parentMBR)) - { - std::cerr << "Error in parent (Node id: " << e.m_pNode->m_identifier << ", Parent id: " << e.m_parentID << ")." << std::endl; - ret = false; - } - } - - if (e.m_pNode->m_level != 0) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - NodePtr ptrN = readNode(e.m_pNode->m_pIdentifier[cChild]); - - bool bIsDead = - (e.m_pNode->m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max() || e.m_bIsDead) ? true : false; - - // if the parent says that this child is dead, force it dead since - // this information is not propagated for efficiency and is inconsistent. - if (bIsDead) ptrN->m_nodeMBR.m_endTime = e.m_pNode->m_ptrMBR[cChild]->m_endTime; - - ValidateEntry tmpEntry(e.m_pNode->m_identifier, *(e.m_pNode->m_ptrMBR[cChild]), ptrN); - tmpEntry.m_bIsDead = bIsDead; - st.push(tmpEntry); - } - } - } - - //std::cerr << "Total accessible nodes: " << visitedEntries.size() << std::endl; - //std::cerr << "Degenerate nodes: " << degenerateEntries << std::endl; - - return ret; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::getStatistics(IStatistics** out) const -{ - *out = new Statistics(m_stats); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::initNew(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG || (var.m_val.lVal != RV_LINEAR && var.m_val.lVal != RV_QUADRATIC && var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of MVRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - //((m_treeVariant == RV_LINEAR || m_treeVariant == RV_QUADRATIC) && var.m_val.dblVal > 0.5) || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0) for RSTAR, (0.0, 0.5) for LINEAR and QUADRATIC"); - - m_fillFactor = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 10) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 10"); - - m_indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 10) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 10"); - - m_leafCapacity = var.m_val.ulVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 1 || var.m_val.ulVal > m_indexCapacity || var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be greater than 1"); - - m_dimension = var.m_val.ulVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initNew: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - // strong version overflow - var = ps.getProperty("StrongVersionOverflow"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property StrongVersionOverflow must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_strongVersionOverflow = var.m_val.dblVal; - } - - // strong version underflow - //var = ps.getProperty("StrongVersionUnderflow"); - //if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - //{ - // if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || - // var.m_val.dblVal <= 0.0 || - // var.m_val.dblVal >= 1.0) throw libsupermesh::Tools::IllegalArgumentException("Property StrongVersionUnderflow must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - // m_strongVersionUnderflow = var.m_val.dblVal; - //} - - // weak version underflow - var = ps.getProperty("VersionUnderflow"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property VersionUnderflow must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_versionUnderflow = var.m_val.dblVal; - } - - m_infiniteRegion.makeInfinite(m_dimension); - - m_stats.m_treeHeight.push_back(1); - m_stats.m_nodesInLevel.push_back(1); - - Leaf root(this, -1); - root.m_nodeMBR.m_startTime = 0.0; - root.m_nodeMBR.m_endTime = std::numeric_limits::max(); - writeNode(&root); - m_roots.push_back(RootEntry(root.m_identifier, root.m_nodeMBR.m_startTime, root.m_nodeMBR.m_endTime)); - - storeHeader(); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::initOld(libsupermesh::Tools::PropertySet& ps) -{ - loadHeader(); - - // only some of the properties may be changed. - // the rest are just ignored. - - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_LONG || (var.m_val.lVal != RV_LINEAR && var.m_val.lVal != RV_QUADRATIC && var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of MVRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 1 || var.m_val.ulVal > m_indexCapacity || var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE ||var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::storeHeader() -{ - const uint32_t headerSize = - sizeof(uint32_t) + // size of m_roots - static_cast(m_roots.size()) - * (sizeof(id_type) + 2 * sizeof(double)) + // m_roots - sizeof(MVRTreeVariant) + // m_treeVariant - sizeof(double)+ // m_fillFactor - sizeof(uint32_t) + // m_indexCapacity - sizeof(uint32_t) + // m_leafCapacity - sizeof(uint32_t) + // m_nearMinimumOverlapFactor - sizeof(double) + // m_splitDistributionFactor - sizeof(double) + // m_reinsertFactor - sizeof(uint32_t) + // m_dimension - sizeof(byte) + // m_bTightMBRs - sizeof(uint32_t) + // m_stats.m_nodes - sizeof(uint64_t) + // m_stats.m_totalData - sizeof(uint32_t) + // m_stats.m_deadIndexNodes - sizeof(uint32_t) + // m_stats.m_deadLeafNodes - sizeof(uint64_t) + // m_stats.m_data - sizeof(uint32_t) + // size of m_stats.m_treeHeight - static_cast(m_stats.m_treeHeight.size()) - * sizeof(uint32_t) + // m_stats.m_treeHeight - sizeof(double) + // m_strongVersionOverflow - //sizeof(double) + // m_strongVersionUnderflow - sizeof(double) + // m_versionUnderflow - sizeof(double) + // m_currentTime - sizeof(uint32_t) + // m_nodesInLevel size - static_cast(m_stats.m_nodesInLevel.size()) - * sizeof(uint32_t); // m_nodesInLevel values - - byte* header = new byte[headerSize]; - byte* ptr = header; - - uint32_t u32I = static_cast(m_roots.size()); - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (size_t cIndex = 0; cIndex < m_roots.size(); ++cIndex) - { - RootEntry& e = m_roots[cIndex]; - memcpy(ptr, &(e.m_id), sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &(e.m_startTime), sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(e.m_endTime), sizeof(double)); - ptr += sizeof(double); - } - - memcpy(ptr, &m_treeVariant, sizeof(MVRTreeVariant)); - ptr += sizeof(MVRTreeVariant); - memcpy(ptr, &m_fillFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_indexCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_leafCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_nearMinimumOverlapFactor, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_splitDistributionFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_reinsertFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - byte c = (byte) m_bTightMBRs; - memcpy(ptr, &c, sizeof(byte)); - ptr += sizeof(byte); - memcpy(ptr, &(m_stats.m_u32Nodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u64TotalData), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(ptr, &(m_stats.m_u32DeadIndexNodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u32DeadLeafNodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u64Data), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - - u32I = static_cast(m_stats.m_treeHeight.size()); - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (size_t cIndex = 0; cIndex < m_stats.m_treeHeight.size(); ++cIndex) - { - u32I = m_stats.m_treeHeight[cIndex]; - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - memcpy(ptr, &m_strongVersionOverflow, sizeof(double)); - ptr += sizeof(double); - //memcpy(ptr, &m_strongVersionUnderflow, sizeof(double)); - //ptr += sizeof(double); - memcpy(ptr, &m_versionUnderflow, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_currentTime, sizeof(double)); - ptr += sizeof(double); - - u32I = static_cast(m_stats.m_nodesInLevel.size()); - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (size_t cLevel = 0; cLevel < m_stats.m_nodesInLevel.size(); ++cLevel) - { - u32I = m_stats.m_nodesInLevel[cLevel]; - memcpy(ptr, &u32I, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - m_pStorageManager->storeByteArray(m_headerID, headerSize, header); - - delete[] header; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::loadHeader() -{ - uint32_t headerSize; - byte* header = 0; - m_pStorageManager->loadByteArray(m_headerID, headerSize, &header); - - byte* ptr = header; - - uint32_t rootsSize; - memcpy(&rootsSize, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cIndex = 0; cIndex < rootsSize; ++cIndex) - { - RootEntry e; - memcpy(&(e.m_id), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&(e.m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(e.m_endTime), ptr, sizeof(double)); - ptr += sizeof(double); - m_roots.push_back(e); - } - - memcpy(&m_treeVariant, ptr, sizeof(MVRTreeVariant)); - ptr += sizeof(MVRTreeVariant); - memcpy(&m_fillFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_indexCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_leafCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_nearMinimumOverlapFactor, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_splitDistributionFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_reinsertFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - byte c; - memcpy(&c, ptr, sizeof(byte)); - m_bTightMBRs = (c != 0); - ptr += sizeof(byte); - memcpy(&(m_stats.m_u32Nodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u64TotalData), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(&(m_stats.m_u32DeadIndexNodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u32DeadLeafNodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u64Data), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - - uint32_t treeHeightSize; - memcpy(&treeHeightSize, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cIndex = 0; cIndex < treeHeightSize; ++cIndex) - { - uint32_t u32I; - memcpy(&u32I, ptr, sizeof(uint32_t)); - m_stats.m_treeHeight.push_back(u32I); - ptr += sizeof(uint32_t); - } - - memcpy(&m_strongVersionOverflow, ptr, sizeof(double)); - ptr += sizeof(double); - //memcpy(&m_strongVersionUnderflow, ptr, sizeof(double)); - //ptr += sizeof(double); - memcpy(&m_versionUnderflow, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_currentTime, ptr, sizeof(double)); - ptr += sizeof(double); - - uint32_t nodesInLevelSize; - memcpy(&nodesInLevelSize, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < nodesInLevelSize; ++cLevel) - { - uint32_t u32I; - memcpy(&u32I, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - m_stats.m_nodesInLevel.push_back(u32I); - } - - delete[] header; -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id) -{ - assert(mbr.getDimension() == m_dimension); - assert(m_currentTime <= mbr.m_startTime); - - std::stack pathBuffer; - m_currentTime = mbr.m_startTime; - - NodePtr root = readNode(m_roots[m_roots.size() - 1].m_id); - NodePtr l = root->chooseSubtree(mbr, 0, pathBuffer); - - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mbr, id, pathBuffer, m_infiniteRegion, -1, false); - - ++(m_stats.m_u64Data); - ++(m_stats.m_u64TotalData); -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, uint32_t level) -{ - assert(mbr.getDimension() == m_dimension); - - std::stack pathBuffer; - - NodePtr root = readNode(m_roots[m_roots.size() - 1].m_id); - NodePtr l = root->chooseSubtree(mbr, level, pathBuffer); - - assert(l->m_level == level); - - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mbr, id, pathBuffer, m_infiniteRegion, -1, false); -} - -bool libsupermesh::SpatialIndex::MVRTree::MVRTree::deleteData_impl(const TimeRegion& mbr, id_type id) -{ - assert(mbr.m_dimension == m_dimension); - - m_currentTime = mbr.m_endTime; - - std::stack pathBuffer; - NodePtr root = readNode(m_roots[m_roots.size() - 1].m_id); - NodePtr l = root->findLeaf(mbr, id, pathBuffer); - - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - - if (l.get() != 0) - { - l->deleteData(id, mbr.m_endTime, pathBuffer); - --(m_stats.m_u64Data); - return true; - } - - return false; -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::MVRTree::MVRTree::writeNode(Node* n) -{ - byte* buffer; - uint32_t dataLength; - n->storeToByteArray(&buffer, dataLength); - - id_type page; - if (n->m_identifier < 0) page = StorageManager::NewPage; - else page = n->m_identifier; - - try - { - m_pStorageManager->storeByteArray(page, dataLength, buffer); - delete[] buffer; - } - catch (InvalidPageException& e) - { - delete[] buffer; - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("writeNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - if (n->m_identifier < 0) - { - n->m_identifier = page; - ++(m_stats.m_u32Nodes); - } - - ++(m_stats.m_u64Writes); - - for (size_t cIndex = 0; cIndex < m_writeNodeCommands.size(); ++cIndex) - { - m_writeNodeCommands[cIndex]->execute(*n); - } - - return page; -} - -libsupermesh::SpatialIndex::MVRTree::NodePtr libsupermesh::SpatialIndex::MVRTree::MVRTree::readNode(id_type id) -{ - uint32_t dataLength; - byte* buffer; - - try - { - m_pStorageManager->loadByteArray(id, dataLength, &buffer); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("readNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - try - { - uint32_t nodeType; - memcpy(&nodeType, buffer, sizeof(uint32_t)); - - NodePtr n; - - if (nodeType == PersistentIndex) n = m_indexPool.acquire(); - else if (nodeType == PersistentLeaf) n = m_leafPool.acquire(); - else throw libsupermesh::Tools::IllegalStateException("readNode: failed reading the correct node type information"); - - if (n.get() == 0) - { - if (nodeType == PersistentIndex) n = NodePtr(new Index(this, -1, 0), &m_indexPool); - else if (nodeType == PersistentLeaf) n = NodePtr(new Leaf(this, -1), &m_leafPool); - } - - //n->m_pTree = this; - n->m_identifier = id; - n->loadFromByteArray(buffer); - - ++(m_stats.m_u64Reads); - - for (size_t cIndex = 0; cIndex < m_readNodeCommands.size(); ++cIndex) - { - m_readNodeCommands[cIndex]->execute(*n); - } - - delete[] buffer; - return n; - } - catch (...) - { - delete[] buffer; - throw; - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::deleteNode(Node* n) -{ - try - { - m_pStorageManager->deleteByteArray(n->m_identifier); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("deleteNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - --(m_stats.m_u32Nodes); - - for (size_t cIndex = 0; cIndex < m_deleteNodeCommands.size(); ++cIndex) - { - m_deleteNodeCommands[cIndex]->execute(*n); - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v) -{ - // any shape that implements IInterval and IShape, can be used here. - // FIXME: I am not using ITimeShape yet, even though I should. - - const libsupermesh::Tools::IInterval* ti = dynamic_cast(&query); - if (ti == 0) throw libsupermesh::Tools::IllegalArgumentException("rangeQuery: Shape does not support the libsupermesh::Tools::IInterval interface."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::set visitedNodes; - std::set visitedData; - std::stack st; - std::vector ids; - findRootIdentifiers(*ti, ids); - - for (size_t cRoot = 0; cRoot < ids.size(); ++cRoot) - { - NodePtr root = readNode(ids[cRoot]); - if (root->m_children > 0 && query.intersectsShape(root->m_nodeMBR)) st.push(root); - } - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - visitedNodes.insert(n->m_identifier); - - if (n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (visitedData.find(n->m_pIdentifier[cChild]) != visitedData.end()) continue; - - bool b; - if (type == ContainmentQuery) b = (n->m_ptrMBR[cChild])->intersectsInterval(*ti) && query.containsShape(*(n->m_ptrMBR[cChild])); - else b = (n->m_ptrMBR[cChild])->intersectsInterval(*ti) && query.intersectsShape(*(n->m_ptrMBR[cChild])); - - if (b) - { - visitedData.insert(n->m_pIdentifier[cChild]); - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - } - else - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if ( - visitedNodes.find(n->m_pIdentifier[cChild]) == visitedNodes.end() && - n->m_ptrMBR[cChild]->intersectsInterval(*ti) && - query.intersectsShape(*(n->m_ptrMBR[cChild]))) - st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -void libsupermesh::SpatialIndex::MVRTree::MVRTree::findRootIdentifiers(const libsupermesh::Tools::IInterval& ti, std::vector& ids) -{ - ids.clear(); - - for (size_t cRoot = 0; cRoot < m_roots.size(); ++cRoot) - { - RootEntry& e = m_roots[cRoot]; - if (ti.intersectsInterval(libsupermesh::Tools::IT_RIGHTOPEN, e.m_startTime, e.m_endTime)) ids.push_back(e.m_id); - } -} - -std::string libsupermesh::SpatialIndex::MVRTree::MVRTree::printRootInfo() const -{ - std::ostringstream s; - - for (size_t cRoot = 0; cRoot < m_roots.size(); ++cRoot) - { - const RootEntry& e = m_roots[cRoot]; - - s << "Root " << cRoot << ": Start " << e.m_startTime << ", End " << e.m_endTime << std::endl; - } - - return s.str(); -} - -std::ostream& libsupermesh::SpatialIndex::MVRTree::operator<<(std::ostream& os, const MVRTree& t) -{ - os << "Dimension: " << t.m_dimension << std::endl - << "Fill factor: " << t.m_fillFactor << std::endl - << "Index capacity: " << t.m_indexCapacity << std::endl - << "Leaf capacity: " << t.m_leafCapacity << std::endl - << "Tight MBRs: " << ((t.m_bTightMBRs) ? "enabled" : "disabled") << std::endl; - - if (t.m_treeVariant == RV_RSTAR) - { - os << "Near minimum overlap factor: " << t.m_nearMinimumOverlapFactor << std::endl - << "Reinsert factor: " << t.m_reinsertFactor << std::endl - << "Split distribution factor: " << t.m_splitDistributionFactor << std::endl - << "Strong version overflow: " << t.m_strongVersionOverflow << std::endl - //<< "Strong version underflow: " << t.m_strongVersionUnderflow << std::endl - << "Weak version underflow: " << t.m_versionUnderflow << std::endl; - } - - // it is difficult to count utilization - //os << "Utilization: " << 100 * t.m_stats.m_totalData / (t.m_stats.getNumberOfNodesInLevel(0) * t.m_leafCapacity) << "%" << std::endl - - os << t.m_stats; - os << t.printRootInfo(); - - #ifndef NDEBUG - os << "Leaf pool hits: " << t.m_leafPool.m_hits << std::endl - << "Leaf pool misses: " << t.m_leafPool.m_misses << std::endl - << "Index pool hits: " << t.m_indexPool.m_hits << std::endl - << "Index pool misses: " << t.m_indexPool.m_misses << std::endl - << "Region pool hits: " << t.m_regionPool.m_hits << std::endl - << "Region pool misses: " << t.m_regionPool.m_misses << std::endl - << "Point pool hits: " << t.m_pointPool.m_hits << std::endl - << "Point pool misses: " << t.m_pointPool.m_misses << std::endl; - #endif - - return os; -} diff --git a/spatialindex-1.8.5/src/mvrtree/MVRTree.h b/spatialindex-1.8.5/src/mvrtree/MVRTree.h deleted file mode 100644 index b75640a..0000000 --- a/spatialindex-1.8.5/src/mvrtree/MVRTree.h +++ /dev/null @@ -1,232 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Statistics.h" -#include "Node.h" -#include "PointerPoolNode.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class MVRTree : public ISpatialIndex - { - class NNEntry; - class RootEntry; - - public: - MVRTree(IStorageManager&, libsupermesh::Tools::PropertySet&); - // String Value Description - // ---------------------------------------------- - // IndexIndentifier VT_LONG If specified an existing index will be openened from the supplied - // storage manager with the given index id. Behaviour is unspecified - // if the index id or the storage manager are incorrect. - // Dimension VT_ULONG Dimensionality of the data that will be inserted. - // IndexCapacity VT_ULONG The index node capacity. Default is 100. - // LeafCapactiy VT_ULONG The leaf node capacity. Default is 100. - // FillFactor VT_DOUBLE The fill factor. Default is 70% - // TreeVariant VT_LONG Can be one of Linear, Quadratic or Rstar. Default is Rstar - // NearMinimumOverlapFactor VT_ULONG Default is 32. - // SplitDistributionFactor VT_DOUBLE Default is 0.4 - // ReinsertFactor VT_DOUBLE Default is 0.3 - // EnsureTightMBRs VT_BOOL Default is true - // IndexPoolCapacity VT_LONG Default is 100 - // LeafPoolCapacity VT_LONG Default is 100 - // RegionPoolCapacity VT_LONG Default is 1000 - // PointPoolCapacity VT_LONG Default is 500 - // StrongVersionOverflow VT_DOUBLE Default is 0.8 - // VersionUnderflow VT_DOUBLE Default is 0.3 - - virtual ~MVRTree(); - - // - // ISpatialIndex interface - // - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id); - virtual bool deleteData(const IShape& shape, id_type id); - virtual void containsWhatQuery(const IShape& query, IVisitor& v); - virtual void intersectsWithQuery(const IShape& query, IVisitor& v); - virtual void pointLocationQuery(const Point& query, IVisitor& v); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator&); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v); - virtual void selfJoinQuery(const IShape& s, IVisitor& v); - virtual void queryStrategy(IQueryStrategy& qs); - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const; - virtual void addCommand(ICommand* pCommand, CommandType ct); - virtual bool isIndexValid(); - virtual void getStatistics(IStatistics** out) const; - - private: - void initNew(libsupermesh::Tools::PropertySet&); - void initOld(libsupermesh::Tools::PropertySet& ps); - void storeHeader(); - void loadHeader(); - - void insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id); - void insertData_impl(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, uint32_t level); - bool deleteData_impl(const TimeRegion& mbr, id_type id); - - id_type writeNode(Node*); - NodePtr readNode(id_type id); - void deleteNode(Node* n); - - void rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v); - - void findRootIdentifiers(const libsupermesh::Tools::IInterval& ti, std::vector& ids); - std::string printRootInfo() const; - - IStorageManager* m_pStorageManager; - - std::vector m_roots; - id_type m_headerID; - - MVRTreeVariant m_treeVariant; - - double m_fillFactor; - - uint32_t m_indexCapacity; - - uint32_t m_leafCapacity; - - uint32_t m_nearMinimumOverlapFactor; - // The R*-Tree 'p' constant, for calculating nearly minimum overlap cost. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles, Section 4.1] - - double m_splitDistributionFactor; - // The R*-Tree 'm' constant, for calculating spliting distributions. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles, Section 4.2] - - double m_reinsertFactor; - // The R*-Tree 'p' constant, for removing entries at reinserts. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles, Section 4.3] - - double m_strongVersionOverflow; - //double m_strongVersionUnderflow; - double m_versionUnderflow; - - uint32_t m_dimension; - - TimeRegion m_infiniteRegion; - - libsupermesh::SpatialIndex::MVRTree::Statistics m_stats; - - bool m_bTightMBRs; - - bool m_bHasVersionCopied; - - double m_currentTime; - - libsupermesh::Tools::PointerPool m_pointPool; - libsupermesh::Tools::PointerPool m_regionPool; - libsupermesh::Tools::PointerPool m_indexPool; - libsupermesh::Tools::PointerPool m_leafPool; - - std::vector > m_writeNodeCommands; - std::vector > m_readNodeCommands; - std::vector > m_deleteNodeCommands; - -#ifdef HAVE_PTHREAD_H - pthread_mutex_t m_lock; -#endif - - class RootEntry - { - public: - RootEntry() {} - RootEntry(id_type id, double s, double e) : m_id(id), m_startTime(s), m_endTime(e) {} - - id_type m_id; - double m_startTime; - double m_endTime; - }; // RootEntry - - class NNEntry - { - public: - id_type m_id; - IEntry* m_pEntry; - double m_minDist; - - NNEntry(id_type id, IEntry* e, double f) : m_id(id), m_pEntry(e), m_minDist(f) {} - ~NNEntry() {} - - struct Greater { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { - return __x->m_minDist > __y->m_minDist; - } - }; - }; // NNEntry - - class NNComparator : public INearestNeighborComparator - { - public: - double getMinimumDistance(const IShape& query, const IShape& entry) - { - return query.getMinimumDistance(entry); - } - double getMinimumDistance(const IShape& query, const IData& data) - { - IShape* pR; - data.getShape(&pR); - double ret = query.getMinimumDistance(*pR); - delete pR; - return ret; - } - }; // NNComparator - - class ValidateEntry - { - public: - ValidateEntry(id_type pid, TimeRegion& r, NodePtr& pNode) : m_parentID(pid), m_parentMBR(r), m_pNode(pNode), m_bIsDead(false) {} - - id_type m_parentID; - TimeRegion m_parentMBR; - NodePtr m_pNode; - bool m_bIsDead; - }; // ValidateEntry - - friend class Node; - friend class Leaf; - friend class Index; - - friend std::ostream& operator<<(std::ostream& os, const MVRTree& t); - }; // MVRTree - - std::ostream& operator<<(std::ostream& os, const MVRTree& t); - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/Makefile.am b/spatialindex-1.8.5/src/mvrtree/Makefile.am deleted file mode 100644 index 8c28ebe..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libmvrtree.la -INCLUDES = -I../../include -libmvrtree_la_SOURCES = Index.cc Leaf.cc Node.cc MVRTree.cc Statistics.cc Index.h Leaf.h MVRTree.h Node.h PointerPoolNode.h Statistics.h diff --git a/spatialindex-1.8.5/src/mvrtree/Makefile.in b/spatialindex-1.8.5/src/mvrtree/Makefile.in deleted file mode 100644 index 3d6bf00..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Makefile.in +++ /dev/null @@ -1,601 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/mvrtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmvrtree_la_LIBADD = -am_libmvrtree_la_OBJECTS = Index.lo Leaf.lo Node.lo MVRTree.lo \ - Statistics.lo -libmvrtree_la_OBJECTS = $(am_libmvrtree_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libmvrtree_la_SOURCES) -DIST_SOURCES = $(libmvrtree_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libmvrtree.la -INCLUDES = -I../../include -libmvrtree_la_SOURCES = Index.cc Leaf.cc Node.cc MVRTree.cc Statistics.cc Index.h Leaf.h MVRTree.h Node.h PointerPoolNode.h Statistics.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mvrtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/mvrtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libmvrtree.la: $(libmvrtree_la_OBJECTS) $(libmvrtree_la_DEPENDENCIES) $(EXTRA_libmvrtree_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libmvrtree_la_OBJECTS) $(libmvrtree_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Leaf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MVRTree.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Statistics.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/mvrtree/Node.cc b/spatialindex-1.8.5/src/mvrtree/Node.cc deleted file mode 100644 index 2461b1a..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Node.cc +++ /dev/null @@ -1,1525 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -#include "MVRTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::MVRTree; - -// -// libsupermesh::Tools::IObject interface -// -libsupermesh::Tools::IObject* Node::clone() -{ - throw libsupermesh::Tools::NotSupportedException("IObject::clone should never be called."); -} - -// -// libsupermesh::Tools::ISerializable interface -// -uint32_t Node::getByteArraySize() -{ - return - (sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(double) + - sizeof(double) + - (m_children * (m_pTree->m_dimension * sizeof(double) * 2 + sizeof(id_type) + 2 * sizeof(double) + sizeof(uint32_t))) + - m_totalDataLength + - (2 * m_pTree->m_dimension * sizeof(double))); -} - -void Node::loadFromByteArray(const byte* ptr) -{ - m_nodeMBR = m_pTree->m_infiniteRegion; - - // skip the node type information, it is not needed. - ptr += sizeof(uint32_t); - - memcpy(&m_level, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&m_children, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&(m_nodeMBR.m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(m_nodeMBR.m_endTime), ptr, sizeof(double)); - ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_ptrMBR[cChild] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[cChild]) = m_pTree->m_infiniteRegion; - - memcpy(m_ptrMBR[cChild]->m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(&(m_pIdentifier[cChild]), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&(m_ptrMBR[cChild]->m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(m_ptrMBR[cChild]->m_endTime), ptr, sizeof(double)); - ptr += sizeof(double); - - memcpy(&(m_pDataLength[cChild]), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - m_totalDataLength += m_pDataLength[cChild]; - m_pData[cChild] = new byte[m_pDataLength[cChild]]; - memcpy(m_pData[cChild], ptr, m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - else - { - m_pData[cChild] = 0; - } - - //m_nodeMBR.combineRegion(*(m_ptrMBR[cChild])); - } - - memcpy(m_nodeMBR.m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -void Node::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - - *data = new byte[len]; - byte* ptr = *data; - - uint32_t nodeType; - - if (m_level == 0) nodeType = PersistentLeaf; - else nodeType = PersistentIndex; - - memcpy(ptr, &nodeType, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_level, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_children, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &(m_nodeMBR.m_startTime), sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(m_nodeMBR.m_endTime), sizeof(double)); - ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - memcpy(ptr, m_ptrMBR[cChild]->m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, &(m_pIdentifier[cChild]), sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &(m_ptrMBR[cChild]->m_startTime), sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(m_ptrMBR[cChild]->m_endTime), sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, &(m_pDataLength[cChild]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - memcpy(ptr, m_pData[cChild], m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - } - - // store the node MBR for efficiency. This increases the node size a little bit. - memcpy(ptr, m_nodeMBR.m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pHigh, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -// -// libsupermesh::SpatialIndex::IEntry interface -// -libsupermesh::SpatialIndex::id_type Node::getIdentifier() const -{ - return m_identifier; -} - -void Node::getShape(IShape** out) const -{ - *out = new TimeRegion(m_nodeMBR); -} - -// -// libsupermesh::SpatialIndex::INode interface -// -uint32_t Node::getChildrenCount() const -{ - return m_children; -} - -libsupermesh::SpatialIndex::id_type Node::getChildIdentifier(uint32_t index) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pIdentifier[index]; -} - -void Node::getChildShape(uint32_t index, IShape** out) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - *out = new TimeRegion(*(m_ptrMBR[index])); -} - - -void Node::getChildData(uint32_t index, uint32_t& length, byte** data) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - if (m_pData[index] == NULL) - { - length = 0; - data = NULL; - } - else - { - length = m_pDataLength[index]; - *data = m_pData[index]; - } -} - -uint32_t Node::getLevel() const -{ - return m_level; -} - -bool Node::isLeaf() const -{ - return (m_level == 0); -} - -bool Node::isIndex() const -{ - return (m_level != 0); -} - -// -// Internal -// - -Node::Node() : - m_pTree(0), - m_level(0), - m_identifier(-1), - m_children(0), - m_capacity(0), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ -} - - Node::Node(libsupermesh::SpatialIndex::MVRTree::MVRTree* pTree, id_type id, uint32_t level, uint32_t capacity) : - m_pTree(pTree), - m_level(level), - m_identifier(id), - m_children(0), - m_capacity(capacity), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ - m_nodeMBR.makeInfinite(m_pTree->m_dimension); - - try - { - m_pDataLength = new uint32_t[m_capacity + 2]; - m_pData = new byte*[m_capacity + 2]; - m_ptrMBR = new TimeRegionPtr[m_capacity + 2]; - m_pIdentifier = new id_type[m_capacity + 2]; - } - catch (...) - { - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - throw; - } -} - -Node::~Node() -{ - if (m_pData != 0) - { - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_pData[cChild] != 0) delete[] m_pData[cChild]; - } - - delete[] m_pData; - delete[] m_pDataLength; - } - - if (m_ptrMBR != 0) delete[] m_ptrMBR; - if (m_pIdentifier != 0) delete[] m_pIdentifier; -} - -Node& Node::operator=(const Node&) -{ - throw libsupermesh::Tools::IllegalStateException("operator =: This should never be called."); -} - -void Node::insertEntry(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id) -{ - assert(m_children < m_capacity); - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - m_totalDataLength += dataLength; - ++m_children; - - m_nodeMBR.combineRegionInTime(mbr); -} - -bool Node::deleteEntry(uint32_t index) -{ - assert(index >= 0 && index < m_children); - - // cache it, since I might need it for "touches" later. - TimeRegionPtr ptrR = m_ptrMBR[index]; - - m_totalDataLength -= m_pDataLength[index]; - if (m_pData[index] != 0) delete[] m_pData[index]; - - if (m_children > 1 && index != m_children - 1) - { - m_pDataLength[index] = m_pDataLength[m_children - 1]; - m_pData[index] = m_pData[m_children - 1]; - m_ptrMBR[index] = m_ptrMBR[m_children - 1]; - m_pIdentifier[index] = m_pIdentifier[m_children - 1]; - } - - --m_children; - - // WARNING: index has now changed. Do not use it below here. - - if (m_children == 0) - { - m_nodeMBR = m_pTree->m_infiniteRegion; - return true; - } - else if (m_pTree->m_bTightMBRs && m_nodeMBR.touchesShape(*ptrR)) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - return true; - } - - return false; -} - -bool Node::insertData( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::stack& pathBuffer, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2, bool bForceAdjust) -{ - // we should be certain that when bInsertMbr2 is true the node needs to be version split - - // this function returns true only if the node under modification has been stored (writeNode(this)) - // it is needed since some times after a version copy we do not need to actually store the node. Only - // the parent has to be notified to modify the entry pointing - // to this node with the appropriate deletion time (thus we save one disk access) - - if ((! bInsertMbr2) && m_children < m_capacity) - { - // the node has empty space. Insert the entry here - - // this has to happen before insertEntry modifies m_nodeMBR. - bool b = m_nodeMBR.containsShape(mbr); - - insertEntry(dataLength, pData, mbr, id); - m_pTree->writeNode(this); - - // a forced adjust might be needed when a child has modified it MBR due to an entry deletion - // (when the entry start time becomes equal to the entry end time after a version copy) - if ((! b || bForceAdjust) && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } - - return true; - } - else - { - // do a version copy - - bool bIsRoot = pathBuffer.empty(); - - NodePtr ptrCopy; - - // copy live entries of this node into a new node. Create an index or a leaf respectively - if (m_level == 0) - { - ptrCopy = m_pTree->m_leafPool.acquire(); - if (ptrCopy.get() == 0) ptrCopy = NodePtr(new Leaf(m_pTree, - 1), &(m_pTree->m_leafPool)); - else ptrCopy->m_nodeMBR = m_pTree->m_infiniteRegion; - } - else - { - ptrCopy = m_pTree->m_indexPool.acquire(); - if (ptrCopy.get() == 0) ptrCopy = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - else - { - ptrCopy->m_level = m_level; - ptrCopy->m_nodeMBR = m_pTree->m_infiniteRegion; - } - } - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (! (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max())) - { - byte* data = 0; - - if (m_pDataLength[cChild] > 0) - { - data = new byte[m_pDataLength[cChild]]; - memcpy(data, m_pData[cChild], m_pDataLength[cChild] * sizeof(byte)); - } - ptrCopy->insertEntry(m_pDataLength[cChild], data, *(m_ptrMBR[cChild]), m_pIdentifier[cChild]); - ptrCopy->m_ptrMBR[ptrCopy->m_children - 1]->m_startTime = mbr.m_startTime; - } - } - - ptrCopy->m_nodeMBR.m_startTime = mbr.m_startTime; - m_nodeMBR.m_endTime = mbr.m_startTime; - - uint32_t children = (bInsertMbr2) ? ptrCopy->m_children + 2 : ptrCopy->m_children + 1; - assert(children > 0); - - if (children >= m_pTree->m_strongVersionOverflow * m_capacity) - { - // strong version overflow. Split! - NodePtr n; - NodePtr nn; - ptrCopy->split(dataLength, pData, mbr, id, n, nn, mbr2, id2, bInsertMbr2); - assert(n->m_children > 1 && nn->m_children > 1); - - if (bIsRoot) - { - // it is a root node. Special handling required. - n->m_level = ptrCopy->m_level; - nn->m_level = ptrCopy->m_level; - n->m_identifier = -1; - nn->m_identifier = -1; - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - NodePtr ptrR = m_pTree->m_indexPool.acquire(); - if (ptrR.get() == 0) ptrR = NodePtr(new Index(m_pTree, -1, ptrCopy->m_level + 1), &(m_pTree->m_indexPool)); - else - { - //ptrR->m_pTree = m_pTree; - //ptrR->m_identifier = -1; - ptrR->m_level = ptrCopy->m_level + 1; - ptrR->m_nodeMBR = m_pTree->m_infiniteRegion; - } - - ptrR->insertEntry(0, 0, n->m_nodeMBR, n->m_identifier); - ptrR->insertEntry(0, 0, nn->m_nodeMBR, nn->m_identifier); - - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - ptrR->m_identifier = m_identifier; - m_pTree->writeNode(ptrR.get()); - m_pTree->m_stats.m_treeHeight[m_pTree->m_stats.m_treeHeight.size() - 1] = ptrR->m_level + 1; - m_pTree->m_stats.m_nodesInLevel.at(n->m_level) = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 1; - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime == ptrCopy->m_nodeMBR.m_startTime && - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime == ptrCopy->m_nodeMBR.m_endTime); - } - else - { - m_pTree->writeNode(this); - m_pTree->writeNode(ptrR.get()); - - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_id == m_identifier); - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime = m_nodeMBR.m_startTime; - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime = m_nodeMBR.m_endTime; - m_pTree->m_roots.push_back(MVRTree::RootEntry(ptrR->m_identifier, ptrR->m_nodeMBR.m_startTime, ptrR->m_nodeMBR.m_endTime)); - m_pTree->m_stats.m_treeHeight.push_back(ptrR->m_level + 1); - m_pTree->m_stats.m_nodesInLevel.at(n->m_level) = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 2; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - } - - if (ptrR->m_level >= m_pTree->m_stats.m_nodesInLevel.size()) m_pTree->m_stats.m_nodesInLevel.push_back(1); - else m_pTree->m_stats.m_nodesInLevel.at(ptrR->m_level) = m_pTree->m_stats.m_nodesInLevel[ptrR->m_level] + 1; - - return true; - } - else - { - bool b = false; - - n->m_level = ptrCopy->m_level; - nn->m_level = ptrCopy->m_level; -/* - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - n->m_identifier = m_identifier; - m_pTree->m_stats.m_nodesInLevel[n->m_level] = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 1; - b = true; - } - else - { - n->m_identifier = -1; - m_pTree->m_stats.m_nodesInLevel[n->m_level] = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 2; - } -*/ - n->m_identifier = -1; - nn->m_identifier = -1; - - m_pTree->m_stats.m_nodesInLevel.at(n->m_level) = m_pTree->m_stats.m_nodesInLevel[n->m_level] + 2; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - ++(m_pTree->m_stats.m_u64Adjustments); - - // this is the special insertion function for two new nodes, defined below - p->insertData(n->m_nodeMBR, n->m_identifier, nn->m_nodeMBR, nn->m_identifier, this, pathBuffer); - - return b; - } - } - //else if (children < m_pTree->m_strongVersionUnderflow * m_capacity) - //{ - // do not do this for now - //} - else - { - // the entry contains the appropriate number of live entries - - ptrCopy->insertEntry(dataLength, pData, mbr, id); - if (bInsertMbr2) ptrCopy->insertEntry(0, 0, mbr2, id2); - - if (bIsRoot) - { - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - ptrCopy->m_identifier = m_identifier; - m_pTree->writeNode(ptrCopy.get()); - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime == ptrCopy->m_nodeMBR.m_startTime && - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime == ptrCopy->m_nodeMBR.m_endTime); - } - else - { - m_pTree->writeNode(ptrCopy.get()); - m_pTree->writeNode(this); - - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_id == m_identifier); - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime = m_nodeMBR.m_startTime; - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime = m_nodeMBR.m_endTime; - m_pTree->m_roots.push_back(MVRTree::RootEntry(ptrCopy->m_identifier, ptrCopy->m_nodeMBR.m_startTime, ptrCopy->m_nodeMBR.m_endTime)); - m_pTree->m_stats.m_treeHeight.push_back(ptrCopy->m_level + 1); - - m_pTree->m_stats.m_nodesInLevel.at(ptrCopy->m_level) = m_pTree->m_stats.m_nodesInLevel[ptrCopy->m_level] + 1; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - } - - return true; - } - else - { - m_pTree->writeNode(ptrCopy.get()); - - m_pTree->m_stats.m_nodesInLevel.at(ptrCopy->m_level) = m_pTree->m_stats.m_nodesInLevel[ptrCopy->m_level] + 1; - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - ++(m_pTree->m_stats.m_u64Adjustments); - - uint32_t child; - for (child = 0; child < p->m_children; ++child) - { - if (p->m_pIdentifier[child] == m_identifier) break; - } - - // it might be needed to update the MBR since the child MBR might have changed - // from an entry deletion (from insertData, below, when m_startTime == m_endTime) - double st = p->m_ptrMBR[child]->m_startTime; - *(p->m_ptrMBR[child]) = m_nodeMBR; - p->m_ptrMBR[child]->m_startTime = st; - //p->m_ptrMBR[child]->m_endTime = mbr.m_startTime; - - // insert this new version copy into the parent - p->insertData(0, 0, ptrCopy->m_nodeMBR, ptrCopy->m_identifier, pathBuffer, m_pTree->m_infiniteRegion, -1, false); - - return false; - } - } - } -} - -void Node::insertData(TimeRegion& mbr1, id_type id1, TimeRegion& mbr2, id_type id2, Node* oldVersion, std::stack& pathBuffer) -{ - // this should be called only from insertData above - // it tries to fit two new entries into the node - - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == oldVersion->m_identifier) break; - } - - // save the original node MBR - bool bAdjust = false; - TimeRegionPtr ptrR = m_pTree->m_regionPool.acquire(); - *ptrR = m_nodeMBR; - - // it might be needed to update the MBR since the child MBR might have changed - // from an entry deletion (when m_startTime == m_endTime) - double st = m_ptrMBR[child]->m_startTime; - *(m_ptrMBR[child]) = oldVersion->m_nodeMBR; - m_ptrMBR[child]->m_startTime = st; - //m_ptrMBR[child]->m_endTime = oldVersion->m_nodeMBR.m_endTime; - - if (m_children < m_capacity - 1) - { - // there is enough space for both new entries - - insertEntry(0, 0, mbr1, id1); - insertEntry(0, 0, mbr2, id2); - - m_pTree->writeNode(this); - - if ((! pathBuffer.empty()) && (bAdjust || ! (ptrR->containsShape(mbr1) && ptrR->containsShape(mbr2)))) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } - } - else - { - // call a normal insertData which will trigger a version copy - // insertData will adjust the parent since this node will certainly do a version copy - bool bStored = insertData(0, 0, mbr1, id1, pathBuffer, mbr2, id2, true); - if (! bStored) m_pTree->writeNode(this); - } -} - -bool Node::deleteData(id_type id, double delTime, std::stack& pathBuffer, bool bForceAdjust) -{ - // it returns true if a new root has been created because all the entries of the old root have died. - // This is needed in case the root dies while there are pending reinsertions from multiple levels - - uint32_t child = m_capacity; - uint32_t alive = 0; - bool bAdjustParent = false; - TimeRegionPtr oldNodeMBR = m_pTree->m_regionPool.acquire(); - *oldNodeMBR = m_nodeMBR; - NodePtr parent; - - // make sure that there are no "snapshot" entries - // find how many children are alive and locate the entry to be deleted - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_level != 0 || (m_ptrMBR[cChild]->m_startTime != m_ptrMBR[cChild]->m_endTime)); - if (! (m_ptrMBR[cChild]->m_endTime < std::numeric_limits::max())) ++alive; - if (m_pIdentifier[cChild] == id) child = cChild; - } - - assert(child < m_capacity); - - // either make the entry dead or, if its start time is equal to the deletion time, - // delete it from the node completely (in which case the parent MBR might need adjustment) - bool bAdjusted = false; - - if (m_level == 0 && m_ptrMBR[child]->m_startTime == delTime) - { - bAdjusted = deleteEntry(child); - bAdjustParent = bAdjusted; - } - else - { - m_ptrMBR[child]->m_endTime = delTime; - } - - // if it has not been adjusted yet (by deleteEntry) and it should be adjusted, do it. - // a forced adjustment is needed when a child node has adjusted its own MBR and signals - // the parent to adjust it, also. - if ((! bAdjusted) && bForceAdjust) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - // signal our parent to adjust its MBR also - bAdjustParent = true; - } - - // one less live entry from now on - --alive; - - if (alive < m_pTree->m_versionUnderflow * m_capacity && (! pathBuffer.empty())) - { - // if the weak version condition is broken, try to resolve it - // if this is a leaf and it can still hold some entries (since all entries might be dead now and - // the node full) try to borrow a live entry from a sibling - // [Yufei Tao, Dimitris Papadias, 'MV3R-Tree: A Spatio-Temporal Access Method for Timestamp and - // Interval Queries', Section 3.3] - if (m_level == 0 && m_children < m_capacity) - { - parent = m_pTree->readNode(pathBuffer.top()); - pathBuffer.pop(); - - // find us in our parent - for (child = 0; child < parent->m_children; ++child) - { - if (parent->m_pIdentifier[child] == m_identifier) break; - } - - // remember that the parent might be younger than us, pointing to us through a pointer - // created with a version copy. So the actual start time of this node through the path - // from the root might actually be different than the stored start time. - double actualNodeStartTime = parent->m_ptrMBR[child]->m_startTime; - - // find an appropriate sibling - for (uint32_t cSibling = 0; cSibling < parent->m_children; ++cSibling) - { - // it has to be different than us, it has to be alive and its MBR should intersect ours - if ( - parent->m_pIdentifier[cSibling] != m_identifier && - ! (parent->m_ptrMBR[cSibling]->m_endTime < std::numeric_limits::max()) && - parent->m_ptrMBR[cSibling]->intersectsShape(m_nodeMBR)) - { - NodePtr sibling = m_pTree->readNode(parent->m_pIdentifier[cSibling]); - std::vector toCheck; - alive = 0; - - // if this child does not have a single parent, we cannot borrow an entry. - bool bSingleParent = true; - - for (uint32_t cSiblingChild = 0; cSiblingChild < sibling->m_children; ++cSiblingChild) - { - // if the insertion time of any child is smaller than the starting time stored in the - // parent of this node than the node has more than one parent - if (sibling->m_ptrMBR[cSiblingChild]->m_startTime < parent->m_ptrMBR[cSibling]->m_startTime) - { - bSingleParent = false; - break; - } - - // find the live sibling entries, and also the ones that can be moved to this node - // sort them by area enlargement - if (! (sibling->m_ptrMBR[cSiblingChild]->m_endTime < std::numeric_limits::max())) - { - ++alive; - if (sibling->m_ptrMBR[cSiblingChild]->m_startTime >= actualNodeStartTime) - { - TimeRegionPtr tmpR = m_pTree->m_regionPool.acquire(); - *tmpR = m_nodeMBR; - tmpR->combineRegion(*(sibling->m_ptrMBR[cSiblingChild])); - double a = tmpR->getArea(); - if (a <= m_nodeMBR.getArea() * 1.1) toCheck.push_back(DeleteDataEntry(cSiblingChild, a)); - } - } - } - - // if the sibling has more than one parent or if we cannot remove an entry because we will - // cause a weak version overflow, this sibling is not appropriate - if ((! bSingleParent) || toCheck.empty() || alive == m_pTree->m_versionUnderflow * sibling->m_capacity + 1) continue; - - // create interval counters for checking weak version condition - // [Yufei Tao, Dimitris Papadias, 'MV3R-Tree: A Spatio-Temporal Access Method for Timestamp and - // Interval Queries', Section 3.2] - std::set Si; - for (uint32_t cSiblingChild = 0; cSiblingChild < sibling->m_children; ++cSiblingChild) - { - Si.insert(sibling->m_ptrMBR[cSiblingChild]->m_startTime); - Si.insert(sibling->m_ptrMBR[cSiblingChild]->m_endTime); - } - // duplicate entries have been removed and the set is sorted - uint32_t* SiCounts = new uint32_t[Si.size() - 1]; - memset(SiCounts, 0, (Si.size() - 1) * sizeof(uint32_t)); - - for (uint32_t cSiblingChild = 0; cSiblingChild < sibling->m_children; ++cSiblingChild) - { - std::set::iterator it1 = Si.begin(); - std::set::iterator it2 = Si.begin(); - for (size_t cIndex = 0; cIndex < Si.size() - 1; ++cIndex) - { - ++it2; - if ( - sibling->m_ptrMBR[cSiblingChild]->m_startTime <= *it1 && - sibling->m_ptrMBR[cSiblingChild]->m_endTime >= *it2 - ) ++(SiCounts[cIndex]); - ++it1; - } - } - - std::vector Sdel; - - for (size_t cCheck = 0; cCheck < toCheck.size(); ++cCheck) - { - bool good = true; - - // check if it can be removed without a weak version underflow - std::set::iterator it1 = Si.begin(); - std::set::iterator it2 = Si.begin(); - for (size_t cIndex = 0; cIndex < Si.size() - 1; ++cIndex) - { - ++it2; - if ( - sibling->m_ptrMBR[toCheck[cCheck].m_index]->m_startTime <= *it1 && - sibling->m_ptrMBR[toCheck[cCheck].m_index]->m_endTime >= *it2 && - SiCounts[cIndex] <= m_pTree->m_versionUnderflow * sibling->m_capacity) - { - good = false; - break; - } - ++it1; - } - if (good) Sdel.push_back(toCheck[cCheck]); - } - - delete[] SiCounts; - - if (Sdel.empty()) continue; - - // we found some entries. Sort them according to least enlargement, insert the best entry into - // this node, remove it from the sibling and update the MBRs of the parent - - sort(Sdel.begin(), Sdel.end(), DeleteDataEntry::compare); - uint32_t entry = Sdel[0].m_index; - bool b1 = m_nodeMBR.containsShape(*(sibling->m_ptrMBR[entry])); - bool b2 = sibling->m_nodeMBR.touchesShape(*(sibling->m_ptrMBR[entry])); - - insertEntry(sibling->m_pDataLength[entry], sibling->m_pData[entry], *(sibling->m_ptrMBR[entry]), sibling->m_pIdentifier[entry]); - sibling->m_pData[entry] = 0; - - // the weak version condition check above, guarantees that. - assert(sibling->m_children > 1); - sibling->deleteEntry(entry); - - m_pTree->writeNode(this); - m_pTree->writeNode(sibling.get()); - - Index* p = static_cast(parent.get()); - if (((! b1) || bAdjustParent) && b2) p->adjustTree(this, sibling.get(), pathBuffer); - else if ((! b1) || bAdjustParent) p->adjustTree(this, pathBuffer); - else if (b2) p->adjustTree(sibling.get(), pathBuffer); - - return false; - } - } - } - - // either this is not a leaf, or an appropriate sibling was not found, so make this node dead - // and reinsert all live entries from the root - m_nodeMBR.m_endTime = delTime; - m_pTree->writeNode(this); - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - if (parent.get() == 0) - { - parent = m_pTree->readNode(pathBuffer.top()); - pathBuffer.pop(); - } - - if (bAdjustParent) - { - // the correct child pointer might have been calculated already from earlier - if (child < parent->m_children && m_identifier != parent->m_pIdentifier[child]) - { - for (child = 0; child < parent->m_children; ++child) - { - if (parent->m_pIdentifier[child] == m_identifier) break; - } - } - - // both start time and end time should be preserved since deleteData below needs - // to know how many entries where alive, including this one - double st = parent->m_ptrMBR[child]->m_startTime; - double en = parent->m_ptrMBR[child]->m_endTime; - *(parent->m_ptrMBR[child]) = m_nodeMBR; - parent->m_ptrMBR[child]->m_startTime = st; - parent->m_ptrMBR[child]->m_endTime = en; - } - - // delete this node from the parent node. - // if this node had been adjusted and its old MBR was touching the parent MBR, the - // parent MBR needs to be adjusted also. - // the deletion has to happen first, since the reinsertions might modify the path to this node - bool bNewRoot = parent->deleteData(m_identifier, delTime, pathBuffer, (bAdjustParent && parent->m_nodeMBR.touchesShape(*oldNodeMBR))); - - // reinsert all the live entries from the root - - // normally I should not modify any node instances, since writeNode might be caching nodes - // in main memory, even though I have persisted them, so I have to make copies - - // this code will try and reinsert whole paths if possible. It might be the case, though, - // that a root died, which means that all the live data entries have to be scanned and reinserted themselves - for (child = 0; child < m_children; ++child) - { - if (! (m_ptrMBR[child]->m_endTime < std::numeric_limits::max())) - { - if (! bNewRoot || m_level == 0) - { - m_ptrMBR[child]->m_startTime = delTime; - m_pTree->insertData_impl(m_pDataLength[child], m_pData[child], *(m_ptrMBR[child]), m_pIdentifier[child], m_level); - // make sure we do not delete the data array from this node's destructor - m_pData[child] = 0; - } - else - { - std::stack Sins; - Sins.push(m_pTree->readNode(m_pIdentifier[child])); - while (! Sins.empty()) - { - NodePtr p = Sins.top(); Sins.pop(); - if (p->m_level == 0) - { - for (uint32_t cIndex= 0; cIndex < p->m_children; ++cIndex) - { - if (! (p->m_ptrMBR[cIndex]->m_endTime < std::numeric_limits::max())) - { - p->m_ptrMBR[cIndex]->m_startTime = delTime; - m_pTree->insertData_impl(p->m_pDataLength[cIndex], p->m_pData[cIndex], *(p->m_ptrMBR[cIndex]), p->m_pIdentifier[cIndex], p->m_level); - // make sure we do not delete the data array from this node's destructor - p->m_pData[cIndex] = 0; - } - } - } - else - { - for (uint32_t cIndex= 0; cIndex < p->m_children; ++cIndex) - { - if (! (p->m_ptrMBR[cIndex]->m_endTime < std::numeric_limits::max())) - { - Sins.push(m_pTree->readNode(p->m_pIdentifier[cIndex])); - } - } - } - } - } - } - } - } - else - { - // either this is a root node or there is no weak version condition - - if (alive == 0 && pathBuffer.empty()) - { - if (m_children > 0) - { - // all root children are dead. Create a new root - m_nodeMBR.m_endTime = delTime; - m_pTree->m_bHasVersionCopied = false; - - if (m_nodeMBR.m_startTime == m_nodeMBR.m_endTime) - { - Leaf root(m_pTree, m_identifier); - root.m_nodeMBR.m_startTime = m_nodeMBR.m_endTime; - root.m_nodeMBR.m_endTime = std::numeric_limits::max(); - m_pTree->writeNode(&root); - - m_pTree->m_stats.m_treeHeight[m_pTree->m_stats.m_treeHeight.size() - 1] = 1; - if (m_pTree->m_stats.m_nodesInLevel.at(m_level) == 1) m_pTree->m_stats.m_nodesInLevel.pop_back(); - else m_pTree->m_stats.m_nodesInLevel.at(m_level) = m_pTree->m_stats.m_nodesInLevel[m_level] - 1; - m_pTree->m_stats.m_nodesInLevel.at(0) = m_pTree->m_stats.m_nodesInLevel[0] + 1; - } - else - { - m_pTree->writeNode(this); - - if (m_level > 0) ++(m_pTree->m_stats.m_u32DeadIndexNodes); - else ++(m_pTree->m_stats.m_u32DeadLeafNodes); - - Leaf root(m_pTree, -1); - root.m_nodeMBR.m_startTime = m_nodeMBR.m_endTime; - root.m_nodeMBR.m_endTime = std::numeric_limits::max(); - m_pTree->writeNode(&root); - assert(m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_id == m_identifier); - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_startTime = m_nodeMBR.m_startTime; - m_pTree->m_roots[m_pTree->m_roots.size() - 1].m_endTime = m_nodeMBR.m_endTime; - m_pTree->m_roots.push_back(MVRTree::RootEntry(root.m_identifier, root.m_nodeMBR.m_startTime, root.m_nodeMBR.m_endTime)); - - m_pTree->m_stats.m_treeHeight.push_back(1); - m_pTree->m_stats.m_nodesInLevel.at(root.m_level) = m_pTree->m_stats.m_nodesInLevel[root.m_level] + 1; - } - return true; - } - else - { - assert(m_level == 0); - m_pTree->writeNode(this); - m_pTree->m_bHasVersionCopied = false; - return false; - } - } - else if (bAdjustParent && (! pathBuffer.empty())) - { - // the parent needs to be adjusted - m_pTree->writeNode(this); - parent = m_pTree->readNode(pathBuffer.top()); - pathBuffer.pop(); - Index* p = static_cast(parent.get()); - p->adjustTree(this, pathBuffer); - } - else - { - m_pTree->writeNode(this); - } - } - - return false; -} - -void Node::rtreeSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - uint32_t cChild; - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - uint32_t cTotal = (bInsertMbr2) ? m_children + 2 : m_children + 1; - - // use this mask array for marking visited entries. - byte* mask = new byte[cTotal]; - memset(mask, 0, cTotal); - - // insert new data in the node for easier manipulation. Data arrays are always - // by two larger than node capacity. - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - if (bInsertMbr2) - { - m_pDataLength[m_children + 1] = 0; - m_pData[m_children + 1] = 0; - m_ptrMBR[m_children + 1] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children + 1]) = mbr2; - m_pIdentifier[m_children + 1] = id2; - } - - // initialize each group with the seed entries. - uint32_t seed1, seed2; - pickSeeds(seed1, seed2, cTotal); - - group1.push_back(seed1); - group2.push_back(seed2); - - mask[seed1] = 1; - mask[seed2] = 1; - - // find MBR of each group. - TimeRegionPtr mbrA = m_pTree->m_regionPool.acquire(); - *mbrA = *(m_ptrMBR[seed1]); - TimeRegionPtr mbrB = m_pTree->m_regionPool.acquire(); - *mbrB = *(m_ptrMBR[seed2]); - - // count how many entries are left unchecked (exclude the seeds here.) - uint32_t cRemaining = cTotal - 2; - - while (cRemaining > 0) - { - if (minimumLoad - group1.size() == cRemaining) - { - // all remaining entries must be assigned to group1 to comply with minimun load requirement. - for (cChild = 0; cChild < cTotal; ++cChild) - { - if (mask[cChild] == 0) - { - group1.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else if (minimumLoad - group2.size() == cRemaining) - { - // all remaining entries must be assigned to group2 to comply with minimun load requirement. - for (cChild = 0; cChild < cTotal; ++cChild) - { - if (mask[cChild] == 0) - { - group2.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else - { - // For all remaining entries compute the difference of the cost of grouping an - // entry in either group. When done, choose the entry that yielded the maximum - // difference. In case of linear split, select any entry (e.g. the first one.) - uint32_t sel; - double md1 = 0.0, md2 = 0.0; - double m = -std::numeric_limits::max(); - double d1, d2, d; - double a1 = mbrA->getArea(); - double a2 = mbrB->getArea(); - - TimeRegionPtr a = m_pTree->m_regionPool.acquire(); - TimeRegionPtr b = m_pTree->m_regionPool.acquire(); - - for (cChild = 0; cChild < cTotal; ++cChild) - { - if (mask[cChild] == 0) - { - mbrA->getCombinedRegion(*a, *(m_ptrMBR[cChild])); - d1 = a->getArea() - a1; - mbrB->getCombinedRegion(*b, *(m_ptrMBR[cChild])); - d2 = b->getArea() - a2; - d = std::abs(d1 - d2); - - if (d > m) - { - m = d; - md1 = d1; md2 = d2; - sel = cChild; - if (m_pTree->m_treeVariant== RV_LINEAR || m_pTree->m_treeVariant == RV_RSTAR) break; - } - } - } - - // determine the group where we should add the new entry. - int32_t group = 1; - - if (md1 < md2) - { - group1.push_back(sel); - group = 1; - } - else if (md2 < md1) - { - group2.push_back(sel); - group = 2; - } - else if (a1 < a2) - { - group1.push_back(sel); - group = 1; - } - else if (a2 < a1) - { - group2.push_back(sel); - group = 2; - } - else if (group1.size() < group2.size()) - { - group1.push_back(sel); - group = 1; - } - else if (group2.size() < group1.size()) - { - group2.push_back(sel); - group = 2; - } - else - { - group1.push_back(sel); - group = 1; - } - mask[sel] = 1; - --cRemaining; - if (group == 1) - { - mbrA->combineRegion(*(m_ptrMBR[sel])); - } - else - { - mbrB->combineRegion(*(m_ptrMBR[sel])); - } - } - } - - delete[] mask; -} - -void Node::rstarSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2) -{ - RstarSplitEntry** dataLow = 0; - RstarSplitEntry** dataHigh = 0; - - uint32_t cTotal = (bInsertMbr2) ? m_children + 2 : m_children + 1; - - try - { - dataLow = new RstarSplitEntry*[cTotal]; - dataHigh = new RstarSplitEntry*[cTotal]; - } - catch (...) - { - delete[] dataLow; - throw; - } - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - if (bInsertMbr2) - { - m_pDataLength[m_children + 1] = 0; - m_pData[m_children + 1] = 0; - m_ptrMBR[m_children + 1] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children + 1]) = mbr2; - m_pIdentifier[m_children + 1] = id2; - } - - uint32_t nodeSPF = static_cast(std::floor(cTotal * m_pTree->m_splitDistributionFactor)); - uint32_t splitDistribution = cTotal - (2 * nodeSPF) + 2; - - uint32_t cChild = 0, cDim, cIndex; - - for (cChild = 0; cChild < cTotal; ++cChild) - { - try - { - dataLow[cChild] = new RstarSplitEntry(m_ptrMBR[cChild].get(), cChild, 0); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete dataLow[i]; - delete[] dataLow; - delete[] dataHigh; - throw; - } - - dataHigh[cChild] = dataLow[cChild]; - } - - double minimumMargin = std::numeric_limits::max(); - uint32_t splitAxis = std::numeric_limits::max(); - uint32_t sortOrder = std::numeric_limits::max(); - - // chooseSplitAxis. - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - ::qsort(dataLow, - cTotal, - sizeof(RstarSplitEntry*), - RstarSplitEntry::compareLow); - - ::qsort(dataHigh, - cTotal, - sizeof(RstarSplitEntry*), - RstarSplitEntry::compareHigh); - - // calculate sum of margins and overlap for all distributions. - double marginl = 0.0; - double marginh = 0.0; - - TimeRegion bbl1, bbl2, bbh1, bbh2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bbl1 = *(dataLow[0]->m_pRegion); - bbh1 = *(dataHigh[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bbl1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh1.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - bbl2 = *(dataLow[l]->m_pRegion); - bbh2 = *(dataHigh[l]->m_pRegion); - - for (cIndex = l + 1; cIndex < cTotal; ++cIndex) - { - bbl2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh2.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - marginl += bbl1.getMargin() + bbl2.getMargin(); - marginh += bbh1.getMargin() + bbh2.getMargin(); - } // for (cChild) - - double margin = std::min(marginl, marginh); - - // keep minimum margin as split axis. - if (margin < minimumMargin) - { - minimumMargin = margin; - splitAxis = cDim; - sortOrder = (marginl < marginh) ? 0 : 1; - } - - // increase the dimension according to which the data entries should be sorted. - for (cChild = 0; cChild < cTotal; ++cChild) - { - dataLow[cChild]->m_sortDim = cDim + 1; - } - } // for (cDim) - - for (cChild = 0; cChild < cTotal; ++cChild) - { - dataLow[cChild]->m_sortDim = splitAxis; - } - - ::qsort( - dataLow, - cTotal, - sizeof(RstarSplitEntry*), - (sortOrder == 0) ? RstarSplitEntry::compareLow : RstarSplitEntry::compareHigh); - - double ma = std::numeric_limits::max(); - double mo = std::numeric_limits::max(); - uint32_t splitPoint = std::numeric_limits::max(); - - TimeRegion bb1, bb2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bb1 = *(dataLow[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bb1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - bb2 = *(dataLow[l]->m_pRegion); - - for (cIndex = l + 1; cIndex < cTotal; ++cIndex) - { - bb2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - double o = bb1.getIntersectingArea(bb2); - - if (o < mo) - { - splitPoint = cChild; - mo = o; - ma = bb1.getArea() + bb2.getArea(); - } - else if (o == mo) - { - double a = bb1.getArea() + bb2.getArea(); - - if (a < ma) - { - splitPoint = cChild; - ma = a; - } - } - } // for (cChild) - - uint32_t l1 = nodeSPF - 1 + splitPoint; - - for (cIndex = 0; cIndex < l1; ++cIndex) - { - group1.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - for (cIndex = l1; cIndex < cTotal; ++cIndex) - { - group2.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - delete[] dataLow; - delete[] dataHigh; -} - -void Node::pickSeeds(uint32_t& index1, uint32_t& index2, uint32_t total) -{ - double separation = -std::numeric_limits::max(); - double inefficiency = -std::numeric_limits::max(); - uint32_t cDim, cChild, cIndex; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_RSTAR: - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - double leastLower = m_ptrMBR[0]->m_pLow[cDim]; - double greatestUpper = m_ptrMBR[0]->m_pHigh[cDim]; - uint32_t greatestLower = 0; - uint32_t leastUpper = 0; - double width; - - for (cChild = 1; cChild < total; ++cChild) - { - if (m_ptrMBR[cChild]->m_pLow[cDim] > m_ptrMBR[greatestLower]->m_pLow[cDim]) greatestLower = cChild; - if (m_ptrMBR[cChild]->m_pHigh[cDim] < m_ptrMBR[leastUpper]->m_pHigh[cDim]) leastUpper = cChild; - - leastLower = std::min(m_ptrMBR[cChild]->m_pLow[cDim], leastLower); - greatestUpper = std::max(m_ptrMBR[cChild]->m_pHigh[cDim], greatestUpper); - } - - width = greatestUpper - leastLower; - if (width <= 0) width = 1; - - double f = (m_ptrMBR[greatestLower]->m_pLow[cDim] - m_ptrMBR[leastUpper]->m_pHigh[cDim]) / width; - - if (f > separation) - { - index1 = leastUpper; - index2 = greatestLower; - separation = f; - } - } // for (cDim) - - if (index1 == index2) - { - if (index2 == 0) ++index2; - else --index2; - } - - break; - case RV_QUADRATIC: - // for each pair of Regions (account for overflow Region too!) - for (cChild = 0; cChild < total - 1; ++cChild) - { - double a = m_ptrMBR[cChild]->getArea(); - - for (cIndex = cChild + 1; cIndex < total; ++cIndex) - { - // get the combined MBR of those two entries. - TimeRegion r; - m_ptrMBR[cChild]->getCombinedRegion(r, *(m_ptrMBR[cIndex])); - - // find the inefficiency of grouping these entries together. - double d = r.getArea() - a - m_ptrMBR[cIndex]->getArea(); - - if (d > inefficiency) - { - inefficiency = d; - index1 = cChild; - index2 = cIndex; - } - } // for (cIndex) - } // for (cChild) - - break; - default: - throw libsupermesh::Tools::NotSupportedException("Node::pickSeeds: Tree variant not supported."); - } -} - -NodePtr Node::findNode(const TimeRegion& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_pIdentifier[cChild] == id) - return m_pTree->readNode(m_pIdentifier[cChild]); - - if (m_ptrMBR[cChild]->containsShape(mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findNode(mbr, id, pathBuffer); - assert(n.get() != l.get()); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} diff --git a/spatialindex-1.8.5/src/mvrtree/Node.h b/spatialindex-1.8.5/src/mvrtree/Node.h deleted file mode 100644 index daf54ba..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Node.h +++ /dev/null @@ -1,195 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class MVRTree; - class Leaf; - class Index; - class Node; - - typedef libsupermesh::Tools::PoolPointer NodePtr; - - class Node : public libsupermesh::SpatialIndex::INode - { - public: - virtual ~Node(); - - // - // libsupermesh::Tools::IObject interface - // - virtual IObject* clone(); - - // - // libsupermesh::Tools::ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // libsupermesh::SpatialIndex::IEntry interface - // - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - - // - // libsupermesh::SpatialIndex::INode interface - // - virtual uint32_t getChildrenCount() const; - virtual id_type getChildIdentifier(uint32_t index) const; - virtual void getChildShape(uint32_t index, IShape** out) const; - virtual void getChildData(uint32_t index, uint32_t& length, byte** data) const; - virtual uint32_t getLevel() const; - virtual bool isIndex() const; - virtual bool isLeaf() const; - - private: - Node(); - Node(MVRTree* pTree, id_type id, uint32_t level, uint32_t capacity); - - virtual Node& operator=(const Node&); - - virtual void insertEntry(uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id); - virtual bool deleteEntry(uint32_t index); - - virtual bool insertData( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::stack& pathBuffer, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false, bool forceAdjust = false); - virtual void insertData(TimeRegion& mbr1, id_type id1, TimeRegion& mbr2, id_type id2, Node* oldVersion, std::stack& pathBuffer); - virtual bool deleteData(id_type id, double delTime, std::stack& pathBuffer, bool adjustMBR = false); - - virtual void rtreeSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - virtual void rstarSplit( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, std::vector& group1, std::vector& group2, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false); - - virtual void pickSeeds(uint32_t& index1, uint32_t& index2, uint32_t total); - - virtual NodePtr chooseSubtree(const TimeRegion& mbr, uint32_t level, std::stack& pathBuffer) = 0; - virtual NodePtr findLeaf(const TimeRegion& mbr, id_type id, std::stack& pathBuffer) = 0; - virtual NodePtr findNode(const TimeRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split( - uint32_t dataLength, byte* pData, TimeRegion& mbr, id_type id, NodePtr& left, NodePtr& right, - TimeRegion& mbr2, id_type id2, bool bInsertMbr2 = false) = 0; - - MVRTree* m_pTree; - // Parent of all nodes. - - uint32_t m_level; - // The level of the node in the tree. - // Leaves are always at level 0. - - id_type m_identifier; - // The unique ID of this node. - - uint32_t m_children; - // The number of children pointed by this node. - - uint32_t m_capacity; - // Specifies the node capacity. - - TimeRegion m_nodeMBR; - // The minimum bounding region enclosing all data contained in the node. - - byte** m_pData; - // The data stored in the node. - - TimeRegionPtr* m_ptrMBR; - // The corresponding data MBRs. - - id_type* m_pIdentifier; - // The corresponding data identifiers. - - uint32_t* m_pDataLength; - - uint32_t m_totalDataLength; - - class RstarSplitEntry - { - public: - RstarSplitEntry(TimeRegion* pr, uint32_t index, uint32_t dimension) : - m_pRegion(pr), m_index(index), m_sortDim(dimension) {} - - static int compareLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] < pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] > pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return 1; - return 0; - } - - static int compareHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return 1; - return 0; - } - - TimeRegion* m_pRegion; - uint32_t m_index; - uint32_t m_sortDim; - }; // RstarSplitEntry - - class DeleteDataEntry - { - public: - DeleteDataEntry(uint32_t index, double d) : m_index(index), m_increase(d) {} - - static bool compare(DeleteDataEntry e1, DeleteDataEntry e2) { return e1.m_increase < e2.m_increase; } - - uint32_t m_index; - double m_increase; - }; // DeleteDataEntry - - // Needed to access protected members without having to cast from Node. - // It is more efficient than using member functions to access protected members. - friend class MVRTree; - friend class Leaf; - friend class Index; - friend class libsupermesh::Tools::PointerPool; - }; // Node - } -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h b/spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h deleted file mode 100644 index e182912..0000000 --- a/spatialindex-1.8.5/src/mvrtree/PointerPoolNode.h +++ /dev/null @@ -1,144 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Node.h" - -namespace libsupermesh { namespace Tools -{ - template<> class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - libsupermesh::SpatialIndex::MVRTree::Node* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - if (! m_pool.empty()) - { - libsupermesh::SpatialIndex::MVRTree::Node* p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - ++m_hits; - #endif - - return PoolPointer(p, this); - } - #ifndef NDEBUG - else - { - // fixme: well sort of... - ++m_pointerCount; - ++m_misses; - } - #endif - - return PoolPointer(); - } - - void release(libsupermesh::SpatialIndex::MVRTree::Node* p) - { - if (p != 0) - { - if (m_pool.size() < m_capacity) - { - if (p->m_pData != 0) - { - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - if (p->m_pData[cChild] != 0) delete[] p->m_pData[cChild]; - } - } - - p->m_level = 0; - p->m_identifier = -1; - p->m_children = 0; - p->m_totalDataLength = 0; - - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - protected: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - diff --git a/spatialindex-1.8.5/src/mvrtree/Statistics.cc b/spatialindex-1.8.5/src/mvrtree/Statistics.cc deleted file mode 100644 index 68601b4..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Statistics.cc +++ /dev/null @@ -1,203 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "Statistics.h" - -using namespace libsupermesh::SpatialIndex::MVRTree; - -Statistics::Statistics() -{ - reset(); -} - -Statistics::Statistics(const Statistics& s) -{ - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u32DeadIndexNodes = s.m_u32DeadIndexNodes; - m_u32DeadLeafNodes = s.m_u32DeadLeafNodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u64TotalData = s.m_u64TotalData; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; -} - -Statistics::~Statistics() -{ -} - -Statistics& Statistics::operator=(const Statistics& s) -{ - if (this != &s) - { - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u32DeadIndexNodes = s.m_u32DeadIndexNodes; - m_u32DeadLeafNodes = s.m_u32DeadLeafNodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u64TotalData = s.m_u64TotalData; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; - } - - return *this; -} - -uint64_t Statistics::getReads() const -{ - return m_u64Reads; -} - -uint64_t Statistics::getWrites() const -{ - return m_u64Writes; -} - -uint32_t Statistics::getNumberOfNodes() const -{ - return m_u32Nodes; -} - -uint64_t Statistics::getNumberOfData() const -{ - return m_u64Data; -} - -uint64_t Statistics::getSplits() const -{ - return m_u64Splits; -} - -uint64_t Statistics::getHits() const -{ - return m_u64Hits; -} - -uint64_t Statistics::getMisses() const -{ - return m_u64Misses; -} - -uint64_t Statistics::getAdjustments() const -{ - return m_u64Adjustments; -} - -uint64_t Statistics::getQueryResults() const -{ - return m_u64QueryResults; -} - -uint32_t Statistics::getTreeHeight() const -{ - uint32_t ret = 0; - - for (size_t cIndex = 0; cIndex < m_treeHeight.size(); ++cIndex) - { - ret = std::max(ret, m_treeHeight[cIndex]); - } - - return ret; -} - -uint32_t Statistics::getNumberOfNodesInLevel(uint32_t l) const -{ - try - { - return m_nodesInLevel.at(l); - } - catch (...) - { - throw libsupermesh::Tools::IndexOutOfBoundsException(l); - } -} - -void Statistics::reset() -{ - m_u64Reads = 0; - m_u64Writes = 0; - m_u64Splits = 0; - m_u64Hits = 0; - m_u64Misses = 0; - m_u32Nodes = 0; - m_u32DeadIndexNodes = 0; - m_u32DeadLeafNodes = 0; - m_u64Adjustments = 0; - m_u64QueryResults = 0; - m_u64Data = 0; - m_u64TotalData = 0; - m_treeHeight.clear(); - m_nodesInLevel.clear(); -} - -std::ostream& libsupermesh::SpatialIndex::MVRTree::operator<<(std::ostream& os, const Statistics& s) -{ - os << "Reads: " << s.m_u64Reads << std::endl - << "Writes: " << s.m_u64Writes << std::endl - << "Hits: " << s.m_u64Hits << std::endl - << "Misses: " << s.m_u64Misses << std::endl - << "Number of live data: " << s.m_u64Data << std::endl - << "Total number of data: " << s.m_u64TotalData << std::endl - << "Number of nodes: " << s.m_u32Nodes << std::endl - << "Numer of dead index nodes: " << s.m_u32DeadIndexNodes << std::endl - << "Numer of dead leaf nodes: " << s.m_u32DeadLeafNodes << std::endl; - - for (size_t cTree = 0; cTree < s.m_treeHeight.size(); ++cTree) - { - os << "Tree " << cTree << ", Height " << s.m_treeHeight[cTree] << std::endl; - } - - for (size_t cLevel = 0; cLevel < s.m_nodesInLevel.size(); ++cLevel) - { - os << "Level " << cLevel << " pages: " << s.m_nodesInLevel[cLevel] << std::endl; - } - - os << "Splits: " << s.m_u64Splits << std::endl - << "Adjustments: " << s.m_u64Adjustments << std::endl - << "Query results: " << s.m_u64QueryResults << std::endl; - - return os; -} diff --git a/spatialindex-1.8.5/src/mvrtree/Statistics.h b/spatialindex-1.8.5/src/mvrtree/Statistics.h deleted file mode 100644 index 2b56641..0000000 --- a/spatialindex-1.8.5/src/mvrtree/Statistics.h +++ /dev/null @@ -1,110 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace MVRTree - { - class MVRTree; - class Node; - class Leaf; - class Index; - - class Statistics : public libsupermesh::SpatialIndex::IStatistics - { - public: - Statistics(); - Statistics(const Statistics&); - virtual ~Statistics(); - Statistics& operator=(const Statistics&); - - // - // IStatistics interface - // - virtual uint64_t getReads() const; - virtual uint64_t getWrites() const; - virtual uint32_t getNumberOfNodes() const; - virtual uint64_t getNumberOfData() const; - - virtual uint64_t getSplits() const; - virtual uint64_t getHits() const; - virtual uint64_t getMisses() const; - virtual uint64_t getAdjustments() const; - virtual uint64_t getQueryResults() const; - virtual uint32_t getTreeHeight() const; - virtual uint32_t getNumberOfNodesInLevel(uint32_t l) const; - - private: - void reset(); - - uint64_t m_u64Reads; - - uint64_t m_u64Writes; - - uint64_t m_u64Splits; - - uint64_t m_u64Hits; - - uint64_t m_u64Misses; - - uint32_t m_u32Nodes; - - uint32_t m_u32DeadIndexNodes; - - uint32_t m_u32DeadLeafNodes; - - uint64_t m_u64Adjustments; - - uint64_t m_u64QueryResults; - - uint64_t m_u64Data; - - uint64_t m_u64TotalData; - - std::vector m_treeHeight; - - std::vector m_nodesInLevel; - - friend class MVRTree; - friend class Node; - friend class Index; - friend class Leaf; - - friend std::ostream& operator<<(std::ostream& os, const Statistics& s); - }; // Statistics - - std::ostream& operator<<(std::ostream& os, const Statistics& s); - } -} } - diff --git a/spatialindex-1.8.5/src/rtree/BulkLoader.cc b/spatialindex-1.8.5/src/rtree/BulkLoader.cc deleted file mode 100644 index 7aca14a..0000000 --- a/spatialindex-1.8.5/src/rtree/BulkLoader.cc +++ /dev/null @@ -1,471 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#ifndef _MSC_VER -#include -#endif - -#include - -#include "RTree.h" -#include "Leaf.h" -#include "Index.h" -#include "BulkLoader.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -// -// ExternalSorter::Record -// -ExternalSorter::Record::Record() -: m_pData(0) -{ -} - -ExternalSorter::Record::Record(const Region& r, id_type id, uint32_t len, byte* pData, uint32_t s) -: m_r(r), m_id(id), m_len(len), m_pData(pData), m_s(s) -{ -} - -ExternalSorter::Record::~Record() -{ - delete[] m_pData; -} - -bool ExternalSorter::Record::operator<(const Record& r) const -{ - if (m_s != r.m_s) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::Record::operator<: Incompatible sorting dimensions."); - - if (m_r.m_pHigh[m_s] + m_r.m_pLow[m_s] < r.m_r.m_pHigh[m_s] + r.m_r.m_pLow[m_s]) - return true; - else - return false; -} - -void ExternalSorter::Record::storeToFile(libsupermesh::Tools::TemporaryFile& f) -{ - f.write(static_cast(m_id)); - f.write(m_r.m_dimension); - f.write(m_s); - - for (uint32_t i = 0; i < m_r.m_dimension; ++i) - { - f.write(m_r.m_pLow[i]); - f.write(m_r.m_pHigh[i]); - } - - f.write(m_len); - if (m_len > 0) f.write(m_len, m_pData); -} - -void ExternalSorter::Record::loadFromFile(libsupermesh::Tools::TemporaryFile& f) -{ - m_id = static_cast(f.readUInt64()); - uint32_t dim = f.readUInt32(); - m_s = f.readUInt32(); - - if (dim != m_r.m_dimension) - { - delete[] m_r.m_pLow; - delete[] m_r.m_pHigh; - m_r.m_dimension = dim; - m_r.m_pLow = new double[dim]; - m_r.m_pHigh = new double[dim]; - } - - for (uint32_t i = 0; i < m_r.m_dimension; ++i) - { - m_r.m_pLow[i] = f.readDouble(); - m_r.m_pHigh[i] = f.readDouble(); - } - - m_len = f.readUInt32(); - delete[] m_pData; m_pData = 0; - if (m_len > 0) f.readBytes(m_len, &m_pData); -} - -// -// ExternalSorter -// -ExternalSorter::ExternalSorter(uint32_t u32PageSize, uint32_t u32BufferPages) -: m_bInsertionPhase(true), m_u32PageSize(u32PageSize), - m_u32BufferPages(u32BufferPages), m_u64TotalEntries(0), m_stI(0) -{ -} - -ExternalSorter::~ExternalSorter() -{ - for (m_stI = 0; m_stI < m_buffer.size(); ++m_stI) delete m_buffer[m_stI]; -} - -void ExternalSorter::insert(Record* r) -{ - if (m_bInsertionPhase == false) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::insert: Input has already been sorted."); - - m_buffer.push_back(r); - ++m_u64TotalEntries; - - // this will create the initial, sorted buckets before the - // external merge sort. - if (m_buffer.size() >= m_u32PageSize * m_u32BufferPages) - { - std::sort(m_buffer.begin(), m_buffer.end(), Record::SortAscending()); - libsupermesh::Tools::TemporaryFile* tf = new libsupermesh::Tools::TemporaryFile(); - for (size_t j = 0; j < m_buffer.size(); ++j) - { - m_buffer[j]->storeToFile(*tf); - delete m_buffer[j]; - } - m_buffer.clear(); - tf->rewindForReading(); - m_runs.push_back(libsupermesh::Tools::SmartPointer(tf)); - } -} - -void ExternalSorter::sort() -{ - if (m_bInsertionPhase == false) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::sort: Input has already been sorted."); - - if (m_runs.empty()) - { - // The data fits in main memory. No need to store to disk. - std::sort(m_buffer.begin(), m_buffer.end(), Record::SortAscending()); - m_bInsertionPhase = false; - return; - } - - if (m_buffer.size() > 0) - { - // Whatever remained in the buffer (if not filled) needs to be stored - // as the final bucket. - std::sort(m_buffer.begin(), m_buffer.end(), Record::SortAscending()); - libsupermesh::Tools::TemporaryFile* tf = new libsupermesh::Tools::TemporaryFile(); - for (size_t j = 0; j < m_buffer.size(); ++j) - { - m_buffer[j]->storeToFile(*tf); - delete m_buffer[j]; - } - m_buffer.clear(); - tf->rewindForReading(); - m_runs.push_back(libsupermesh::Tools::SmartPointer(tf)); - } - - if (m_runs.size() == 1) - { - m_sortedFile = m_runs.front(); - } - else - { - Record* r = 0; - - while (m_runs.size() > 1) - { - libsupermesh::Tools::SmartPointer tf(new libsupermesh::Tools::TemporaryFile()); - std::vector > buckets; - std::vector > buffers; - std::priority_queue, PQEntry::SortAscending> pq; - - // initialize buffers and priority queue. - std::list >::iterator it = m_runs.begin(); - for (uint32_t i = 0; i < (std::min)(static_cast(m_runs.size()), m_u32BufferPages); ++i) - { - buckets.push_back(*it); - buffers.push_back(std::queue()); - - r = new Record(); - r->loadFromFile(**it); - // a run cannot be empty initially, so this should never fail. - pq.push(PQEntry(r, i)); - - for (uint32_t j = 0; j < m_u32PageSize - 1; ++j) - { - // fill the buffer with the rest of the page of records. - try - { - r = new Record(); - r->loadFromFile(**it); - buffers.back().push(r); - } - catch (libsupermesh::Tools::EndOfStreamException) - { - delete r; - break; - } - } - ++it; - } - - // exhaust buckets, buffers, and priority queue. - while (! pq.empty()) - { - PQEntry e = pq.top(); pq.pop(); - e.m_r->storeToFile(*tf); - delete e.m_r; - - if (! buckets[e.m_u32Index]->eof() && buffers[e.m_u32Index].empty()) - { - for (uint32_t j = 0; j < m_u32PageSize; ++j) - { - try - { - r = new Record(); - r->loadFromFile(*buckets[e.m_u32Index]); - buffers[e.m_u32Index].push(r); - } - catch (libsupermesh::Tools::EndOfStreamException) - { - delete r; - break; - } - } - } - - if (! buffers[e.m_u32Index].empty()) - { - e.m_r = buffers[e.m_u32Index].front(); - buffers[e.m_u32Index].pop(); - pq.push(e); - } - } - - tf->rewindForReading(); - - // check if another pass is needed. - uint32_t u32Count = std::min(static_cast(m_runs.size()), m_u32BufferPages); - for (uint32_t i = 0; i < u32Count; ++i) - { - m_runs.pop_front(); - } - - if (m_runs.size() == 0) - { - m_sortedFile = tf; - break; - } - else - { - m_runs.push_back(tf); - } - } - } - - m_bInsertionPhase = false; -} - -ExternalSorter::Record* ExternalSorter::getNextRecord() -{ - if (m_bInsertionPhase == true) - throw libsupermesh::Tools::IllegalStateException("ExternalSorter::getNextRecord: Input has not been sorted yet."); - - Record* ret; - - if (m_sortedFile.get() == 0) - { - if (m_stI < m_buffer.size()) - { - ret = m_buffer[m_stI]; - m_buffer[m_stI] = 0; - ++m_stI; - } - else - throw libsupermesh::Tools::EndOfStreamException(""); - } - else - { - ret = new Record(); - ret->loadFromFile(*m_sortedFile); - } - - return ret; -} - -inline uint64_t ExternalSorter::getTotalEntries() const -{ - return m_u64TotalEntries; -} - -// -// BulkLoader -// -void BulkLoader::bulkLoadUsingSTR( - libsupermesh::SpatialIndex::RTree::RTree* pTree, - IDataStream& stream, - uint32_t bindex, - uint32_t bleaf, - uint32_t pageSize, - uint32_t numberOfPages -) { - if (! stream.hasNext()) - throw libsupermesh::Tools::IllegalArgumentException( - "RTree::BulkLoader::bulkLoadUsingSTR: Empty data stream given." - ); - - NodePtr n = pTree->readNode(pTree->m_rootID); - pTree->deleteNode(n.get()); - - #ifndef NDEBUG - std::cerr << "RTree::BulkLoader: Sorting data." << std::endl; - #endif - - libsupermesh::Tools::SmartPointer es = libsupermesh::Tools::SmartPointer(new ExternalSorter(pageSize, numberOfPages)); - - while (stream.hasNext()) - { - Data* d = reinterpret_cast(stream.getNext()); - if (d == 0) - throw libsupermesh::Tools::IllegalArgumentException( - "bulkLoadUsingSTR: RTree bulk load expects libsupermesh::SpatialIndex::RTree::Data entries." - ); - - es->insert(new ExternalSorter::Record(d->m_region, d->m_id, d->m_dataLength, d->m_pData, 0)); - d->m_pData = 0; - delete d; - } - es->sort(); - - pTree->m_stats.m_u64Data = es->getTotalEntries(); - - // create index levels. - uint32_t level = 0; - - while (true) - { - #ifndef NDEBUG - std::cerr << "RTree::BulkLoader: Building level " << level << std::endl; - #endif - - pTree->m_stats.m_nodesInLevel.push_back(0); - - libsupermesh::Tools::SmartPointer es2 = libsupermesh::Tools::SmartPointer(new ExternalSorter(pageSize, numberOfPages)); - createLevel(pTree, es, 0, bleaf, bindex, level++, es2, pageSize, numberOfPages); - es = es2; - - if (es->getTotalEntries() == 1) break; - es->sort(); - } - - pTree->m_stats.m_u32TreeHeight = level; - pTree->storeHeader(); -} - -void BulkLoader::createLevel( - libsupermesh::SpatialIndex::RTree::RTree* pTree, - libsupermesh::Tools::SmartPointer es, - uint32_t dimension, - uint32_t bleaf, - uint32_t bindex, - uint32_t level, - libsupermesh::Tools::SmartPointer es2, - uint32_t pageSize, - uint32_t numberOfPages -) { - uint64_t b = (level == 0) ? bleaf : bindex; - uint64_t P = static_cast(std::ceil(static_cast(es->getTotalEntries()) / static_cast(b))); - uint64_t S = static_cast(std::ceil(std::sqrt(static_cast(P)))); - - if (S == 1 || dimension == pTree->m_dimension - 1 || S * b == es->getTotalEntries()) - { - std::vector node; - ExternalSorter::Record* r; - - while (true) - { - try { r = es->getNextRecord(); } catch (libsupermesh::Tools::EndOfStreamException) { break; } - node.push_back(r); - - if (node.size() == b) - { - Node* n = createNode(pTree, node, level); - node.clear(); - pTree->writeNode(n); - es2->insert(new ExternalSorter::Record(n->m_nodeMBR, n->m_identifier, 0, 0, 0)); - pTree->m_rootID = n->m_identifier; - // special case when the root has exactly bindex entries. - delete n; - } - } - - if (! node.empty()) - { - Node* n = createNode(pTree, node, level); - pTree->writeNode(n); - es2->insert(new ExternalSorter::Record(n->m_nodeMBR, n->m_identifier, 0, 0, 0)); - pTree->m_rootID = n->m_identifier; - delete n; - } - } - else - { - bool bMore = true; - - while (bMore) - { - ExternalSorter::Record* pR; - libsupermesh::Tools::SmartPointer es3 = libsupermesh::Tools::SmartPointer(new ExternalSorter(pageSize, numberOfPages)); - - for (uint64_t i = 0; i < S * b; ++i) - { - try { pR = es->getNextRecord(); } - catch (libsupermesh::Tools::EndOfStreamException) { bMore = false; break; } - pR->m_s = dimension + 1; - es3->insert(pR); - } - es3->sort(); - createLevel(pTree, es3, dimension + 1, bleaf, bindex, level, es2, pageSize, numberOfPages); - } - } -} - -Node* BulkLoader::createNode(libsupermesh::SpatialIndex::RTree::RTree* pTree, std::vector& e, uint32_t level) -{ - Node* n; - - if (level == 0) n = new Leaf(pTree, -1); - else n = new Index(pTree, -1, level); - - for (size_t cChild = 0; cChild < e.size(); ++cChild) - { - n->insertEntry(e[cChild]->m_len, e[cChild]->m_pData, e[cChild]->m_r, e[cChild]->m_id); - e[cChild]->m_pData = 0; - delete e[cChild]; - } - - return n; -} diff --git a/spatialindex-1.8.5/src/rtree/BulkLoader.h b/spatialindex-1.8.5/src/rtree/BulkLoader.h deleted file mode 100644 index 39a0a6e..0000000 --- a/spatialindex-1.8.5/src/rtree/BulkLoader.h +++ /dev/null @@ -1,138 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class ExternalSorter - { - public: - class Record - { - public: - Record(); - Record(const Region& r, id_type id, uint32_t len, byte* pData, uint32_t s); - ~Record(); - - bool operator<(const Record& r) const; - - void storeToFile(libsupermesh::Tools::TemporaryFile& f); - void loadFromFile(libsupermesh::Tools::TemporaryFile& f); - - struct SortAscending { - bool operator()(const Record* r1, const Record* r2) const { - return *r1 < *r2; - } - }; - - - public: - Region m_r; - id_type m_id; - uint32_t m_len; - byte* m_pData; - uint32_t m_s; - }; - - public: - ExternalSorter(uint32_t u32PageSize, uint32_t u32BufferPages); - virtual ~ExternalSorter(); - - void insert(Record* r); - void sort(); - Record* getNextRecord(); - uint64_t getTotalEntries() const; - - private: - class PQEntry - { - public: - PQEntry(Record* r, uint32_t u32Index) : m_r(r), m_u32Index(u32Index) {} - - struct SortAscending { - bool operator()(const PQEntry& e1, const PQEntry& e2) const { - return *(e1.m_r) < *(e2.m_r); - } - }; - - - Record* m_r; - uint32_t m_u32Index; - }; - - private: - bool m_bInsertionPhase; - uint32_t m_u32PageSize; - uint32_t m_u32BufferPages; - libsupermesh::Tools::SmartPointer m_sortedFile; - std::list > m_runs; - std::vector m_buffer; - uint64_t m_u64TotalEntries; - uint32_t m_stI; - }; - - class BulkLoader - { - public: - void bulkLoadUsingSTR( - RTree* pTree, - IDataStream& stream, - uint32_t bindex, - uint32_t bleaf, - uint32_t pageSize, // The number of node entries per page. - uint32_t numberOfPages // The total number of pages to use. - ); - - protected: - void createLevel( - RTree* pTree, - libsupermesh::Tools::SmartPointer es, - uint32_t dimension, - uint32_t indexSize, - uint32_t leafSize, - uint32_t level, - libsupermesh::Tools::SmartPointer es2, - uint32_t pageSize, - uint32_t numberOfPages - ); - - Node* createNode( - RTree* pTree, - std::vector& e, - uint32_t level - ); - }; - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Index.cc b/spatialindex-1.8.5/src/rtree/Index.cc deleted file mode 100644 index 5e093e7..0000000 --- a/spatialindex-1.8.5/src/rtree/Index.cc +++ /dev/null @@ -1,384 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include "RTree.h" -#include "Node.h" -#include "Leaf.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -Index::~Index() -{ -} - -Index::Index(libsupermesh::SpatialIndex::RTree::RTree* pTree, id_type id, uint32_t level) : Node(pTree, id, level, pTree->m_indexCapacity) -{ -} - -NodePtr Index::chooseSubtree(const Region& mbr, uint32_t insertionLevel, std::stack& pathBuffer) -{ - if (m_level == insertionLevel) return NodePtr(this, &(m_pTree->m_indexPool)); - - pathBuffer.push(m_identifier); - - uint32_t child = 0; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - child = findLeastEnlargement(mbr); - break; - case RV_RSTAR: - if (m_level == 1) - { - // if this node points to leaves... - child = findLeastOverlap(mbr); - } - else - { - child = findLeastEnlargement(mbr); - } - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::chooseSubtree: Tree variant not supported."); - } - assert(child != std::numeric_limits::max()); - - NodePtr n = m_pTree->readNode(m_pIdentifier[child]); - NodePtr ret = n->chooseSubtree(mbr, insertionLevel, pathBuffer); - assert(n.unique()); - if (ret.get() == n.get()) n.relinquish(); - - return ret; -} - -NodePtr Index::findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_ptrMBR[cChild]->containsRegion(mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findLeaf(mbr, id, pathBuffer); - if (n.get() == l.get()) n.relinquish(); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} - -void Index::split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& ptrLeft, NodePtr& ptrRight) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::split: Tree variant not supported."); - } - - ptrLeft = m_pTree->m_indexPool.acquire(); - ptrRight = m_pTree->m_indexPool.acquire(); - - if (ptrLeft.get() == 0) ptrLeft = NodePtr(new Index(m_pTree, m_identifier, m_level), &(m_pTree->m_indexPool)); - if (ptrRight.get() == 0) ptrRight = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - - ptrLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - ptrRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - ptrLeft->insertEntry(0, 0, *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - ptrRight->insertEntry(0, 0, *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - } -} - -uint32_t Index::findLeastEnlargement(const Region& r) const -{ - double area = std::numeric_limits::max(); - uint32_t best = std::numeric_limits::max(); - - RegionPtr t = m_pTree->m_regionPool.acquire(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_ptrMBR[cChild]->getCombinedRegion(*t, r); - - double a = m_ptrMBR[cChild]->getArea(); - double enl = t->getArea() - a; - - if (enl < area) - { - area = enl; - best = cChild; - } - else if (enl == area) - { - // this will rarely happen, so compute best area on the fly only - // when necessary. - if (a < m_ptrMBR[best]->getArea()) best = cChild; - } - } - - return best; -} - -uint32_t Index::findLeastOverlap(const Region& r) const -{ - OverlapEntry** entries = new OverlapEntry*[m_children]; - - double leastOverlap = std::numeric_limits::max(); - double me = std::numeric_limits::max(); - OverlapEntry* best = 0; - - // find combined region and enlargement of every entry and store it. - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - try - { - entries[cChild] = new OverlapEntry(); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete entries[i]; - delete[] entries; - throw; - } - - entries[cChild]->m_index = cChild; - entries[cChild]->m_original = m_ptrMBR[cChild]; - entries[cChild]->m_combined = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->getCombinedRegion(*(entries[cChild]->m_combined), r); - entries[cChild]->m_oa = entries[cChild]->m_original->getArea(); - entries[cChild]->m_ca = entries[cChild]->m_combined->getArea(); - entries[cChild]->m_enlargement = entries[cChild]->m_ca - entries[cChild]->m_oa; - - if (entries[cChild]->m_enlargement < me) - { - me = entries[cChild]->m_enlargement; - best = entries[cChild]; - } - else if (entries[cChild]->m_enlargement == me && entries[cChild]->m_oa < best->m_oa) - { - best = entries[cChild]; - } - } - - if (me < -std::numeric_limits::epsilon() || me > std::numeric_limits::epsilon()) - { - uint32_t cIterations; - - if (m_children > m_pTree->m_nearMinimumOverlapFactor) - { - // sort entries in increasing order of enlargement. - ::qsort(entries, m_children, - sizeof(OverlapEntry*), - OverlapEntry::compareEntries); - assert(entries[0]->m_enlargement <= entries[m_children - 1]->m_enlargement); - - cIterations = m_pTree->m_nearMinimumOverlapFactor; - } - else - { - cIterations = m_children; - } - - // calculate overlap of most important original entries (near minimum overlap cost). - for (uint32_t cIndex = 0; cIndex < cIterations; ++cIndex) - { - double dif = 0.0; - OverlapEntry* e = entries[cIndex]; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (e->m_index != cChild) - { - double f = e->m_combined->getIntersectingArea(*(m_ptrMBR[cChild])); - if (f != 0.0) dif += f - e->m_original->getIntersectingArea(*(m_ptrMBR[cChild])); - } - } // for (cChild) - - if (dif < leastOverlap) - { - leastOverlap = dif; - best = entries[cIndex]; - } - else if (dif == leastOverlap) - { - if (e->m_enlargement == best->m_enlargement) - { - // keep the one with least area. - if (e->m_original->getArea() < best->m_original->getArea()) best = entries[cIndex]; - } - else - { - // keep the one with least enlargement. - if (e->m_enlargement < best->m_enlargement) best = entries[cIndex]; - } - } - } // for (cIndex) - } - - uint32_t ret = best->m_index; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - delete entries[cChild]; - } - delete[] entries; - - return ret; -} - -void Index::adjustTree(Node* n, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n->m_identifier) break; - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - bool bContained = m_nodeMBR.containsRegion(n->m_nodeMBR); - bool bTouches = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool bRecompute = (! bContained || (bTouches && m_pTree->m_bTightMBRs)); - - *(m_ptrMBR[child]) = n->m_nodeMBR; - - if (bRecompute) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - m_pTree->writeNode(this); - - if (bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} - -void Index::adjustTree(Node* n1, Node* n2, std::stack& pathBuffer, byte* overflowTable) -{ - ++(m_pTree->m_stats.m_u64Adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n1->m_identifier) break; - } - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - bool bContained = m_nodeMBR.containsRegion(n1->m_nodeMBR); - bool bTouches = m_nodeMBR.touchesRegion(*(m_ptrMBR[child])); - bool bRecompute = (! bContained || (bTouches && m_pTree->m_bTightMBRs)); - - *(m_ptrMBR[child]) = n1->m_nodeMBR; - - if (bRecompute) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - } - - // No write necessary here. insertData will write the node if needed. - //m_pTree->writeNode(this); - - bool bAdjusted = insertData(0, 0, n2->m_nodeMBR, n2->m_identifier, pathBuffer, overflowTable); - - // if n2 is contained in the node and there was no split or reinsert, - // we need to adjust only if recalculation took place. - // In all other cases insertData above took care of adjustment. - if ((! bAdjusted) && bRecompute && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} diff --git a/spatialindex-1.8.5/src/rtree/Index.h b/spatialindex-1.8.5/src/rtree/Index.h deleted file mode 100644 index b01f021..0000000 --- a/spatialindex-1.8.5/src/rtree/Index.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class Index : public Node - { - public: - virtual ~Index(); - - protected: - Index(RTree* pTree, id_type id, uint32_t level); - - virtual NodePtr chooseSubtree(const Region& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& left, NodePtr& right); - - uint32_t findLeastEnlargement(const Region&) const; - uint32_t findLeastOverlap(const Region&) const; - - void adjustTree(Node*, std::stack&); - void adjustTree(Node*, Node*, std::stack&, byte* overflowTable); - - class OverlapEntry - { - public: - uint32_t m_index; - double m_enlargement; - RegionPtr m_original; - RegionPtr m_combined; - double m_oa; - double m_ca; - - static int compareEntries(const void* pv1, const void* pv2) - { - OverlapEntry* pe1 = * (OverlapEntry**) pv1; - OverlapEntry* pe2 = * (OverlapEntry**) pv2; - - if (pe1->m_enlargement < pe2->m_enlargement) return -1; - if (pe1->m_enlargement > pe2->m_enlargement) return 1; - return 0; - } - }; // OverlapEntry - - friend class RTree; - friend class Node; - friend class BulkLoader; - }; // Index - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Leaf.cc b/spatialindex-1.8.5/src/rtree/Leaf.cc deleted file mode 100644 index 7cb4b1c..0000000 --- a/spatialindex-1.8.5/src/rtree/Leaf.cc +++ /dev/null @@ -1,151 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "RTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -Leaf::~Leaf() -{ -} - -Leaf::Leaf(libsupermesh::SpatialIndex::RTree::RTree* pTree, id_type id): Node(pTree, id, 0, pTree->m_leafCapacity) -{ -} - -NodePtr Leaf::chooseSubtree(const Region&, uint32_t, std::stack&) -{ - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - return NodePtr(this, &(m_pTree->m_leafPool)); -} - -NodePtr Leaf::findLeaf(const Region& mbr, id_type id, std::stack&) -{ - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - if (m_pIdentifier[cChild] == id && mbr == *(m_ptrMBR[cChild])) return NodePtr(this, &(m_pTree->m_leafPool)); - } - - return NodePtr(); -} - -void Leaf::split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight) -{ - ++(m_pTree->m_stats.m_u64Splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_QUADRATIC: - rtreeSplit(dataLength, pData, mbr, id, g1, g2); - break; - case RV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Leaf::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_leafPool.acquire(); - pRight = m_pTree->m_leafPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - if (pRight.get() == 0) pRight = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(m_pDataLength[g1[cIndex]], m_pData[g1[cIndex]], *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g1[cIndex]] = 0; - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(m_pDataLength[g2[cIndex]], m_pData[g2[cIndex]], *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g2[cIndex]] = 0; - } -} - -void Leaf::deleteData(id_type id, std::stack& pathBuffer) -{ - uint32_t child; - - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == id) break; - } - - deleteEntry(child); - m_pTree->writeNode(this); - - std::stack toReinsert; - NodePtr ptrThis(this, &(m_pTree->m_leafPool)); - condenseTree(toReinsert, pathBuffer, ptrThis); - ptrThis.relinquish(); - - // re-insert eliminated nodes. - while (! toReinsert.empty()) - { - NodePtr n = toReinsert.top(); toReinsert.pop(); - m_pTree->deleteNode(n.get()); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - // keep this in the for loop. The tree height might change after insertions. - byte* overflowTable = new byte[m_pTree->m_stats.m_u32TreeHeight]; - memset(overflowTable, 0, m_pTree->m_stats.m_u32TreeHeight); - m_pTree->insertData_impl(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild], n->m_level, overflowTable); - n->m_pData[cChild] = 0; - delete[] overflowTable; - } - if (n.get() == this) n.relinquish(); - } -} diff --git a/spatialindex-1.8.5/src/rtree/Leaf.h b/spatialindex-1.8.5/src/rtree/Leaf.h deleted file mode 100644 index 9ea10e7..0000000 --- a/spatialindex-1.8.5/src/rtree/Leaf.h +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class Leaf : public Node - { - public: - virtual ~Leaf(); - - protected: - Leaf(RTree* pTree, id_type id); - - virtual NodePtr chooseSubtree(const Region& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& left, NodePtr& right); - - virtual void deleteData(id_type id, std::stack& pathBuffer); - - friend class RTree; - friend class BulkLoader; - }; // Leaf - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Makefile.am b/spatialindex-1.8.5/src/rtree/Makefile.am deleted file mode 100644 index e1bcd62..0000000 --- a/spatialindex-1.8.5/src/rtree/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = librtree.la -INCLUDES = -I../../include -librtree_la_SOURCES = BulkLoader.cc Index.cc Leaf.cc Node.cc RTree.cc Statistics.cc BulkLoader.h Index.h Leaf.h Node.h PointerPoolNode.h RTree.h Statistics.h diff --git a/spatialindex-1.8.5/src/rtree/Makefile.in b/spatialindex-1.8.5/src/rtree/Makefile.in deleted file mode 100644 index 85aeaf2..0000000 --- a/spatialindex-1.8.5/src/rtree/Makefile.in +++ /dev/null @@ -1,602 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/rtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -librtree_la_LIBADD = -am_librtree_la_OBJECTS = BulkLoader.lo Index.lo Leaf.lo Node.lo \ - RTree.lo Statistics.lo -librtree_la_OBJECTS = $(am_librtree_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(librtree_la_SOURCES) -DIST_SOURCES = $(librtree_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = librtree.la -INCLUDES = -I../../include -librtree_la_SOURCES = BulkLoader.cc Index.cc Leaf.cc Node.cc RTree.cc Statistics.cc BulkLoader.h Index.h Leaf.h Node.h PointerPoolNode.h RTree.h Statistics.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/rtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -librtree.la: $(librtree_la_OBJECTS) $(librtree_la_DEPENDENCIES) $(EXTRA_librtree_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(librtree_la_OBJECTS) $(librtree_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BulkLoader.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Leaf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTree.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Statistics.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/rtree/Node.cc b/spatialindex-1.8.5/src/rtree/Node.cc deleted file mode 100644 index 28ffc23..0000000 --- a/spatialindex-1.8.5/src/rtree/Node.cc +++ /dev/null @@ -1,1087 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -#include "RTree.h" -#include "Node.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::RTree; - -// -// libsupermesh::Tools::IObject interface -// -libsupermesh::Tools::IObject* Node::clone() -{ - throw libsupermesh::Tools::NotSupportedException("IObject::clone should never be called."); -} - -// -// libsupermesh::Tools::ISerializable interface -// -uint32_t Node::getByteArraySize() -{ - return - (sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(uint32_t) + - (m_children * (m_pTree->m_dimension * sizeof(double) * 2 + sizeof(id_type) + sizeof(uint32_t))) + - m_totalDataLength + - (2 * m_pTree->m_dimension * sizeof(double))); -} - -void Node::loadFromByteArray(const byte* ptr) -{ - m_nodeMBR = m_pTree->m_infiniteRegion; - - // skip the node type information, it is not needed. - ptr += sizeof(uint32_t); - - memcpy(&m_level, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&m_children, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - m_ptrMBR[u32Child] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[u32Child]) = m_pTree->m_infiniteRegion; - - memcpy(m_ptrMBR[u32Child]->m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[u32Child]->m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(&(m_pIdentifier[u32Child]), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(&(m_pDataLength[u32Child]), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[u32Child] > 0) - { - m_totalDataLength += m_pDataLength[u32Child]; - m_pData[u32Child] = new byte[m_pDataLength[u32Child]]; - memcpy(m_pData[u32Child], ptr, m_pDataLength[u32Child]); - ptr += m_pDataLength[u32Child]; - } - else - { - m_pData[u32Child] = 0; - } - - //m_nodeMBR.combineRegion(*(m_ptrMBR[u32Child])); - } - - memcpy(m_nodeMBR.m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -void Node::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - - *data = new byte[len]; - byte* ptr = *data; - - uint32_t nodeType; - - if (m_level == 0) nodeType = PersistentLeaf; - else nodeType = PersistentIndex; - - memcpy(ptr, &nodeType, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_level, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_children, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - memcpy(ptr, m_ptrMBR[u32Child]->m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[u32Child]->m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, &(m_pIdentifier[u32Child]), sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(ptr, &(m_pDataLength[u32Child]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[u32Child] > 0) - { - memcpy(ptr, m_pData[u32Child], m_pDataLength[u32Child]); - ptr += m_pDataLength[u32Child]; - } - } - - // store the node MBR for efficiency. This increases the node size a little bit. - memcpy(ptr, m_nodeMBR.m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pHigh, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); - - assert(len == (ptr - *data) + m_pTree->m_dimension * sizeof(double)); -} - -// -// libsupermesh::SpatialIndex::IEntry interface -// -libsupermesh::SpatialIndex::id_type Node::getIdentifier() const -{ - return m_identifier; -} - -void Node::getShape(IShape** out) const -{ - *out = new Region(m_nodeMBR); -} - -// -// libsupermesh::SpatialIndex::INode interface -// -uint32_t Node::getChildrenCount() const -{ - return m_children; -} - -libsupermesh::SpatialIndex::id_type Node::getChildIdentifier(uint32_t index) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pIdentifier[index]; -} - -void Node::getChildShape(uint32_t index, IShape** out) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - *out = new Region(*(m_ptrMBR[index])); -} - -void Node::getChildData(uint32_t index, uint32_t& length, byte** data) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - if (m_pData[index] == NULL) - { - length = 0; - data = NULL; - } - else - { - length = m_pDataLength[index]; - *data = m_pData[index]; - } -} - -uint32_t Node::getLevel() const -{ - return m_level; -} - -bool Node::isLeaf() const -{ - return (m_level == 0); -} - -bool Node::isIndex() const -{ - return (m_level != 0); -} - -// -// Internal -// - -Node::Node() : - m_pTree(0), - m_level(0), - m_identifier(-1), - m_children(0), - m_capacity(0), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ -} - -Node::Node(libsupermesh::SpatialIndex::RTree::RTree* pTree, id_type id, uint32_t level, uint32_t capacity) : - m_pTree(pTree), - m_level(level), - m_identifier(id), - m_children(0), - m_capacity(capacity), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ - m_nodeMBR.makeInfinite(m_pTree->m_dimension); - - try - { - m_pDataLength = new uint32_t[m_capacity + 1]; - m_pData = new byte*[m_capacity + 1]; - m_ptrMBR = new RegionPtr[m_capacity + 1]; - m_pIdentifier = new id_type[m_capacity + 1]; - } - catch (...) - { - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - throw; - } -} - -Node::~Node() -{ - if (m_pData != 0) - { - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - if (m_pData[u32Child] != 0) delete[] m_pData[u32Child]; - } - - delete[] m_pData; - } - - delete[] m_pDataLength; - delete[] m_ptrMBR; - delete[] m_pIdentifier; -} - -Node& Node::operator=(const Node&) -{ - throw libsupermesh::Tools::IllegalStateException("operator =: This should never be called."); -} - -void Node::insertEntry(uint32_t dataLength, byte* pData, Region& mbr, id_type id) -{ - assert(m_children < m_capacity); - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - m_totalDataLength += dataLength; - ++m_children; - - m_nodeMBR.combineRegion(mbr); -} - -void Node::deleteEntry(uint32_t index) -{ - assert(index >= 0 && index < m_children); - - // cache it, since I might need it for "touches" later. - RegionPtr ptrR = m_ptrMBR[index]; - - m_totalDataLength -= m_pDataLength[index]; - if (m_pData[index] != 0) delete[] m_pData[index]; - - if (m_children > 1 && index != m_children - 1) - { - m_pDataLength[index] = m_pDataLength[m_children - 1]; - m_pData[index] = m_pData[m_children - 1]; - m_ptrMBR[index] = m_ptrMBR[m_children - 1]; - m_pIdentifier[index] = m_pIdentifier[m_children - 1]; - } - - --m_children; - - // WARNING: index has now changed. Do not use it below here. - - if (m_children == 0) - { - m_nodeMBR = m_pTree->m_infiniteRegion; - } - else if (m_pTree->m_bTightMBRs && m_nodeMBR.touchesRegion(*ptrR)) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[u32Child]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[u32Child]->m_pHigh[cDim]); - } - } - } -} - -bool Node::insertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable) -{ - if (m_children < m_capacity) - { - bool adjusted = false; - - // this has to happen before insertEntry modifies m_nodeMBR. - bool b = m_nodeMBR.containsRegion(mbr); - - insertEntry(dataLength, pData, mbr, id); - m_pTree->writeNode(this); - - if ((! b) && (! pathBuffer.empty())) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - adjusted = true; - } - - return adjusted; - } - else if (m_pTree->m_treeVariant == RV_RSTAR && (! pathBuffer.empty()) && overflowTable[m_level] == 0) - { - overflowTable[m_level] = 1; - - std::vector vReinsert, vKeep; - reinsertData(dataLength, pData, mbr, id, vReinsert, vKeep); - - uint32_t lReinsert = static_cast(vReinsert.size()); - uint32_t lKeep = static_cast(vKeep.size()); - - byte** reinsertdata = 0; - RegionPtr* reinsertmbr = 0; - id_type* reinsertid = 0; - uint32_t* reinsertlen = 0; - byte** keepdata = 0; - RegionPtr* keepmbr = 0; - id_type* keepid = 0; - uint32_t* keeplen = 0; - - try - { - reinsertdata = new byte*[lReinsert]; - reinsertmbr = new RegionPtr[lReinsert]; - reinsertid = new id_type[lReinsert]; - reinsertlen = new uint32_t[lReinsert]; - - keepdata = new byte*[m_capacity + 1]; - keepmbr = new RegionPtr[m_capacity + 1]; - keepid = new id_type[m_capacity + 1]; - keeplen = new uint32_t[m_capacity + 1]; - } - catch (...) - { - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - delete[] keepdata; - delete[] keepmbr; - delete[] keepid; - delete[] keeplen; - throw; - } - - uint32_t cIndex; - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - reinsertlen[cIndex] = m_pDataLength[vReinsert[cIndex]]; - reinsertdata[cIndex] = m_pData[vReinsert[cIndex]]; - reinsertmbr[cIndex] = m_ptrMBR[vReinsert[cIndex]]; - reinsertid[cIndex] = m_pIdentifier[vReinsert[cIndex]]; - } - - for (cIndex = 0; cIndex < lKeep; ++cIndex) - { - keeplen[cIndex] = m_pDataLength[vKeep[cIndex]]; - keepdata[cIndex] = m_pData[vKeep[cIndex]]; - keepmbr[cIndex] = m_ptrMBR[vKeep[cIndex]]; - keepid[cIndex] = m_pIdentifier[vKeep[cIndex]]; - } - - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - - m_pDataLength = keeplen; - m_pData = keepdata; - m_ptrMBR = keepmbr; - m_pIdentifier = keepid; - m_children = lKeep; - m_totalDataLength = 0; - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) m_totalDataLength += m_pDataLength[u32Child]; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t u32Child = 0; u32Child < m_children; ++u32Child) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[u32Child]->m_pLow[cDim]); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[u32Child]->m_pHigh[cDim]); - } - } - - m_pTree->writeNode(this); - - // Divertion from R*-Tree algorithm here. First adjust - // the path to the root, then start reinserts, to avoid complicated handling - // of changes to the same node from multiple insertions. - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - m_pTree->insertData_impl( - reinsertlen[cIndex], reinsertdata[cIndex], - *(reinsertmbr[cIndex]), reinsertid[cIndex], - m_level, overflowTable); - } - - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - - return true; - } - else - { - NodePtr n; - NodePtr nn; - split(dataLength, pData, mbr, id, n, nn); - - if (pathBuffer.empty()) - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = -1; - nn->m_identifier = -1; - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - NodePtr ptrR = m_pTree->m_indexPool.acquire(); - if (ptrR.get() == 0) - { - ptrR = NodePtr(new Index(m_pTree, m_pTree->m_rootID, m_level + 1), &(m_pTree->m_indexPool)); - } - else - { - //ptrR->m_pTree = m_pTree; - ptrR->m_identifier = m_pTree->m_rootID; - ptrR->m_level = m_level + 1; - ptrR->m_nodeMBR = m_pTree->m_infiniteRegion; - } - - ptrR->insertEntry(0, 0, n->m_nodeMBR, n->m_identifier); - ptrR->insertEntry(0, 0, nn->m_nodeMBR, nn->m_identifier); - - m_pTree->writeNode(ptrR.get()); - - m_pTree->m_stats.m_nodesInLevel[m_level] = 2; - m_pTree->m_stats.m_nodesInLevel.push_back(1); - m_pTree->m_stats.m_u32TreeHeight = m_level + 2; - } - else - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = m_identifier; - nn->m_identifier = -1; - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(n.get(), nn.get(), pathBuffer, overflowTable); - } - - return true; - } -} - -void Node::reinsertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& reinsert, std::vector& keep) -{ - ReinsertEntry** v = new ReinsertEntry*[m_capacity + 1]; - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - PointPtr nc = m_pTree->m_pointPool.acquire(); - m_nodeMBR.getCenter(*nc); - PointPtr c = m_pTree->m_pointPool.acquire(); - - for (uint32_t u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - try - { - v[u32Child] = new ReinsertEntry(u32Child, 0.0); - } - catch (...) - { - for (uint32_t i = 0; i < u32Child; ++i) delete v[i]; - delete[] v; - throw; - } - - m_ptrMBR[u32Child]->getCenter(*c); - - // calculate relative distance of every entry from the node MBR (ignore square root.) - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - double d = nc->m_pCoords[cDim] - c->m_pCoords[cDim]; - v[u32Child]->m_dist += d * d; - } - } - - // sort by increasing order of distances. - ::qsort(v, m_capacity + 1, sizeof(ReinsertEntry*), ReinsertEntry::compareReinsertEntry); - - uint32_t cReinsert = static_cast(std::floor((m_capacity + 1) * m_pTree->m_reinsertFactor)); - - uint32_t cCount; - - for (cCount = 0; cCount < cReinsert; ++cCount) - { - reinsert.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - for (cCount = cReinsert; cCount < m_capacity + 1; ++cCount) - { - keep.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - delete[] v; -} - -void Node::rtreeSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - uint32_t u32Child; - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - // use this mask array for marking visited entries. - byte* mask = new byte[m_capacity + 1]; - memset(mask, 0, m_capacity + 1); - - // insert new data in the node for easier manipulation. Data arrays are always - // by one larger than node capacity. - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - // m_totalDataLength does not need to be increased here. - - // initialize each group with the seed entries. - uint32_t seed1, seed2; - pickSeeds(seed1, seed2); - - group1.push_back(seed1); - group2.push_back(seed2); - - mask[seed1] = 1; - mask[seed2] = 1; - - // find MBR of each group. - RegionPtr mbr1 = m_pTree->m_regionPool.acquire(); - *mbr1 = *(m_ptrMBR[seed1]); - RegionPtr mbr2 = m_pTree->m_regionPool.acquire(); - *mbr2 = *(m_ptrMBR[seed2]); - - // count how many entries are left unchecked (exclude the seeds here.) - uint32_t cRemaining = m_capacity + 1 - 2; - - while (cRemaining > 0) - { - if (minimumLoad - group1.size() == cRemaining) - { - // all remaining entries must be assigned to group1 to comply with minimun load requirement. - for (u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - if (mask[u32Child] == 0) - { - group1.push_back(u32Child); - mask[u32Child] = 1; - --cRemaining; - } - } - } - else if (minimumLoad - group2.size() == cRemaining) - { - // all remaining entries must be assigned to group2 to comply with minimun load requirement. - for (u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - if (mask[u32Child] == 0) - { - group2.push_back(u32Child); - mask[u32Child] = 1; - --cRemaining; - } - } - } - else - { - // For all remaining entries compute the difference of the cost of grouping an - // entry in either group. When done, choose the entry that yielded the maximum - // difference. In case of linear split, select any entry (e.g. the first one.) - uint32_t sel; - double md1 = 0.0, md2 = 0.0; - double m = -std::numeric_limits::max(); - double d1, d2, d; - double a1 = mbr1->getArea(); - double a2 = mbr2->getArea(); - - RegionPtr a = m_pTree->m_regionPool.acquire(); - RegionPtr b = m_pTree->m_regionPool.acquire(); - - for (u32Child = 0; u32Child < m_capacity + 1; ++u32Child) - { - if (mask[u32Child] == 0) - { - mbr1->getCombinedRegion(*a, *(m_ptrMBR[u32Child])); - d1 = a->getArea() - a1; - mbr2->getCombinedRegion(*b, *(m_ptrMBR[u32Child])); - d2 = b->getArea() - a2; - d = std::abs(d1 - d2); - - if (d > m) - { - m = d; - md1 = d1; md2 = d2; - sel = u32Child; - if (m_pTree->m_treeVariant== RV_LINEAR || m_pTree->m_treeVariant == RV_RSTAR) break; - } - } - } - - // determine the group where we should add the new entry. - int32_t group = -1; - - if (md1 < md2) - { - group1.push_back(sel); - group = 1; - } - else if (md2 < md1) - { - group2.push_back(sel); - group = 2; - } - else if (a1 < a2) - { - group1.push_back(sel); - group = 1; - } - else if (a2 < a1) - { - group2.push_back(sel); - group = 2; - } - else if (group1.size() < group2.size()) - { - group1.push_back(sel); - group = 1; - } - else if (group2.size() < group1.size()) - { - group2.push_back(sel); - group = 2; - } - else - { - group1.push_back(sel); - group = 1; - } - mask[sel] = 1; - --cRemaining; - if (group == 1) - { - mbr1->combineRegion(*(m_ptrMBR[sel])); - } - else - { - mbr2->combineRegion(*(m_ptrMBR[sel])); - } - } - } - - delete[] mask; -} - -void Node::rstarSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - RstarSplitEntry** dataLow = 0; - RstarSplitEntry** dataHigh = 0; - - try - { - dataLow = new RstarSplitEntry*[m_capacity + 1]; - dataHigh = new RstarSplitEntry*[m_capacity + 1]; - } - catch (...) - { - delete[] dataLow; - throw; - } - - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - // m_totalDataLength does not need to be increased here. - - uint32_t nodeSPF = static_cast( - std::floor((m_capacity + 1) * m_pTree->m_splitDistributionFactor)); - uint32_t splitDistribution = (m_capacity + 1) - (2 * nodeSPF) + 2; - - uint32_t u32Child = 0, cDim, cIndex; - - for (u32Child = 0; u32Child <= m_capacity; ++u32Child) - { - try - { - dataLow[u32Child] = new RstarSplitEntry(m_ptrMBR[u32Child].get(), u32Child, 0); - } - catch (...) - { - for (uint32_t i = 0; i < u32Child; ++i) delete dataLow[i]; - delete[] dataLow; - delete[] dataHigh; - throw; - } - - dataHigh[u32Child] = dataLow[u32Child]; - } - - double minimumMargin = std::numeric_limits::max(); - uint32_t splitAxis = std::numeric_limits::max(); - uint32_t sortOrder = std::numeric_limits::max(); - - // chooseSplitAxis. - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareLow); - ::qsort(dataHigh, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareHigh); - - // calculate sum of margins and overlap for all distributions. - double marginl = 0.0; - double marginh = 0.0; - - Region bbl1, bbl2, bbh1, bbh2; - - for (u32Child = 1; u32Child <= splitDistribution; ++u32Child) - { - uint32_t l = nodeSPF - 1 + u32Child; - - bbl1 = *(dataLow[0]->m_pRegion); - bbh1 = *(dataHigh[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bbl1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh1.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - bbl2 = *(dataLow[l]->m_pRegion); - bbh2 = *(dataHigh[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bbl2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - bbh2.combineRegion(*(dataHigh[cIndex]->m_pRegion)); - } - - marginl += bbl1.getMargin() + bbl2.getMargin(); - marginh += bbh1.getMargin() + bbh2.getMargin(); - } // for (u32Child) - - double margin = std::min(marginl, marginh); - - // keep minimum margin as split axis. - if (margin < minimumMargin) - { - minimumMargin = margin; - splitAxis = cDim; - sortOrder = (marginl < marginh) ? 0 : 1; - } - - // increase the dimension according to which the data entries should be sorted. - for (u32Child = 0; u32Child <= m_capacity; ++u32Child) - { - dataLow[u32Child]->m_sortDim = cDim + 1; - } - } // for (cDim) - - for (u32Child = 0; u32Child <= m_capacity; ++u32Child) - { - dataLow[u32Child]->m_sortDim = splitAxis; - } - - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), (sortOrder == 0) ? RstarSplitEntry::compareLow : RstarSplitEntry::compareHigh); - - double ma = std::numeric_limits::max(); - double mo = std::numeric_limits::max(); - uint32_t splitPoint = std::numeric_limits::max(); - - Region bb1, bb2; - - for (u32Child = 1; u32Child <= splitDistribution; ++u32Child) - { - uint32_t l = nodeSPF - 1 + u32Child; - - bb1 = *(dataLow[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bb1.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - bb2 = *(dataLow[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bb2.combineRegion(*(dataLow[cIndex]->m_pRegion)); - } - - double o = bb1.getIntersectingArea(bb2); - - if (o < mo) - { - splitPoint = u32Child; - mo = o; - ma = bb1.getArea() + bb2.getArea(); - } - else if (o == mo) - { - double a = bb1.getArea() + bb2.getArea(); - - if (a < ma) - { - splitPoint = u32Child; - ma = a; - } - } - } // for (u32Child) - - uint32_t l1 = nodeSPF - 1 + splitPoint; - - for (cIndex = 0; cIndex < l1; ++cIndex) - { - group1.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - for (cIndex = l1; cIndex <= m_capacity; ++cIndex) - { - group2.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - delete[] dataLow; - delete[] dataHigh; -} - -void Node::pickSeeds(uint32_t& index1, uint32_t& index2) -{ - double separation = -std::numeric_limits::max(); - double inefficiency = -std::numeric_limits::max(); - uint32_t cDim, u32Child, cIndex; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_RSTAR: - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - double leastLower = m_ptrMBR[0]->m_pLow[cDim]; - double greatestUpper = m_ptrMBR[0]->m_pHigh[cDim]; - uint32_t greatestLower = 0; - uint32_t leastUpper = 0; - double width; - - for (u32Child = 1; u32Child <= m_capacity; ++u32Child) - { - if (m_ptrMBR[u32Child]->m_pLow[cDim] > m_ptrMBR[greatestLower]->m_pLow[cDim]) greatestLower = u32Child; - if (m_ptrMBR[u32Child]->m_pHigh[cDim] < m_ptrMBR[leastUpper]->m_pHigh[cDim]) leastUpper = u32Child; - - leastLower = std::min(m_ptrMBR[u32Child]->m_pLow[cDim], leastLower); - greatestUpper = std::max(m_ptrMBR[u32Child]->m_pHigh[cDim], greatestUpper); - } - - width = greatestUpper - leastLower; - if (width <= 0) width = 1; - - double f = (m_ptrMBR[greatestLower]->m_pLow[cDim] - m_ptrMBR[leastUpper]->m_pHigh[cDim]) / width; - - if (f > separation) - { - index1 = leastUpper; - index2 = greatestLower; - separation = f; - } - } // for (cDim) - - if (index1 == index2) - { - if (index2 == 0) ++index2; - else --index2; - } - - break; - case RV_QUADRATIC: - // for each pair of Regions (account for overflow Region too!) - for (u32Child = 0; u32Child < m_capacity; ++u32Child) - { - double a = m_ptrMBR[u32Child]->getArea(); - - for (cIndex = u32Child + 1; cIndex <= m_capacity; ++cIndex) - { - // get the combined MBR of those two entries. - Region r; - m_ptrMBR[u32Child]->getCombinedRegion(r, *(m_ptrMBR[cIndex])); - - // find the inefficiency of grouping these entries together. - double d = r.getArea() - a - m_ptrMBR[cIndex]->getArea(); - - if (d > inefficiency) - { - inefficiency = d; - index1 = u32Child; - index2 = cIndex; - } - } // for (cIndex) - } // for (u32Child) - - break; - default: - throw libsupermesh::Tools::NotSupportedException("Node::pickSeeds: Tree variant not supported."); - } -} - -void Node::condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis) -{ - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - if (pathBuffer.empty()) - { - // eliminate root if it has only one child. - if (m_level != 0 && m_children == 1) - { - NodePtr ptrN = m_pTree->readNode(m_pIdentifier[0]); - m_pTree->deleteNode(ptrN.get()); - ptrN->m_identifier = m_pTree->m_rootID; - m_pTree->writeNode(ptrN.get()); - - m_pTree->m_stats.m_nodesInLevel.pop_back(); - m_pTree->m_stats.m_u32TreeHeight -= 1; - // HACK: pending deleteNode for deleted child will decrease nodesInLevel, later on. - m_pTree->m_stats.m_nodesInLevel[m_pTree->m_stats.m_u32TreeHeight - 1] = 2; - } - } - else - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrParent = m_pTree->readNode(cParent); - Index* p = static_cast(ptrParent.get()); - - // find the entry in the parent, that points to this node. - uint32_t child; - - for (child = 0; child != p->m_children; ++child) - { - if (p->m_pIdentifier[child] == m_identifier) break; - } - - if (m_children < minimumLoad) - { - // used space less than the minimum - // 1. eliminate node entry from the parent. deleteEntry will fix the parent's MBR. - p->deleteEntry(child); - // 2. add this node to the stack in order to reinsert its entries. - toReinsert.push(ptrThis); - } - else - { - // adjust the entry in 'p' to contain the new bounding region of this node. - *(p->m_ptrMBR[child]) = m_nodeMBR; - - // global recalculation necessary since the MBR can only shrink in size, - // due to data removal. - if (m_pTree->m_bTightMBRs) - { - for (uint32_t cDim = 0; cDim < p->m_nodeMBR.m_dimension; ++cDim) - { - p->m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - p->m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t u32Child = 0; u32Child < p->m_children; ++u32Child) - { - p->m_nodeMBR.m_pLow[cDim] = std::min(p->m_nodeMBR.m_pLow[cDim], p->m_ptrMBR[u32Child]->m_pLow[cDim]); - p->m_nodeMBR.m_pHigh[cDim] = std::max(p->m_nodeMBR.m_pHigh[cDim], p->m_ptrMBR[u32Child]->m_pHigh[cDim]); - } - } - } - } - - // write parent node back to storage. - m_pTree->writeNode(p); - - p->condenseTree(toReinsert, pathBuffer, ptrParent); - } -} diff --git a/spatialindex-1.8.5/src/rtree/Node.h b/spatialindex-1.8.5/src/rtree/Node.h deleted file mode 100644 index b08b676..0000000 --- a/spatialindex-1.8.5/src/rtree/Node.h +++ /dev/null @@ -1,199 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class RTree; - class Leaf; - class Index; - class Node; - - typedef libsupermesh::Tools::PoolPointer NodePtr; - - class Node : public libsupermesh::SpatialIndex::INode - { - public: - virtual ~Node(); - - // - // libsupermesh::Tools::IObject interface - // - virtual libsupermesh::Tools::IObject* clone(); - - // - // libsupermesh::Tools::ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // libsupermesh::SpatialIndex::IEntry interface - // - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - - // - // libsupermesh::SpatialIndex::INode interface - // - virtual uint32_t getChildrenCount() const; - virtual id_type getChildIdentifier(uint32_t index) const; - virtual void getChildShape(uint32_t index, IShape** out) const; - virtual void getChildData(uint32_t index, uint32_t& length, byte** data) const; - virtual uint32_t getLevel() const; - virtual bool isIndex() const; - virtual bool isLeaf() const; - - private: - Node(); - Node(RTree* pTree, id_type id, uint32_t level, uint32_t capacity); - - virtual Node& operator=(const Node&); - - virtual void insertEntry(uint32_t dataLength, byte* pData, Region& mbr, id_type id); - virtual void deleteEntry(uint32_t index); - - virtual bool insertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable); - virtual void reinsertData(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& reinsert, std::vector& keep); - - virtual void rtreeSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2); - virtual void rstarSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2); - - virtual void pickSeeds(uint32_t& index1, uint32_t& index2); - - virtual void condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis); - - virtual NodePtr chooseSubtree(const Region& mbr, uint32_t level, std::stack& pathBuffer) = 0; - virtual NodePtr findLeaf(const Region& mbr, id_type id, std::stack& pathBuffer) = 0; - - virtual void split(uint32_t dataLength, byte* pData, Region& mbr, id_type id, NodePtr& left, NodePtr& right) = 0; - - RTree* m_pTree; - // Parent of all nodes. - - uint32_t m_level; - // The level of the node in the tree. - // Leaves are always at level 0. - - id_type m_identifier; - // The unique ID of this node. - - uint32_t m_children; - // The number of children pointed by this node. - - uint32_t m_capacity; - // Specifies the node capacity. - - Region m_nodeMBR; - // The minimum bounding region enclosing all data contained in the node. - - byte** m_pData; - // The data stored in the node. - - RegionPtr* m_ptrMBR; - // The corresponding data MBRs. - - id_type* m_pIdentifier; - // The corresponding data identifiers. - - uint32_t* m_pDataLength; - - uint32_t m_totalDataLength; - - class RstarSplitEntry - { - public: - Region* m_pRegion; - uint32_t m_index; - uint32_t m_sortDim; - - RstarSplitEntry(Region* pr, uint32_t index, uint32_t dimension) : - m_pRegion(pr), m_index(index), m_sortDim(dimension) {} - - static int compareLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - assert(pe1->m_sortDim == pe2->m_sortDim); - - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] < pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] > pe2->m_pRegion->m_pLow[pe2->m_sortDim]) return 1; - return 0; - } - - static int compareHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - assert(pe1->m_sortDim == pe2->m_sortDim); - - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pHigh[pe2->m_sortDim]) return 1; - return 0; - } - }; // RstarSplitEntry - - class ReinsertEntry - { - public: - uint32_t m_index; - double m_dist; - - ReinsertEntry(uint32_t index, double dist) : m_index(index), m_dist(dist) {} - - static int compareReinsertEntry(const void* pv1, const void* pv2) - { - ReinsertEntry* pe1 = * (ReinsertEntry**) pv1; - ReinsertEntry* pe2 = * (ReinsertEntry**) pv2; - - if (pe1->m_dist < pe2->m_dist) return -1; - if (pe1->m_dist > pe2->m_dist) return 1; - return 0; - } - }; // ReinsertEntry - - // Needed to access protected members without having to cast from Node. - // It is more efficient than using member functions to access protected members. - friend class RTree; - friend class Leaf; - friend class Index; - friend class libsupermesh::Tools::PointerPool; - friend class BulkLoader; - }; // Node - } -} } diff --git a/spatialindex-1.8.5/src/rtree/PointerPoolNode.h b/spatialindex-1.8.5/src/rtree/PointerPoolNode.h deleted file mode 100644 index 1940a01..0000000 --- a/spatialindex-1.8.5/src/rtree/PointerPoolNode.h +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#ifndef __spatialindex_rtree_pointer_pool_node_h -#define __spatialindex_rtree_pointer_pool_node_h - -#include "Node.h" - -namespace libsupermesh { namespace Tools -{ - using namespace libsupermesh::SpatialIndex; - template<> class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - RTree::Node* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - if (! m_pool.empty()) - { - RTree::Node* p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - ++m_hits; - #endif - - return PoolPointer(p, this); - } - #ifndef NDEBUG - else - { - // fixme: well sort of... - ++m_pointerCount; - ++m_misses; - } - #endif - - return PoolPointer(); - } - - void release(RTree::Node* p) - { - if (p != 0) - { - if (m_pool.size() < m_capacity) - { - if (p->m_pData != 0) - { - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - // there is no need to set the pointer to zero, after deleting it, - // since it will be redeleted only if it is actually initialized again, - // a fact that will be depicted by variable m_children. - if (p->m_pData[cChild] != 0) delete[] p->m_pData[cChild]; - } - } - - p->m_level = 0; - p->m_identifier = -1; - p->m_children = 0; - p->m_totalDataLength = 0; - - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - protected: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - -#endif /* __spatialindex_rtree_pointer_pool_node_h */ diff --git a/spatialindex-1.8.5/src/rtree/RTree.cc b/spatialindex-1.8.5/src/rtree/RTree.cc deleted file mode 100644 index 381bfc4..0000000 --- a/spatialindex-1.8.5/src/rtree/RTree.cc +++ /dev/null @@ -1,1543 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include -#include "Node.h" -#include "Leaf.h" -#include "Index.h" -#include "BulkLoader.h" -#include "RTree.h" - -using namespace libsupermesh::SpatialIndex::RTree; -using namespace libsupermesh::SpatialIndex; - -libsupermesh::SpatialIndex::RTree::Data::Data(uint32_t len, byte* pData, Region& r, id_type id) - : m_id(id), m_region(r), m_pData(0), m_dataLength(len) -{ - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, pData, m_dataLength); - } -} - -libsupermesh::SpatialIndex::RTree::Data::~Data() -{ - delete[] m_pData; -} - -libsupermesh::SpatialIndex::RTree::Data* libsupermesh::SpatialIndex::RTree::Data::clone() -{ - return new Data(m_dataLength, m_pData, m_region, m_id); -} - -id_type libsupermesh::SpatialIndex::RTree::Data::getIdentifier() const -{ - return m_id; -} - -void libsupermesh::SpatialIndex::RTree::Data::getShape(IShape** out) const -{ - *out = new Region(m_region); -} - -void libsupermesh::SpatialIndex::RTree::Data::getData(uint32_t& len, byte** data) const -{ - len = m_dataLength; - *data = 0; - - if (m_dataLength > 0) - { - *data = new byte[m_dataLength]; - memcpy(*data, m_pData, m_dataLength); - } -} - -uint32_t libsupermesh::SpatialIndex::RTree::Data::getByteArraySize() -{ - return - sizeof(id_type) + - sizeof(uint32_t) + - m_dataLength + - m_region.getByteArraySize(); -} - -void libsupermesh::SpatialIndex::RTree::Data::loadFromByteArray(const byte* ptr) -{ - memcpy(&m_id, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - delete[] m_pData; - m_pData = 0; - - memcpy(&m_dataLength, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, ptr, m_dataLength); - ptr += m_dataLength; - } - - m_region.loadFromByteArray(ptr); -} - -void libsupermesh::SpatialIndex::RTree::Data::storeToByteArray(byte** data, uint32_t& len) -{ - // it is thread safe this way. - uint32_t regionsize; - byte* regiondata = 0; - m_region.storeToByteArray(®iondata, regionsize); - - len = sizeof(id_type) + sizeof(uint32_t) + m_dataLength + regionsize; - - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_id, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_dataLength, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - memcpy(ptr, m_pData, m_dataLength); - ptr += m_dataLength; - } - - memcpy(ptr, regiondata, regionsize); - delete[] regiondata; - // ptr += regionsize; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::returnRTree(libsupermesh::SpatialIndex::IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::SpatialIndex::ISpatialIndex* si = new libsupermesh::SpatialIndex::RTree::RTree(sm, ps); - return si; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::createNewRTree( - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - RTreeVariant rv, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = fillFactor; - ps.setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = indexCapacity; - ps.setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = leafCapacity; - ps.setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = dimension; - ps.setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = rv; - ps.setProperty("TreeVariant", var); - - ISpatialIndex* ret = returnRTree(sm, ps); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var = ps.getProperty("IndexIdentifier"); - indexIdentifier = var.m_val.llVal; - - return ret; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - libsupermesh::SpatialIndex::RTree::RTreeVariant rv, - id_type& indexIdentifier) -{ - libsupermesh::SpatialIndex::ISpatialIndex* tree = createNewRTree(sm, fillFactor, indexCapacity, leafCapacity, dimension, rv, indexIdentifier); - - uint32_t bindex = static_cast(std::floor(static_cast(indexCapacity * fillFactor))); - uint32_t bleaf = static_cast(std::floor(static_cast(leafCapacity * fillFactor))); - - libsupermesh::SpatialIndex::RTree::BulkLoader bl; - - switch (m) - { - case BLM_STR: - bl.bulkLoadUsingSTR(static_cast(tree), stream, bindex, bleaf, 10000, 100); - break; - default: - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Unknown bulk load method."); - break; - } - - return tree; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::createAndBulkLoadNewRTree( - BulkLoadMethod m, - IDataStream& stream, - libsupermesh::SpatialIndex::IStorageManager& sm, - libsupermesh::Tools::PropertySet& ps, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - RTreeVariant rv(RV_LINEAR); - double fillFactor(0.0); - uint32_t indexCapacity(0); - uint32_t leafCapacity(0); - uint32_t dimension(0); - uint32_t pageSize(0); - uint32_t numberOfPages(0); - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != RV_LINEAR && - var.m_val.lVal != RV_QUADRATIC && - var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of RTreeVariant type"); - - rv = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property FillFactor was not of type libsupermesh::Tools::VT_DOUBLE"); - - if (var.m_val.dblVal <= 0.0) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property FillFactor was less than 0.0"); - - if (((rv == RV_LINEAR || rv == RV_QUADRATIC) && var.m_val.dblVal > 0.5)) - throw libsupermesh::Tools::IllegalArgumentException( "createAndBulkLoadNewRTree: Property FillFactor must be in range (0.0, 0.5) for LINEAR or QUADRATIC index types"); - if ( var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property FillFactor must be in range (0.0, 1.0) for RSTAR index type"); - fillFactor = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - leafCapacity = var.m_val.ulVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property Dimension must be greater than 1"); - - dimension = var.m_val.ulVal; - } - - // page size - var = ps.getProperty("ExternalSortBufferPageSize"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferPageSize must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferPageSize must be greater than 1"); - - pageSize = var.m_val.ulVal; - } - - // number of pages - var = ps.getProperty("ExternalSortBufferTotalPages"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferTotalPages must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Property ExternalSortBufferTotalPages must be greater than 1"); - - numberOfPages = var.m_val.ulVal; - } - - libsupermesh::SpatialIndex::ISpatialIndex* tree = createNewRTree(sm, fillFactor, indexCapacity, leafCapacity, dimension, rv, indexIdentifier); - - uint32_t bindex = static_cast(std::floor(static_cast(indexCapacity * fillFactor))); - uint32_t bleaf = static_cast(std::floor(static_cast(leafCapacity * fillFactor))); - - libsupermesh::SpatialIndex::RTree::BulkLoader bl; - - switch (m) - { - case BLM_STR: - bl.bulkLoadUsingSTR(static_cast(tree), stream, bindex, bleaf, pageSize, numberOfPages); - break; - default: - throw libsupermesh::Tools::IllegalArgumentException("createAndBulkLoadNewRTree: Unknown bulk load method."); - break; - } - - return tree; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::RTree::loadRTree(IStorageManager& sm, id_type indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = indexIdentifier; - ps.setProperty("IndexIdentifier", var); - - return returnRTree(sm, ps); -} - -libsupermesh::SpatialIndex::RTree::RTree::RTree(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_pStorageManager(&sm), - m_rootID(StorageManager::NewPage), - m_headerID(StorageManager::NewPage), - m_treeVariant(RV_RSTAR), - m_fillFactor(0.7), - m_indexCapacity(100), - m_leafCapacity(100), - m_nearMinimumOverlapFactor(32), - m_splitDistributionFactor(0.4), - m_reinsertFactor(0.3), - m_dimension(2), - m_bTightMBRs(true), - m_pointPool(500), - m_regionPool(1000), - m_indexPool(100), - m_leafPool(100) -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_init(&m_lock, NULL); -#endif - - libsupermesh::Tools::Variant var = ps.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType == libsupermesh::Tools::VT_LONGLONG) m_headerID = var.m_val.llVal; - else if (var.m_varType == libsupermesh::Tools::VT_LONG) m_headerID = var.m_val.lVal; - // for backward compatibility only. - else throw libsupermesh::Tools::IllegalArgumentException("RTree: Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - initOld(ps); - } - else - { - initNew(ps); - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = m_headerID; - ps.setProperty("IndexIdentifier", var); - } -} - -libsupermesh::SpatialIndex::RTree::RTree::~RTree() -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_destroy(&m_lock); -#endif - - storeHeader(); -} - -// -// ISpatialIndex interface -// - -void libsupermesh::SpatialIndex::RTree::RTree::insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - // convert the shape into a Region (R-Trees index regions only; i.e., approximations of the shapes). - RegionPtr mbr = m_regionPool.acquire(); - shape.getMBR(*mbr); - - byte* buffer = 0; - - if (len > 0) - { - buffer = new byte[len]; - memcpy(buffer, pData, len); - } - - insertData_impl(len, buffer, *mbr, id); - // the buffer is stored in the tree. Do not delete here. -} - -bool libsupermesh::SpatialIndex::RTree::RTree::deleteData(const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("deleteData: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - RegionPtr mbr = m_regionPool.acquire(); - shape.getMBR(*mbr); - bool ret = deleteData_impl(*mbr, id); - - return ret; -} - - -void libsupermesh::SpatialIndex::RTree::RTree::containsWhatQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsWhatQuery: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - try - { - std::stack st; - NodePtr root = readNode(m_rootID); - st.push(root); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - - if(n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if(query.containsShape(*(n->m_ptrMBR[cChild]))) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - } - else //not a leaf - { - if(query.containsShape(n->m_nodeMBR)) - { - visitSubTree(n, v); - } - else if(query.intersectsShape(n->m_nodeMBR)) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } - } - - } - catch (...) - { - throw; - } -} -void libsupermesh::SpatialIndex::RTree::RTree::intersectsWithQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsWithQuery: Shape has the wrong number of dimensions."); - rangeQuery(IntersectionQuery, query, v); -} - -void libsupermesh::SpatialIndex::RTree::RTree::pointLocationQuery(const Point& query, IVisitor& v) -{ - if (query.m_dimension != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape has the wrong number of dimensions."); - Region r(query, query); - rangeQuery(IntersectionQuery, r, v); -} - -void libsupermesh::SpatialIndex::RTree::RTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator& nnc) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::priority_queue, NNEntry::ascending> queue; - - queue.push(new NNEntry(m_rootID, 0, 0.0)); - - uint32_t count = 0; - double knearest = 0.0; - - while (! queue.empty()) - { - NNEntry* pFirst = queue.top(); - - // report all nearest neighbors with equal greatest distances. - // (neighbors can be more than k, if many happen to have the same greatest distance). - if (count >= k && pFirst->m_minDist > knearest) break; - - queue.pop(); - - if (pFirst->m_pEntry == 0) - { - // n is a leaf or an index. - NodePtr n = readNode(pFirst->m_id); - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (n->m_level == 0) - { - Data* e = new Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - // we need to compare the query with the actual data entry here, so we call the - // appropriate getMinimumDistance method of NearestNeighborComparator. - queue.push(new NNEntry(n->m_pIdentifier[cChild], e, nnc.getMinimumDistance(query, *e))); - } - else - { - queue.push(new NNEntry(n->m_pIdentifier[cChild], 0, nnc.getMinimumDistance(query, *(n->m_ptrMBR[cChild])))); - } - } - } - else - { - v.visitData(*(static_cast(pFirst->m_pEntry))); - ++(m_stats.m_u64QueryResults); - ++count; - knearest = pFirst->m_minDist; - delete pFirst->m_pEntry; - } - - delete pFirst; - } - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - if (e->m_pEntry != 0) delete e->m_pEntry; - delete e; - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - NNComparator nnc; - nearestNeighborQuery(k, query, v, nnc); -} - - -void libsupermesh::SpatialIndex::RTree::RTree::selfJoinQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("selfJoinQuery: Shape has the wrong number of dimensions."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - RegionPtr mbr = m_regionPool.acquire(); - query.getMBR(*mbr); - selfJoinQuery(m_rootID, m_rootID, *mbr, v); -} - -void libsupermesh::SpatialIndex::RTree::RTree::queryStrategy(IQueryStrategy& qs) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - id_type next = m_rootID; - bool hasNext = true; - - while (hasNext) - { - NodePtr n = readNode(next); - qs.getNextEntry(*n, next, hasNext); - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::getIndexProperties(libsupermesh::Tools::PropertySet& out) const -{ - libsupermesh::Tools::Variant var; - - // dimension - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_dimension; - out.setProperty("Dimension", var); - - // index capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexCapacity; - out.setProperty("IndexCapacity", var); - - // leaf capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafCapacity; - out.setProperty("LeafCapacity", var); - - // R-tree variant - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = m_treeVariant; - out.setProperty("TreeVariant", var); - - // fill factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_fillFactor; - out.setProperty("FillFactor", var); - - // near minimum overlap factor - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_nearMinimumOverlapFactor; - out.setProperty("NearMinimumOverlapFactor", var); - - // split distribution factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_splitDistributionFactor; - out.setProperty("SplitDistributionFactor", var); - - // reinsert factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_reinsertFactor; - out.setProperty("ReinsertFactor", var); - - // tight MBRs - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = m_bTightMBRs; - out.setProperty("EnsureTightMBRs", var); - - // index pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexPool.getCapacity(); - out.setProperty("IndexPoolCapacity", var); - - // leaf pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafPool.getCapacity(); - out.setProperty("LeafPoolCapacity", var); - - // region pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_regionPool.getCapacity(); - out.setProperty("RegionPoolCapacity", var); - - // point pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_pointPool.getCapacity(); - out.setProperty("PointPoolCapacity", var); -} - -void libsupermesh::SpatialIndex::RTree::RTree::addCommand(ICommand* pCommand, CommandType ct) -{ - switch (ct) - { - case CT_NODEREAD: - m_readNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEWRITE: - m_writeNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEDELETE: - m_deleteNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - } -} - -bool libsupermesh::SpatialIndex::RTree::RTree::isIndexValid() -{ - bool ret = true; - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_level != m_stats.m_u32TreeHeight - 1) - { - std::cerr << "Invalid tree height." << std::endl; - return false; - } - - std::map nodesInLevel; - nodesInLevel.insert(std::pair(root->m_level, 1)); - - ValidateEntry e(root->m_nodeMBR, root); - st.push(e); - - while (! st.empty()) - { - e = st.top(); st.pop(); - - Region tmpRegion; - tmpRegion = m_infiniteRegion; - - for (uint32_t cDim = 0; cDim < tmpRegion.m_dimension; ++cDim) - { - tmpRegion.m_pLow[cDim] = std::numeric_limits::max(); - tmpRegion.m_pHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - tmpRegion.m_pLow[cDim] = std::min(tmpRegion.m_pLow[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pLow[cDim]); - tmpRegion.m_pHigh[cDim] = std::max(tmpRegion.m_pHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pHigh[cDim]); - } - } - - if (! (tmpRegion == e.m_pNode->m_nodeMBR)) - { - std::cerr << "Invalid parent information." << std::endl; - ret = false; - } - else if (! (tmpRegion == e.m_parentMBR)) - { - std::cerr << "Error in parent." << std::endl; - ret = false; - } - - if (e.m_pNode->m_level != 0) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - NodePtr ptrN = readNode(e.m_pNode->m_pIdentifier[cChild]); - ValidateEntry tmpEntry(*(e.m_pNode->m_ptrMBR[cChild]), ptrN); - - std::map::iterator itNodes = nodesInLevel.find(tmpEntry.m_pNode->m_level); - - if (itNodes == nodesInLevel.end()) - { - nodesInLevel.insert(std::pair(tmpEntry.m_pNode->m_level, 1l)); - } - else - { - nodesInLevel[tmpEntry.m_pNode->m_level] = nodesInLevel[tmpEntry.m_pNode->m_level] + 1; - } - - st.push(tmpEntry); - } - } - } - - uint32_t nodes = 0; - for (uint32_t cLevel = 0; cLevel < m_stats.m_u32TreeHeight; ++cLevel) - { - if (nodesInLevel[cLevel] != m_stats.m_nodesInLevel[cLevel]) - { - std::cerr << "Invalid nodesInLevel information." << std::endl; - ret = false; - } - - nodes += m_stats.m_nodesInLevel[cLevel]; - } - - if (nodes != m_stats.m_u32Nodes) - { - std::cerr << "Invalid number of nodes information." << std::endl; - ret = false; - } - - return ret; -} - -void libsupermesh::SpatialIndex::RTree::RTree::getStatistics(IStatistics** out) const -{ - *out = new Statistics(m_stats); -} - -void libsupermesh::SpatialIndex::RTree::RTree::initNew(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != RV_LINEAR && - var.m_val.lVal != RV_QUADRATIC && - var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of RTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor was not of type libsupermesh::Tools::VT_DOUBLE"); - - if (var.m_val.dblVal <= 0.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor was less than 0.0"); - - if (((m_treeVariant == RV_LINEAR || m_treeVariant == RV_QUADRATIC) && var.m_val.dblVal > 0.5)) - throw libsupermesh::Tools::IllegalArgumentException( "initNew: Property FillFactor must be in range " - "(0.0, 0.5) for LINEAR or QUADRATIC index types"); - if ( var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException( "initNew: Property FillFactor must be in range " - "(0.0, 1.0) for RSTAR index type"); - m_fillFactor = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_leafCapacity = var.m_val.ulVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be greater than 1"); - - m_dimension = var.m_val.ulVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); - - m_stats.m_u32TreeHeight = 1; - m_stats.m_nodesInLevel.push_back(0); - - Leaf root(this, -1); - m_rootID = writeNode(&root); - - storeHeader(); -} - -void libsupermesh::SpatialIndex::RTree::RTree::initOld(libsupermesh::Tools::PropertySet& ps) -{ - loadHeader(); - - // only some of the properties may be changed. - // the rest are just ignored. - - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != RV_LINEAR && - var.m_val.lVal != RV_QUADRATIC && - var.m_val.lVal != RV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of RTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); -} - -void libsupermesh::SpatialIndex::RTree::RTree::storeHeader() -{ - const uint32_t headerSize = - sizeof(id_type) + // m_rootID - sizeof(RTreeVariant) + // m_treeVariant - sizeof(double) + // m_fillFactor - sizeof(uint32_t) + // m_indexCapacity - sizeof(uint32_t) + // m_leafCapacity - sizeof(uint32_t) + // m_nearMinimumOverlapFactor - sizeof(double) + // m_splitDistributionFactor - sizeof(double) + // m_reinsertFactor - sizeof(uint32_t) + // m_dimension - sizeof(char) + // m_bTightMBRs - sizeof(uint32_t) + // m_stats.m_nodes - sizeof(uint64_t) + // m_stats.m_data - sizeof(uint32_t) + // m_stats.m_treeHeight - m_stats.m_u32TreeHeight * sizeof(uint32_t); // m_stats.m_nodesInLevel - - byte* header = new byte[headerSize]; - byte* ptr = header; - - memcpy(ptr, &m_rootID, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_treeVariant, sizeof(RTreeVariant)); - ptr += sizeof(RTreeVariant); - memcpy(ptr, &m_fillFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_indexCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_leafCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_nearMinimumOverlapFactor, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_splitDistributionFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_reinsertFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c = (char) m_bTightMBRs; - memcpy(ptr, &c, sizeof(char)); - ptr += sizeof(char); - memcpy(ptr, &(m_stats.m_u32Nodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_u64Data), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(ptr, &(m_stats.m_u32TreeHeight), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_u32TreeHeight; ++cLevel) - { - memcpy(ptr, &(m_stats.m_nodesInLevel[cLevel]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - m_pStorageManager->storeByteArray(m_headerID, headerSize, header); - - delete[] header; -} - -void libsupermesh::SpatialIndex::RTree::RTree::loadHeader() -{ - uint32_t headerSize; - byte* header = 0; - m_pStorageManager->loadByteArray(m_headerID, headerSize, &header); - - byte* ptr = header; - - memcpy(&m_rootID, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&m_treeVariant, ptr, sizeof(RTreeVariant)); - ptr += sizeof(RTreeVariant); - memcpy(&m_fillFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_indexCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_leafCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_nearMinimumOverlapFactor, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_splitDistributionFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_reinsertFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c; - memcpy(&c, ptr, sizeof(char)); - m_bTightMBRs = (c != 0); - ptr += sizeof(char); - memcpy(&(m_stats.m_u32Nodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_u64Data), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(&(m_stats.m_u32TreeHeight), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_u32TreeHeight; ++cLevel) - { - uint32_t cNodes; - memcpy(&cNodes, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - m_stats.m_nodesInLevel.push_back(cNodes); - } - - delete[] header; -} - -void libsupermesh::SpatialIndex::RTree::RTree::insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id) -{ - assert(mbr.getDimension() == m_dimension); - - std::stack pathBuffer; - byte* overflowTable = 0; - - try - { - NodePtr root = readNode(m_rootID); - - overflowTable = new byte[root->m_level]; - memset(overflowTable, 0, root->m_level); - - NodePtr l = root->chooseSubtree(mbr, 0, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mbr, id, pathBuffer, overflowTable); - - delete[] overflowTable; - ++(m_stats.m_u64Data); - } - catch (...) - { - delete[] overflowTable; - throw; - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id, uint32_t level, byte* overflowTable) -{ - assert(mbr.getDimension() == m_dimension); - - std::stack pathBuffer; - NodePtr root = readNode(m_rootID); - NodePtr n = root->chooseSubtree(mbr, level, pathBuffer); - - assert(n->m_level == level); - - if (n.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - n->insertData(dataLength, pData, mbr, id, pathBuffer, overflowTable); -} - -bool libsupermesh::SpatialIndex::RTree::RTree::deleteData_impl(const Region& mbr, id_type id) -{ - assert(mbr.m_dimension == m_dimension); - - std::stack pathBuffer; - NodePtr root = readNode(m_rootID); - NodePtr l = root->findLeaf(mbr, id, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - - if (l.get() != 0) - { - Leaf* pL = static_cast(l.get()); - pL->deleteData(id, pathBuffer); - --(m_stats.m_u64Data); - return true; - } - - return false; -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::RTree::RTree::writeNode(Node* n) -{ - byte* buffer; - uint32_t dataLength; - n->storeToByteArray(&buffer, dataLength); - - id_type page; - if (n->m_identifier < 0) page = StorageManager::NewPage; - else page = n->m_identifier; - - try - { - m_pStorageManager->storeByteArray(page, dataLength, buffer); - delete[] buffer; - } - catch (InvalidPageException& e) - { - delete[] buffer; - std::cerr << e.what() << std::endl; - throw; - } - - if (n->m_identifier < 0) - { - n->m_identifier = page; - ++(m_stats.m_u32Nodes); - -#ifndef NDEBUG - try - { - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel.at(n->m_level) + 1; - } - catch(...) - { - throw libsupermesh::Tools::IllegalStateException("writeNode: writing past the end of m_nodesInLevel."); - } -#else - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] + 1; -#endif - } - - ++(m_stats.m_u64Writes); - - for (size_t cIndex = 0; cIndex < m_writeNodeCommands.size(); ++cIndex) - { - m_writeNodeCommands[cIndex]->execute(*n); - } - - return page; -} - -libsupermesh::SpatialIndex::RTree::NodePtr libsupermesh::SpatialIndex::RTree::RTree::readNode(id_type page) -{ - uint32_t dataLength; - byte* buffer; - - try - { - m_pStorageManager->loadByteArray(page, dataLength, &buffer); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - throw; - } - - try - { - uint32_t nodeType; - memcpy(&nodeType, buffer, sizeof(uint32_t)); - - NodePtr n; - - if (nodeType == PersistentIndex) n = m_indexPool.acquire(); - else if (nodeType == PersistentLeaf) n = m_leafPool.acquire(); - else throw libsupermesh::Tools::IllegalStateException("readNode: failed reading the correct node type information"); - - if (n.get() == 0) - { - if (nodeType == PersistentIndex) n = NodePtr(new Index(this, -1, 0), &m_indexPool); - else if (nodeType == PersistentLeaf) n = NodePtr(new Leaf(this, -1), &m_leafPool); - } - - //n->m_pTree = this; - n->m_identifier = page; - n->loadFromByteArray(buffer); - - ++(m_stats.m_u64Reads); - - for (size_t cIndex = 0; cIndex < m_readNodeCommands.size(); ++cIndex) - { - m_readNodeCommands[cIndex]->execute(*n); - } - - delete[] buffer; - return n; - } - catch (...) - { - delete[] buffer; - throw; - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::deleteNode(Node* n) -{ - try - { - m_pStorageManager->deleteByteArray(n->m_identifier); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - throw; - } - - --(m_stats.m_u32Nodes); - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] - 1; - - for (size_t cIndex = 0; cIndex < m_deleteNodeCommands.size(); ++cIndex) - { - m_deleteNodeCommands[cIndex]->execute(*n); - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_children > 0 && query.intersectsShape(root->m_nodeMBR)) st.push(root); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - - if (n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - bool b; - if (type == ContainmentQuery) b = query.containsShape(*(n->m_ptrMBR[cChild])); - else b = query.intersectsShape(*(n->m_ptrMBR[cChild])); - - if (b) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - } - else - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (query.intersectsShape(*(n->m_ptrMBR[cChild]))) st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::selfJoinQuery(id_type id1, id_type id2, const Region& r, IVisitor& vis) -{ - NodePtr n1 = readNode(id1); - NodePtr n2 = readNode(id2); - vis.visitNode(*n1); - vis.visitNode(*n2); - - for (uint32_t cChild1 = 0; cChild1 < n1->m_children; ++cChild1) - { - if (r.intersectsRegion(*(n1->m_ptrMBR[cChild1]))) - { - for (uint32_t cChild2 = 0; cChild2 < n2->m_children; ++cChild2) - { - if ( - r.intersectsRegion(*(n2->m_ptrMBR[cChild2])) && - n1->m_ptrMBR[cChild1]->intersectsRegion(*(n2->m_ptrMBR[cChild2]))) - { - if (n1->m_level == 0) - { - if (n1->m_pIdentifier[cChild1] != n2->m_pIdentifier[cChild2]) - { - assert(n2->m_level == 0); - - std::vector v; - Data e1(n1->m_pDataLength[cChild1], n1->m_pData[cChild1], *(n1->m_ptrMBR[cChild1]), n1->m_pIdentifier[cChild1]); - Data e2(n2->m_pDataLength[cChild2], n2->m_pData[cChild2], *(n2->m_ptrMBR[cChild2]), n2->m_pIdentifier[cChild2]); - v.push_back(&e1); - v.push_back(&e2); - vis.visitData(v); - } - } - else - { - Region rr = r.getIntersectingRegion(n1->m_ptrMBR[cChild1]->getIntersectingRegion(*(n2->m_ptrMBR[cChild2]))); - selfJoinQuery(n1->m_pIdentifier[cChild1], n2->m_pIdentifier[cChild2], rr, vis); - } - } - } - } - } -} - -void libsupermesh::SpatialIndex::RTree::RTree::visitSubTree(NodePtr subTree, IVisitor& v) -{ - std::stack st; - st.push(subTree); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - v.visitNode(*n); - - if(n->m_level == 0) - { - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_u64QueryResults); - } - } - else - { - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -std::ostream& libsupermesh::SpatialIndex::RTree::operator<<(std::ostream& os, const RTree& t) -{ - os << "Dimension: " << t.m_dimension << std::endl - << "Fill factor: " << t.m_fillFactor << std::endl - << "Index capacity: " << t.m_indexCapacity << std::endl - << "Leaf capacity: " << t.m_leafCapacity << std::endl - << "Tight MBRs: " << ((t.m_bTightMBRs) ? "enabled" : "disabled") << std::endl; - - if (t.m_treeVariant == RV_RSTAR) - { - os << "Near minimum overlap factor: " << t.m_nearMinimumOverlapFactor << std::endl - << "Reinsert factor: " << t.m_reinsertFactor << std::endl - << "Split distribution factor: " << t.m_splitDistributionFactor << std::endl; - } - - if (t.m_stats.getNumberOfNodesInLevel(0) > 0) - os << "Utilization: " << 100 * t.m_stats.getNumberOfData() / (t.m_stats.getNumberOfNodesInLevel(0) * t.m_leafCapacity) << "%" << std::endl - << t.m_stats; - - #ifndef NDEBUG - os << "Leaf pool hits: " << t.m_leafPool.m_hits << std::endl - << "Leaf pool misses: " << t.m_leafPool.m_misses << std::endl - << "Index pool hits: " << t.m_indexPool.m_hits << std::endl - << "Index pool misses: " << t.m_indexPool.m_misses << std::endl - << "Region pool hits: " << t.m_regionPool.m_hits << std::endl - << "Region pool misses: " << t.m_regionPool.m_misses << std::endl - << "Point pool hits: " << t.m_pointPool.m_hits << std::endl - << "Point pool misses: " << t.m_pointPool.m_misses << std::endl; - #endif - - return os; -} diff --git a/spatialindex-1.8.5/src/rtree/RTree.h b/spatialindex-1.8.5/src/rtree/RTree.h deleted file mode 100644 index afa1c70..0000000 --- a/spatialindex-1.8.5/src/rtree/RTree.h +++ /dev/null @@ -1,210 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Statistics.h" -#include "Node.h" -#include "PointerPoolNode.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class RTree : public ISpatialIndex - { - //class NNEntry; - - public: - RTree(IStorageManager&, libsupermesh::Tools::PropertySet&); - // String Value Description - // ---------------------------------------------- - // IndexIndentifier VT_LONG If specified an existing index will be openened from the supplied - // storage manager with the given index id. Behaviour is unspecified - // if the index id or the storage manager are incorrect. - // Dimension VT_ULONG Dimensionality of the data that will be inserted. - // IndexCapacity VT_ULONG The index node capacity. Default is 100. - // LeafCapactiy VT_ULONG The leaf node capacity. Default is 100. - // FillFactor VT_DOUBLE The fill factor. Default is 70% - // TreeVariant VT_LONG Can be one of Linear, Quadratic or Rstar. Default is Rstar - // NearMinimumOverlapFactor VT_ULONG Default is 32. - // SplitDistributionFactor VT_DOUBLE Default is 0.4 - // ReinsertFactor VT_DOUBLE Default is 0.3 - // EnsureTightMBRs VT_BOOL Default is true - // IndexPoolCapacity VT_LONG Default is 100 - // LeafPoolCapacity VT_LONG Default is 100 - // RegionPoolCapacity VT_LONG Default is 1000 - // PointPoolCapacity VT_LONG Default is 500 - - virtual ~RTree(); - - - - // - // ISpatialIndex interface - // - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type shapeIdentifier); - virtual bool deleteData(const IShape& shape, id_type id); - virtual void containsWhatQuery(const IShape& query, IVisitor& v); - virtual void intersectsWithQuery(const IShape& query, IVisitor& v); - virtual void pointLocationQuery(const Point& query, IVisitor& v); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator&); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v); - virtual void selfJoinQuery(const IShape& s, IVisitor& v); - virtual void queryStrategy(IQueryStrategy& qs); - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const; - virtual void addCommand(ICommand* pCommand, CommandType ct); - virtual bool isIndexValid(); - virtual void getStatistics(IStatistics** out) const; - - private: - void initNew(libsupermesh::Tools::PropertySet&); - void initOld(libsupermesh::Tools::PropertySet& ps); - void storeHeader(); - void loadHeader(); - - void insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id); - void insertData_impl(uint32_t dataLength, byte* pData, Region& mbr, id_type id, uint32_t level, byte* overflowTable); - bool deleteData_impl(const Region& mbr, id_type id); - - id_type writeNode(Node*); - NodePtr readNode(id_type page); - void deleteNode(Node*); - - void rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v); - void selfJoinQuery(id_type id1, id_type id2, const Region& r, IVisitor& vis); - void visitSubTree(NodePtr subTree, IVisitor& v); - - IStorageManager* m_pStorageManager; - - id_type m_rootID, m_headerID; - - RTreeVariant m_treeVariant; - - double m_fillFactor; - - uint32_t m_indexCapacity; - - uint32_t m_leafCapacity; - - uint32_t m_nearMinimumOverlapFactor; - // The R*-Tree 'p' constant, for calculating nearly minimum overlap cost. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.1] - - double m_splitDistributionFactor; - // The R*-Tree 'm' constant, for calculating spliting distributions. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.2] - - double m_reinsertFactor; - // The R*-Tree 'p' constant, for removing entries at reinserts. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.3] - - uint32_t m_dimension; - - Region m_infiniteRegion; - - Statistics m_stats; - - bool m_bTightMBRs; - - libsupermesh::Tools::PointerPool m_pointPool; - libsupermesh::Tools::PointerPool m_regionPool; - libsupermesh::Tools::PointerPool m_indexPool; - libsupermesh::Tools::PointerPool m_leafPool; - - std::vector > m_writeNodeCommands; - std::vector > m_readNodeCommands; - std::vector > m_deleteNodeCommands; - -#ifdef HAVE_PTHREAD_H - pthread_mutex_t m_lock; -#endif - - class NNEntry - { - public: - id_type m_id; - IEntry* m_pEntry; - double m_minDist; - - NNEntry(id_type id, IEntry* e, double f) : m_id(id), m_pEntry(e), m_minDist(f) {} - ~NNEntry() {} - - struct ascending { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { - return __x->m_minDist > __y->m_minDist; - } - }; - - }; // NNEntry - - class NNComparator : public INearestNeighborComparator - { - public: - double getMinimumDistance(const IShape& query, const IShape& entry) - { - return query.getMinimumDistance(entry); - } - - double getMinimumDistance(const IShape& query, const IData& data) - { - IShape* pS; - data.getShape(&pS); - double ret = query.getMinimumDistance(*pS); - delete pS; - return ret; - } - }; // NNComparator - - class ValidateEntry - { - public: - ValidateEntry(Region& r, NodePtr& pNode) : m_parentMBR(r), m_pNode(pNode) {} - - Region m_parentMBR; - NodePtr m_pNode; - }; // ValidateEntry - - friend class Node; - friend class Leaf; - friend class Index; - friend class BulkLoader; - - friend std::ostream& operator<<(std::ostream& os, const RTree& t); - }; // RTree - - std::ostream& operator<<(std::ostream& os, const RTree& t); - } -} } diff --git a/spatialindex-1.8.5/src/rtree/Statistics.cc b/spatialindex-1.8.5/src/rtree/Statistics.cc deleted file mode 100644 index 3629d79..0000000 --- a/spatialindex-1.8.5/src/rtree/Statistics.cc +++ /dev/null @@ -1,183 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "Statistics.h" - -using namespace libsupermesh::SpatialIndex::RTree; - -Statistics::Statistics() -{ - reset(); -} - -Statistics::Statistics(const Statistics& s) -{ - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u32TreeHeight = s.m_u32TreeHeight; - m_nodesInLevel = s.m_nodesInLevel; -} - -Statistics::~Statistics() -{ -} - -Statistics& Statistics::operator=(const Statistics& s) -{ - if (this != &s) - { - m_u64Reads = s.m_u64Reads; - m_u64Writes = s.m_u64Writes; - m_u64Splits = s.m_u64Splits; - m_u64Hits = s.m_u64Hits; - m_u64Misses = s.m_u64Misses; - m_u32Nodes = s.m_u32Nodes; - m_u64Adjustments = s.m_u64Adjustments; - m_u64QueryResults = s.m_u64QueryResults; - m_u64Data = s.m_u64Data; - m_u32TreeHeight = s.m_u32TreeHeight; - m_nodesInLevel = s.m_nodesInLevel; - } - - return *this; -} - -uint64_t Statistics::getReads() const -{ - return m_u64Reads; -} - -uint64_t Statistics::getWrites() const -{ - return m_u64Writes; -} - -uint32_t Statistics::getNumberOfNodes() const -{ - return m_u32Nodes; -} - -uint64_t Statistics::getNumberOfData() const -{ - return m_u64Data; -} - -uint64_t Statistics::getSplits() const -{ - return m_u64Splits; -} - -uint64_t Statistics::getHits() const -{ - return m_u64Hits; -} - -uint64_t Statistics::getMisses() const -{ - return m_u64Misses; -} - -uint64_t Statistics::getAdjustments() const -{ - return m_u64Adjustments; -} - -uint64_t Statistics::getQueryResults() const -{ - return m_u64QueryResults; -} - -uint32_t Statistics::getTreeHeight() const -{ - return m_u32TreeHeight; -} - -uint32_t Statistics::getNumberOfNodesInLevel(uint32_t l) const -{ - uint32_t u32Nodes; - try - { - u32Nodes = m_nodesInLevel.at(l); - } - catch (...) - { - throw libsupermesh::Tools::IndexOutOfBoundsException(l); - } - - return u32Nodes; -} - -void Statistics::reset() -{ - m_u64Reads = 0; - m_u64Writes = 0; - m_u64Splits = 0; - m_u64Hits = 0; - m_u64Misses = 0; - m_u32Nodes = 0; - m_u64Adjustments = 0; - m_u64QueryResults = 0; - m_u64Data = 0; - m_u32TreeHeight = 0; - m_nodesInLevel.clear(); -} - -std::ostream& libsupermesh::SpatialIndex::RTree::operator<<(std::ostream& os, const Statistics& s) -{ - os << "Reads: " << s.m_u64Reads << std::endl - << "Writes: " << s.m_u64Writes << std::endl - << "Hits: " << s.m_u64Hits << std::endl - << "Misses: " << s.m_u64Misses << std::endl - << "Tree height: " << s.m_u32TreeHeight << std::endl - << "Number of data: " << s.m_u64Data << std::endl - << "Number of nodes: " << s.m_u32Nodes << std::endl; - - for (uint32_t u32Level = 0; u32Level < s.m_u32TreeHeight; ++u32Level) - { - os << "Level " << u32Level << " pages: " << s.m_nodesInLevel[u32Level] << std::endl; - } - - os << "Splits: " << s.m_u64Splits << std::endl - << "Adjustments: " << s.m_u64Adjustments << std::endl - << "Query results: " << s.m_u64QueryResults << std::endl; - - return os; -} diff --git a/spatialindex-1.8.5/src/rtree/Statistics.h b/spatialindex-1.8.5/src/rtree/Statistics.h deleted file mode 100644 index c7e2b0e..0000000 --- a/spatialindex-1.8.5/src/rtree/Statistics.h +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace RTree - { - class RTree; - class Node; - class Leaf; - class Index; - - class Statistics : public libsupermesh::SpatialIndex::IStatistics - { - public: - Statistics(); - Statistics(const Statistics&); - virtual ~Statistics(); - Statistics& operator=(const Statistics&); - - // - // IStatistics interface - // - virtual uint64_t getReads() const; - virtual uint64_t getWrites() const; - virtual uint32_t getNumberOfNodes() const; - virtual uint64_t getNumberOfData() const; - - virtual uint64_t getSplits() const; - virtual uint64_t getHits() const; - virtual uint64_t getMisses() const; - virtual uint64_t getAdjustments() const; - virtual uint64_t getQueryResults() const; - virtual uint32_t getTreeHeight() const; - virtual uint32_t getNumberOfNodesInLevel(uint32_t l) const; - - private: - void reset(); - - uint64_t m_u64Reads; - - uint64_t m_u64Writes; - - uint64_t m_u64Splits; - - uint64_t m_u64Hits; - - uint64_t m_u64Misses; - - uint32_t m_u32Nodes; - - uint64_t m_u64Adjustments; - - uint64_t m_u64QueryResults; - - uint64_t m_u64Data; - - uint32_t m_u32TreeHeight; - - std::vector m_nodesInLevel; - - friend class RTree; - friend class Node; - friend class Index; - friend class Leaf; - friend class BulkLoader; - - friend std::ostream& operator<<(std::ostream& os, const Statistics& s); - }; // Statistics - - std::ostream& operator<<(std::ostream& os, const Statistics& s); - } -} } diff --git a/spatialindex-1.8.5/src/spatialindex/LineSegment.cc b/spatialindex-1.8.5/src/spatialindex/LineSegment.cc deleted file mode 100644 index f7c35df..0000000 --- a/spatialindex-1.8.5/src/spatialindex/LineSegment.cc +++ /dev/null @@ -1,500 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -LineSegment::LineSegment() - : m_dimension(0), m_pStartPoint(0), m_pEndPoint(0) -{ -} - -LineSegment::LineSegment(const double* pStartPoint, const double* pEndPoint, uint32_t dimension) - : m_dimension(dimension) -{ - // no need to initialize arrays to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - memcpy(m_pStartPoint, pStartPoint, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, pEndPoint, m_dimension * sizeof(double)); -} - -LineSegment::LineSegment(const Point& startPoint, const Point& endPoint) - : m_dimension(startPoint.m_dimension) -{ - if (startPoint.m_dimension != endPoint.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::LineSegment: Points have different dimensionalities." - ); - - // no need to initialize arrays to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - memcpy(m_pStartPoint, startPoint.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, endPoint.m_pCoords, m_dimension * sizeof(double)); -} - -LineSegment::LineSegment(const LineSegment& l) - : m_dimension(l.m_dimension) -{ - // no need to initialize arrays to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - memcpy(m_pStartPoint, l.m_pStartPoint, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, l.m_pEndPoint, m_dimension * sizeof(double)); -} - -LineSegment::~LineSegment() -{ - delete[] m_pStartPoint; - delete[] m_pEndPoint; -} - -LineSegment& LineSegment::operator=(const LineSegment& l) -{ - if (this != &l) - { - makeDimension(l.m_dimension); - memcpy(m_pStartPoint, l.m_pStartPoint, m_dimension * sizeof(double)); - memcpy(m_pEndPoint, l.m_pEndPoint, m_dimension * sizeof(double)); - } - - return *this; -} - -bool LineSegment::operator==(const LineSegment& l) const -{ - if (m_dimension != l.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::operator==: LineSegments have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pStartPoint[i] < l.m_pStartPoint[i] - std::numeric_limits::epsilon() || - m_pStartPoint[i] > l.m_pStartPoint[i] + std::numeric_limits::epsilon()) return false; - - if ( - m_pEndPoint[i] < l.m_pEndPoint[i] - std::numeric_limits::epsilon() || - m_pEndPoint[i] > l.m_pEndPoint[i] + std::numeric_limits::epsilon()) return false; - } - - return true; -} - -// -// IObject interface -// -LineSegment* LineSegment::clone() -{ - return new LineSegment(*this); -} - -// -// ISerializable interface -// -uint32_t LineSegment::getByteArraySize() -{ - return (sizeof(uint32_t) + m_dimension * sizeof(double) * 2); -} - -void LineSegment::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - makeDimension(dimension); - memcpy(m_pStartPoint, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pEndPoint, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void LineSegment::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, m_pStartPoint, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pEndPoint, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IShape interface -// -bool LineSegment::intersectsShape(const IShape& s) const -{ - const LineSegment* ps = dynamic_cast(&s); - if (ps != 0) return intersectsLineSegment(*ps); - - const Region* pr = dynamic_cast(&s); - if (pr != 0) return intersectsRegion(*pr); - - throw libsupermesh::Tools::IllegalStateException( - "LineSegment::intersectsShape: Not implemented yet!" - ); -} - -bool LineSegment::containsShape(const IShape&) const -{ - return false; -} - -bool LineSegment::touchesShape(const IShape&) const -{ - throw libsupermesh::Tools::IllegalStateException( - "LineSegment::touchesShape: Not implemented yet!" - ); -} - -void LineSegment::getCenter(Point& out) const -{ - double* coords = new double[m_dimension]; - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - coords[cDim] = - (std::abs(m_pStartPoint[cDim] - m_pEndPoint[cDim]) / 2.0) + - std::min(m_pStartPoint[cDim], m_pEndPoint[cDim]); - } - - out = Point(coords, m_dimension); - delete[] coords; -} - -uint32_t LineSegment::getDimension() const -{ - return m_dimension; -} - -void LineSegment::getMBR(Region& out) const -{ - double* low = new double[m_dimension]; - double* high = new double[m_dimension]; - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - low[cDim] = std::min(m_pStartPoint[cDim], m_pEndPoint[cDim]); - high[cDim] = std::max(m_pStartPoint[cDim], m_pEndPoint[cDim]); - } - - out = Region(low, high, m_dimension); - delete[] low; - delete[] high; -} - -double LineSegment::getArea() const -{ - return 0.0; -} - -double LineSegment::getMinimumDistance(const IShape& s) const -{ - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) - { - return getMinimumDistance(*ppt); - } - -/* - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->getMinimumDistance(*this); - } -*/ - - throw libsupermesh::Tools::IllegalStateException( - "LineSegment::getMinimumDistance: Not implemented yet!" - ); -} - -double LineSegment::getMinimumDistance(const Point& p) const -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getMinimumDistance: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getMinimumDistance: Distance for high dimensional spaces not supported!" - ); - - if (m_pEndPoint[0] >= m_pStartPoint[0] - std::numeric_limits::epsilon() && - m_pEndPoint[0] <= m_pStartPoint[0] + std::numeric_limits::epsilon()) return std::abs(p.m_pCoords[0] - m_pStartPoint[0]); - - if (m_pEndPoint[1] >= m_pStartPoint[1] - std::numeric_limits::epsilon() && - m_pEndPoint[1] <= m_pStartPoint[1] + std::numeric_limits::epsilon()) return std::abs(p.m_pCoords[1] - m_pStartPoint[1]); - - double x1 = m_pStartPoint[0]; - double x2 = m_pEndPoint[0]; - double x0 = p.m_pCoords[0]; - double y1 = m_pStartPoint[1]; - double y2 = m_pEndPoint[1]; - double y0 = p.m_pCoords[1]; - - return std::abs((x2 - x1) * (y1 - y0) - (x1 - x0) * (y2 - y1)) / (std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); -} - -bool LineSegment::intersectsRegion(const Region& r) const -{ - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::intersectsRegion: only supported for 2 dimensions" - ); - - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::intersectsRegion: LineSegment and Region have different number of dimensions." - ); - - return r.intersectsLineSegment((*this)); -} - -bool LineSegment::intersectsLineSegment(const LineSegment& l) const -{ - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::intersectsLineSegment: only supported for 2 dimensions" - ); - - if (m_dimension != l.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "LineSegment::intersectsLineSegment: LineSegments have different number of dimensions." - ); - - // use Geometry::intersects - Point p1, p2, p3, p4; - p1 = Point(m_pStartPoint, 2); - p2 = Point(m_pEndPoint, 2); - p3 = Point(l.m_pStartPoint, 2); - p4 = Point(l.m_pEndPoint, 2); - return intersects(p1, p2, p3, p4); -} - -// assuming moving from start to end, positive distance is from right hand side. -double LineSegment::getRelativeMinimumDistance(const Point& p) const -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMinimumDistance: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMinimumDistance: Distance for high dimensional spaces not supported!" - ); - - if (m_pEndPoint[0] >= m_pStartPoint[0] - std::numeric_limits::epsilon() && - m_pEndPoint[0] <= m_pStartPoint[0] + std::numeric_limits::epsilon()) - { - if (m_pStartPoint[1] < m_pEndPoint[1]) return m_pStartPoint[0] - p.m_pCoords[0]; - if (m_pStartPoint[1] >= m_pEndPoint[1]) return p.m_pCoords[0] - m_pStartPoint[0]; - } - - if (m_pEndPoint[1] >= m_pStartPoint[1] - std::numeric_limits::epsilon() && - m_pEndPoint[1] <= m_pStartPoint[1] + std::numeric_limits::epsilon()) - { - if (m_pStartPoint[0] < m_pEndPoint[0]) return p.m_pCoords[1] - m_pStartPoint[1]; - if (m_pStartPoint[0] >= m_pEndPoint[0]) return m_pStartPoint[1] - p.m_pCoords[1]; - } - - double x1 = m_pStartPoint[0]; - double x2 = m_pEndPoint[0]; - double x0 = p.m_pCoords[0]; - double y1 = m_pStartPoint[1]; - double y2 = m_pEndPoint[1]; - double y0 = p.m_pCoords[1]; - - return ((x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)) / (std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); -} - -double LineSegment::getRelativeMaximumDistance(const Region& r) const -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMaximumDistance: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getRelativeMaximumDistance: Distance for high dimensional spaces not supported!" - ); - - // clockwise. - double d1 = getRelativeMinimumDistance(Point(r.m_pLow, 2)); - - double coords[2]; - coords[0] = r.m_pLow[0]; - coords[1] = r.m_pHigh[1]; - double d2 = getRelativeMinimumDistance(Point(coords, 2)); - - double d3 = getRelativeMinimumDistance(Point(r.m_pHigh, 2)); - - coords[0] = r.m_pHigh[0]; - coords[1] = r.m_pLow[1]; - double d4 = getRelativeMinimumDistance(Point(coords, 2)); - - return std::max(d1, std::max(d2, std::max(d3, d4))); -} - -double LineSegment::getAngleOfPerpendicularRay() -{ - if (m_dimension == 1) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getAngleOfPerpendicularRay: Use an Interval instead." - ); - - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "LineSegment::getAngleOfPerpendicularRay: Distance for high dimensional spaces not supported!" - ); - - if (m_pStartPoint[0] >= m_pEndPoint[0] - std::numeric_limits::epsilon() && - m_pStartPoint[0] <= m_pEndPoint[0] + std::numeric_limits::epsilon()) return 0.0; - - if (m_pStartPoint[1] >= m_pEndPoint[1] - std::numeric_limits::epsilon() && - m_pStartPoint[1] <= m_pEndPoint[1] + std::numeric_limits::epsilon()) return M_PI_2; - - return std::atan(-(m_pStartPoint[0] - m_pEndPoint[0]) / (m_pStartPoint[1] - m_pEndPoint[1])); -} - -void LineSegment::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pStartPoint[cIndex] = std::numeric_limits::max(); - m_pEndPoint[cIndex] = std::numeric_limits::max(); - } -} - -void LineSegment::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pStartPoint; - delete[] m_pEndPoint; - - // remember that this is not a constructor. The object will be destructed normally if - // something goes wrong (bad_alloc), so we must take care not to leave the object at an intermediate state. - m_pStartPoint = 0; - m_pEndPoint = 0; - - m_dimension = dimension; - m_pStartPoint = new double[m_dimension]; - m_pEndPoint = new double[m_dimension]; - } -} - -// compute double the area of the triangle created by points a, b and c (only for 2 dimensional points) -double LineSegment::doubleAreaTriangle(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - double *pA, *pB, *pC; - pA = a.m_pCoords; pB = b.m_pCoords; pC = c.m_pCoords; - return (((pB[0] - pA[0]) * (pC[1] - pA[1])) - ((pC[0] - pA[0]) * (pB[1] - pA[1]))); -} - -// determine whether point c is to the left of the segment comprised of points a & b (2-d only) -bool LineSegment::leftOf(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - return (doubleAreaTriangle(a, b, c) > 0); -} - -// determine whether all 3 points are on the same line -bool LineSegment::collinear(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - return (doubleAreaTriangle(a, b, c) == 0); -} - -// determine whether the segment comprised of a, b and segment of c, d intersect (exclusive of their endpoints..hence the "Proper") -bool LineSegment::intersectsProper(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c, const libsupermesh::SpatialIndex::Point &d) { - if ( collinear(a, b, c) || collinear(a, b, d) || - collinear(c, d, a) || collinear(c, d, b)) { - return false; - } - return ((leftOf(a, b, c) ^ leftOf(a, b, d)) && - (leftOf(c, d, a) ^ leftOf(c, d, b))); -} - -// if the points are collinear, is c between a & b -bool LineSegment::between(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c) { - if ( !collinear(a, b, c) ) { - return false; - } - double *pA, *pB, *pC; - pA = a.m_pCoords; pB = b.m_pCoords; pC = c.m_pCoords; - if ( pA[0] != pB[0] ) { // a & b are not on the same vertical, compare on x axis - return between(pA[0], pB[0], pC[0]); - } else { // a & b are a vertical segment, we need to compare on y axis - return between(pA[1], pB[1], pC[1]); - } -} - -bool LineSegment::between(double a, double b, double c) { - return ( ((a <= c) && (c <= b)) || ((a >= c) && (c >= b)) ); -} - -// intersection test, including endpoints -bool LineSegment::intersects(const libsupermesh::SpatialIndex::Point &a, const libsupermesh::SpatialIndex::Point &b, const libsupermesh::SpatialIndex::Point &c, const libsupermesh::SpatialIndex::Point &d) { - if (intersectsProper(a, b, c, d)) { - return true; - } - else if ( between(a, b, c) || between(a, b, d) || - between(c, d, a) || between(c, d, b) ) { - return true; - } - else { - return false; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const LineSegment& l) -{ - for (uint32_t cDim = 0; cDim < l.m_dimension; ++cDim) - { - os << l.m_pStartPoint[cDim] << ", " << l.m_pEndPoint[cDim] << " "; - } - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/Makefile.am b/spatialindex-1.8.5/src/spatialindex/Makefile.am deleted file mode 100644 index 7e80c20..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = liblibrary.la -INCLUDES = -I../../include -liblibrary_la_SOURCES = Point.cc Region.cc LineSegment.cc MovingPoint.cc MovingRegion.cc TimePoint.cc TimeRegion.cc SpatialIndexImpl.cc diff --git a/spatialindex-1.8.5/src/spatialindex/Makefile.in b/spatialindex-1.8.5/src/spatialindex/Makefile.in deleted file mode 100644 index d36e313..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Makefile.in +++ /dev/null @@ -1,587 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/spatialindex -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -liblibrary_la_LIBADD = -am_liblibrary_la_OBJECTS = Point.lo Region.lo LineSegment.lo \ - MovingPoint.lo MovingRegion.lo TimePoint.lo TimeRegion.lo \ - SpatialIndexImpl.lo -liblibrary_la_OBJECTS = $(am_liblibrary_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(liblibrary_la_SOURCES) -DIST_SOURCES = $(liblibrary_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = liblibrary.la -INCLUDES = -I../../include -liblibrary_la_SOURCES = Point.cc Region.cc LineSegment.cc MovingPoint.cc MovingRegion.cc TimePoint.cc TimeRegion.cc SpatialIndexImpl.cc -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/spatialindex/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/spatialindex/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -liblibrary.la: $(liblibrary_la_OBJECTS) $(liblibrary_la_DEPENDENCIES) $(EXTRA_liblibrary_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(liblibrary_la_OBJECTS) $(liblibrary_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineSegment.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MovingPoint.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MovingRegion.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Point.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Region.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SpatialIndexImpl.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimePoint.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimeRegion.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/spatialindex/MovingPoint.cc b/spatialindex-1.8.5/src/spatialindex/MovingPoint.cc deleted file mode 100644 index 32b737d..0000000 --- a/spatialindex-1.8.5/src/spatialindex/MovingPoint.cc +++ /dev/null @@ -1,334 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -MovingPoint::MovingPoint() -{ -} - -MovingPoint::MovingPoint( const double* pCoords, - const double* pVCoords, - const IInterval& ti, - uint32_t dimension) -{ - initialize( pCoords, - pVCoords, - ti.getLowerBound(), - ti.getUpperBound(), - dimension); -} - -MovingPoint::MovingPoint( const double* pCoords, - const double* pVCoords, - double tStart, - double tEnd, - uint32_t dimension) -{ - initialize(pCoords, pVCoords, tStart, tEnd, dimension); -} - -MovingPoint::MovingPoint( const Point& p, - const Point& vp, - const IInterval& ti) -{ - if (p.m_dimension != vp.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingPoint: Points have different number of dimensions."); - - initialize( p.m_pCoords, - vp.m_pCoords, - ti.getLowerBound(), - ti.getUpperBound(), - p.m_dimension); -} - -MovingPoint::MovingPoint(const Point& p, const Point& vp, double tStart, double tEnd) -{ - if (p.m_dimension != vp.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingPoint: Points have different number of dimensions."); - - initialize( p.m_pCoords, - vp.m_pCoords, - tStart, - tEnd, - p.m_dimension); -} - -MovingPoint::MovingPoint(const MovingPoint& p) -{ - m_startTime = p.m_startTime; - m_endTime = p.m_endTime; - m_pCoords = 0; - - m_dimension = p.m_dimension; - - try - { - m_pCoords = new double[m_dimension]; - m_pVCoords = new double[m_dimension]; - } - catch (...) - { - delete[] m_pCoords; - throw; - } - - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pVCoords, p.m_pVCoords, m_dimension * sizeof(double)); -} - -MovingPoint::~MovingPoint() -{ - delete[] m_pVCoords; -} - -void MovingPoint::initialize( - const double* pCoords, const double* pVCoords, - double tStart, double tEnd, uint32_t dimension) -{ - m_dimension = dimension; - m_startTime = tStart; - m_endTime = tEnd; - m_pCoords = 0; - - if (m_endTime <= m_startTime) - throw libsupermesh::Tools::IllegalArgumentException("MovingPoint: Cannot support degenerate time intervals."); - - try - { - m_pCoords = new double[m_dimension]; - m_pVCoords = new double[m_dimension]; - } - catch (...) - { - delete[] m_pCoords; - throw; - } - - // first store the point coordinates, than the point velocities. - memcpy(m_pCoords, pCoords, m_dimension * sizeof(double)); - memcpy(m_pVCoords, pVCoords, m_dimension * sizeof(double)); -} - -MovingPoint& MovingPoint::operator=(const MovingPoint& p) -{ - if (this != &p) - { - makeDimension(p.m_dimension); - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pVCoords, p.m_pVCoords, m_dimension * sizeof(double)); - - m_startTime = p.m_startTime; - m_endTime = p.m_endTime; - } - - return *this; -} - -bool MovingPoint::operator==(const MovingPoint& p) const -{ - if ( - m_startTime < p.m_startTime - std::numeric_limits::epsilon() || - m_startTime > p.m_startTime + std::numeric_limits::epsilon() || - m_endTime < p.m_endTime - std::numeric_limits::epsilon() || - m_endTime > p.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t cDim = 0; cDim < 2 * m_dimension; ++cDim) - { - if ( - m_pCoords[cDim] < p.m_pCoords[cDim] - std::numeric_limits::epsilon() || - m_pCoords[cDim] > p.m_pCoords[cDim] + std::numeric_limits::epsilon() || - m_pVCoords[cDim] < p.m_pVCoords[cDim] - std::numeric_limits::epsilon() || - m_pVCoords[cDim] > p.m_pVCoords[cDim] + std::numeric_limits::epsilon()) - return false; - } - - return true; -} - -double MovingPoint::getCoord(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - if (t >= m_endTime) return m_pCoords[d] + m_pVCoords[d] * (m_endTime - m_startTime); - else if (t <= m_startTime) return m_pCoords[d] + m_pVCoords[d] * m_startTime; - else return m_pCoords[d] + m_pVCoords[d] * (t - m_startTime); -} - -double MovingPoint::getProjectedCoord(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pCoords[d] + m_pVCoords[d] * (t - m_startTime); -} - -double MovingPoint::getVCoord(uint32_t d) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pVCoords[d]; -} - -void MovingPoint::getPointAtTime(double t, Point& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - out.m_pCoords[cDim] = getCoord(cDim, t); - } -} - -// -// IObject interface -// -MovingPoint* MovingPoint::clone() -{ - return new MovingPoint(*this); -} - -// -// ISerializable interface -// -uint32_t MovingPoint::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + 2 * m_dimension * sizeof(double)); -} - -void MovingPoint::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pCoords, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pVCoords, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void MovingPoint::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, m_pCoords, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pVCoords, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IEvolvingShape interface -// -void MovingPoint::getVMBR(Region& out) const -{ - out.makeDimension(m_dimension); - memcpy(out.m_pLow, m_pVCoords, m_dimension * sizeof(double)); - memcpy(out.m_pHigh, m_pVCoords, m_dimension * sizeof(double)); -} - -void MovingPoint::getMBRAtTime(double t, Region& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - out.m_pLow[cDim] = getCoord(cDim, t); - out.m_pHigh[cDim] = getCoord(cDim, t); - } -} - -void MovingPoint::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pCoords[cIndex] = std::numeric_limits::max(); - m_pVCoords[cIndex] = -std::numeric_limits::max(); - } - - m_startTime = std::numeric_limits::max(); - m_endTime = -std::numeric_limits::max(); -} - -void MovingPoint::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pCoords; - delete[] m_pVCoords; - m_pCoords = 0; m_pVCoords = 0; - - m_dimension = dimension; - m_pCoords = new double[m_dimension]; - m_pVCoords = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const MovingPoint& pt) -{ - uint32_t i; - - os << "Coords: "; - for (i = 0; i < pt.m_dimension; ++i) - { - os << pt.m_pCoords[i] << " "; - } - - os << "VCoords: "; - for (i = 0; i < pt.m_dimension; ++i) - { - os << pt.m_pVCoords[i] << " "; - } - - os << ", Start: " << pt.m_startTime << ", End: " << pt.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/MovingRegion.cc b/spatialindex-1.8.5/src/spatialindex/MovingRegion.cc deleted file mode 100644 index cc0fc73..0000000 --- a/spatialindex-1.8.5/src/spatialindex/MovingRegion.cc +++ /dev/null @@ -1,1242 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -/* - * Does not support degenerate time intervals or shrinking regions. -*/ - - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -MovingRegion::MovingRegion() - : TimeRegion(), m_pVLow(0), m_pVHigh(0) -{ -} - -MovingRegion::MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - const IInterval& ivT, uint32_t dimension) -{ - initialize(pLow, pHigh, pVLow, pVHigh, ivT.getLowerBound(), ivT.getUpperBound(), dimension); -} - -MovingRegion::MovingRegion( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension) -{ - initialize(pLow, pHigh, pVLow, pVHigh, tStart, tEnd, dimension); -} - -MovingRegion::MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - const IInterval& ivT) -{ - if (low.m_dimension != high.m_dimension || low.m_dimension != vlow.m_dimension || vlow.m_dimension != vhigh.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize( - low.m_pCoords, high.m_pCoords, vlow.m_pCoords, vhigh.m_pCoords, - ivT.getLowerBound(), ivT.getUpperBound(), low.m_dimension); -} - -MovingRegion::MovingRegion( - const Point& low, const Point& high, - const Point& vlow, const Point& vhigh, - double tStart, double tEnd) -{ - if (low.m_dimension != high.m_dimension || low.m_dimension != vlow.m_dimension || vlow.m_dimension != vhigh.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize( - low.m_pCoords, high.m_pCoords, vlow.m_pCoords, vhigh.m_pCoords, - tStart, tEnd, low.m_dimension); -} - -MovingRegion::MovingRegion( - const Region& mbr, const Region& vbr, const IInterval& ivT) -{ - if (mbr.m_dimension != vbr.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize(mbr.m_pLow, mbr.m_pHigh, vbr.m_pLow, vbr.m_pHigh, ivT.getLowerBound(), ivT.getUpperBound(), mbr.m_dimension); -} - -MovingRegion::MovingRegion( - const Region& mbr, const Region& vbr, double tStart, double tEnd) -{ - if (mbr.m_dimension != vbr.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - initialize(mbr.m_pLow, mbr.m_pHigh, vbr.m_pLow, vbr.m_pHigh, tStart, tEnd, mbr.m_dimension); -} - -MovingRegion::MovingRegion(const MovingPoint& low, const MovingPoint& high) -{ - m_startTime = low.m_startTime; - m_endTime = high.m_endTime;; - m_dimension = low.m_dimension; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - if (m_endTime <= m_startTime) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: Cannot support degenerate time intervals."); - - if (low.m_dimension != high.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: arguments have different number of dimensions."); - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - - } - catch (...) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - throw; - } - - memcpy(m_pLow, low.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pHigh, high.m_pCoords, m_dimension * sizeof(double)); - memcpy(m_pVLow, low.m_pVCoords, m_dimension * sizeof(double)); - memcpy(m_pVHigh, high.m_pVCoords, m_dimension * sizeof(double)); -} - -MovingRegion::MovingRegion(const MovingRegion& r) -{ - m_startTime = r.m_startTime; - m_endTime = r.m_endTime; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - m_dimension = r.m_dimension; - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - throw; - } - - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - memcpy(m_pVLow, r.m_pVLow, m_dimension * sizeof(double)); - memcpy(m_pVHigh, r.m_pVHigh, m_dimension * sizeof(double)); -} - -void MovingRegion::initialize( - const double* pLow, const double* pHigh, - const double* pVLow, const double* pVHigh, - double tStart, double tEnd, uint32_t dimension) -{ - m_startTime = tStart; - m_endTime = tEnd; - m_dimension = dimension; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - if (m_endTime <= m_startTime) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: Cannot support degenerate time intervals."); - -#ifndef NDEBUG - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (pLow[cDim] > pHigh[cDim]) throw libsupermesh::Tools::IllegalArgumentException("MovingRegion: Low point has larger coordinates than High point."); - } -#endif - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - throw; - } - - // first store the point coordinates, than the point velocities. - memcpy(m_pLow, pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, pHigh, m_dimension * sizeof(double)); - memcpy(m_pVLow, pVLow, m_dimension * sizeof(double)); - memcpy(m_pVHigh, pVHigh, m_dimension * sizeof(double)); -} - -MovingRegion::~MovingRegion() -{ - delete[] m_pVLow; - delete[] m_pVHigh; -} - -MovingRegion& MovingRegion::operator=(const MovingRegion& r) -{ - if(this != &r) - { - makeDimension(r.m_dimension); - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - memcpy(m_pVLow, r.m_pVLow, m_dimension * sizeof(double)); - memcpy(m_pVHigh, r.m_pVHigh, m_dimension * sizeof(double)); - - m_startTime = r.m_startTime; - m_endTime = r.m_endTime; - - assert(m_startTime < m_endTime); - } - - return *this; -} - -bool MovingRegion::operator==(const MovingRegion& r) const -{ - if (m_startTime < r.m_startTime - std::numeric_limits::epsilon() || - m_startTime > r.m_startTime + std::numeric_limits::epsilon() || - m_endTime < r.m_endTime - std::numeric_limits::epsilon() || - m_endTime > r.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pLow[i] < r.m_pLow[i] - std::numeric_limits::epsilon() || - m_pLow[i] > r.m_pLow[i] + std::numeric_limits::epsilon() || - m_pHigh[i] < r.m_pHigh[i] - std::numeric_limits::epsilon() || - m_pHigh[i] > r.m_pHigh[i] + std::numeric_limits::epsilon() || - m_pVLow[i] < r.m_pVLow[i] - std::numeric_limits::epsilon() || - m_pVLow[i] > r.m_pVLow[i] + std::numeric_limits::epsilon() || - m_pVHigh[i] < r.m_pVHigh[i] - std::numeric_limits::epsilon() || - m_pVHigh[i] > r.m_pVHigh[i] + std::numeric_limits::epsilon()) - return false; - } - return true; -} - -bool MovingRegion::isShrinking() const -{ - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (m_pVHigh[cDim] < m_pVLow[cDim]) return true; - } - return false; -} - -// assumes that the region is not moving before and after start and end time. -double MovingRegion::getLow(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - if (t > m_endTime) return m_pLow[d] + m_pVLow[d] * (m_endTime - m_startTime); - else if (t < m_startTime) return m_pLow[d]; - else return m_pLow[d] + m_pVLow[d] * (t - m_startTime); -} - -// assumes that the region is not moving before and after start and end time. -double MovingRegion::getHigh(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - if (t > m_endTime) return m_pHigh[d] + m_pVHigh[d] * (m_endTime - m_startTime); - else if (t < m_startTime) return m_pHigh[d]; - else return m_pHigh[d] + m_pVHigh[d] * (t - m_startTime); -} - -// assuming that the region kept moving. -double MovingRegion::getExtrapolatedLow(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pLow[d] + m_pVLow[d] * (t - m_startTime); -} - -// assuming that the region kept moving. -double MovingRegion::getExtrapolatedHigh(uint32_t d, double t) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pHigh[d] + m_pVHigh[d] * (t - m_startTime); -} - -double MovingRegion::getVLow(uint32_t d) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pVLow[d]; -} - -double MovingRegion::getVHigh(uint32_t d) const -{ - if (d >= m_dimension) throw libsupermesh::Tools::IndexOutOfBoundsException(d); - - return m_pVHigh[d]; -} - -bool MovingRegion::intersectsRegionInTime(const MovingRegion& r) const -{ - libsupermesh::Tools::Interval ivOut; - return intersectsRegionInTime(r, ivOut); -} - -bool MovingRegion::intersectsRegionInTime(const MovingRegion& r, IInterval& ivOut) const -{ - return intersectsRegionInTime(r, r, ivOut); -} - -// if tmin, tmax are infinity then this will not work correctly (everything will always intersect). -// does not work for shrinking regions. -// does not work with degenerate time-intervals. -// -// WARNING: this will return true even if one region completely contains the other, since -// their areas do intersect in that case! -// -// there are various cases here: -// 1. one region contains the other. -// 2. one boundary of one region is always contained indide the other region, while the other -// boundary is not (so no boundaries will ever intersect). -// 3. either the upper or lower boundary of one region intersects a boundary of the other. -bool MovingRegion::intersectsRegionInTime(const IInterval& ivPeriod, const MovingRegion& r, IInterval& ivOut) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsRegionInTime: MovingRegions have different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(r.m_startTime < r.m_endTime); - assert(ivPeriod.getLowerBound() < ivPeriod.getUpperBound()); - assert(isShrinking() == false && r.isShrinking() == false); - - // this is needed, since we are assuming below that the two regions have some point of intersection - // inside itPeriod. - if (containsRegionInTime(ivPeriod, r) || r.containsRegionInTime(ivPeriod, *this)) - { - ivOut = ivPeriod; - return true; - } - - double tmin = std::max(m_startTime, r.m_startTime); - double tmax = std::min(m_endTime, r.m_endTime); - - // the regions do not intersect in time. - if (tmax <= tmin) return false; - - tmin = std::max(tmin, ivPeriod.getLowerBound()); - tmax = std::min(tmax, ivPeriod.getUpperBound()); - - // the regions intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return false; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - // I use projected low and high because they are faster and it does not matter. - // The are also necessary for calculating the intersection point with reference time instant 0.0. - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= r.m_startTime && tmax <= r.m_endTime); - - // completely above or bellow in i-th dimension - if ( - (r.getExtrapolatedLow(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) && - r.getExtrapolatedLow(cDim, tmax) >= getExtrapolatedHigh(cDim, tmax)) || - (r.getExtrapolatedHigh(cDim, tmin) < getExtrapolatedLow(cDim, tmin) && - r.getExtrapolatedHigh(cDim, tmax) <= getExtrapolatedLow(cDim, tmax))) - return false; - - // otherwise they intersect inside this interval for sure. Care needs to be taken since - // intersection does not necessarily mean that two line segments intersect. It could be - // that one line segment is completely above/below another, in which case there is no intersection - // point inside tmin, tmax, even though the two region areas do intersect. - - if (r.getExtrapolatedLow(cDim, tmin) > getExtrapolatedHigh(cDim, tmin)) // r above *this at tmin - { - tmin = (getExtrapolatedHigh(cDim, 0.0) - r.getExtrapolatedLow(cDim, 0.0)) / (r.getVLow(cDim) - getVHigh(cDim)); - } - else if (r.getExtrapolatedHigh(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) // r below *this at tmin - { - tmin = (getExtrapolatedLow(cDim, 0.0) - r.getExtrapolatedHigh(cDim, 0.0)) / (r.getVHigh(cDim) - getVLow(cDim)); - } - // else they do not intersect and the boundary might be completely contained in this region. - - if (r.getExtrapolatedLow(cDim, tmax) > getExtrapolatedHigh(cDim, tmax)) // r above *this at tmax - { - tmax = (getExtrapolatedHigh(cDim, 0.0) - r.getExtrapolatedLow(cDim, 0.0)) / (r.getVLow(cDim) - getVHigh(cDim)); - } - else if (r.getExtrapolatedHigh(cDim, tmax) < getExtrapolatedLow(cDim, tmax)) // r below *this at tmax - { - tmax = (getExtrapolatedLow(cDim, 0.0) - r.getExtrapolatedHigh(cDim, 0.0)) / (r.getVHigh(cDim) - getVLow(cDim)); - } - // else they do not intersect and the boundary might be completely contained in this region. - - assert(tmin <= tmax); - } - - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= r.m_startTime && tmax <= r.m_endTime); - - ivOut.setBounds(tmin, tmax); - - return true; -} - -bool MovingRegion::containsRegionInTime(const MovingRegion& r) const -{ - return containsRegionInTime(r, r); -} - -// does not work for shrinking regions. -// works fine for infinite bounds (both tmin and tmax). -// does not work with degenerate time-intervals. -// -// finds if during the intersecting time-interval of r and ivPeriod, r is completely contained in *this. -bool MovingRegion::containsRegionInTime(const IInterval& ivPeriod, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsRegionInTime: MovingRegions have different number of dimensions."); - - assert(isShrinking() == false && r.isShrinking() == false); - - double tmin = std::max(ivPeriod.getLowerBound(), r.m_startTime); - double tmax = std::min(ivPeriod.getUpperBound(), r.m_endTime); - - // it should be contained in time. - // it does not make sense if this region is not defined for any part ot [tmin, tmax]. - if (tmax <= tmin || tmin < m_startTime || tmax > m_endTime) return false; - - double intersectionTime; - - // no need to take projected coordinates here, since tmin and tmax are always contained in - // the regions intersecting time-intervals. - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= r.m_startTime && tmax <= r.m_endTime); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - // it should be contained at start time. - if (r.getExtrapolatedHigh(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) || - r.getExtrapolatedLow(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) return false; - - // this will take care of infinite bounds. - if (r.m_pVHigh[cDim] != m_pVHigh[cDim]) - { - intersectionTime = (getExtrapolatedHigh(cDim, 0.0) - r.getExtrapolatedHigh(cDim, 0.0)) / (r.m_pVHigh[cDim] - m_pVHigh[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && r.m_pVHigh[cDim] > m_pVHigh[cDim]) return false; - } - - if (r.m_pVLow[cDim] != m_pVLow[cDim]) - { - intersectionTime = (getExtrapolatedLow(cDim, 0.0) - r.getExtrapolatedLow(cDim, 0.0)) / (r.m_pVLow[cDim] - m_pVLow[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && r.m_pVLow[cDim] < m_pVLow[cDim]) return false; - } - } - - return true; -} - -bool MovingRegion::containsRegionAfterTime(double t, const MovingRegion& r) const -{ - libsupermesh::Tools::Interval ivT(t, r.m_endTime); - return containsRegionInTime(ivT, r); -} - -// Returns the area swept by the rectangle in time, in d-dimensional space (without -// including the temporal dimension, that is). -// This is what Saltenis calls Margin (which is different than what Beckmann proposes, -// where he computes only the wireframe -- instead of the surface/volume/etc. -- of the MBR in any dimension). -double MovingRegion::getProjectedSurfaceAreaInTime() const -{ - return getProjectedSurfaceAreaInTime(*this); -} - -double MovingRegion::getProjectedSurfaceAreaInTime(const IInterval& ivI) const -{ - double tmin = std::max(ivI.getLowerBound(), m_startTime); - double tmax = std::min(ivI.getUpperBound(), m_endTime); - - assert(tmin > -std::numeric_limits::max()); - assert(tmax < std::numeric_limits::max()); - assert(tmin <= tmax); - - if (tmin >= tmax - std::numeric_limits::epsilon() && - tmin <= tmax + std::numeric_limits::epsilon()) - return 0.0; - - double dx1, dx2, dx3; - double dv1, dv2, dv3; - double H = tmax - tmin; - - if (m_dimension == 3) - { - dx3 = getExtrapolatedHigh(2, tmin) - getExtrapolatedLow(2, tmin); - dv3 = getVHigh(2) - getVLow(2); - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return - H * (dx1 + dx2 + dx3 + dx1*dx2 + dx1*dx3 + dx2*dx3) + - H*H * (dv1 + dv2 + dv3 + dx1*dv2 + dv1*dx2 + dx1*dv3 + - dv1*dx3 + dx2*dv3 + dv2*dx3) / 2.0 + - H*H*H * (dv1*dv2 + dv1*dv3 + dv2*dv3) / 3.0; - } - else if (m_dimension == 2) - { - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return H * (dx1 + dx2) + H * H * (dv1 + dv2) / 2.0; - } - else if (m_dimension == 1) - { - // marioh: why not use the increase of the length of the interval here? - return 0.0; - } - else - { - throw libsupermesh::Tools::IllegalStateException("getProjectedSurfaceAreaInTime: unsupported dimensionality."); - } -} - -double MovingRegion::getCenterDistanceInTime(const MovingRegion& r) const -{ - - return getCenterDistanceInTime(r, r); -} - -double MovingRegion::getCenterDistanceInTime(const IInterval& ivI, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getCenterDistanceInTime: MovingRegions have different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(r.m_startTime < r.m_endTime); - assert(ivI.getLowerBound() < ivI.getUpperBound()); - - double tmin = std::max(m_startTime, r.m_startTime); - double tmax = std::min(m_endTime, r.m_endTime); - - // the regions do not intersect in time. - if (tmax <= tmin) return 0.0; - - tmin = std::max(tmin, ivI.getLowerBound()); - tmax = std::min(tmax, ivI.getUpperBound()); - - // the regions intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return 0.0; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - if (tmin >= tmax - std::numeric_limits::epsilon() && - tmin <= tmax + std::numeric_limits::epsilon()) - return 0.0; - - double H = tmax - tmin; - - double* dx = new double[m_dimension]; - double* dv = new double[m_dimension]; - double a = 0.0, b = 0.0, c = 0.0, f = 0.0, l = 0.0, m = 0.0, n = 0.0; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - dx[cDim] = - (r.getExtrapolatedLow(cDim, tmin) + r.getExtrapolatedHigh(cDim, tmin)) / 2.0 - - (getExtrapolatedLow(cDim, tmin) + getExtrapolatedHigh(cDim, tmin)) / 2.0; - dv[cDim] = - (r.getVLow(cDim) + r.getVHigh(cDim)) / 2.0 - - (getVLow(cDim) + getVHigh(cDim)) / 2.0; - } - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - a += dv[cDim] * dv[cDim]; - b += 2.0 * dx[cDim] * dv[cDim]; - c += dx[cDim] * dx[cDim]; - } - - if (a == 0.0 && c == 0.0) return 0.0; - if (a == 0.0) return H * std::sqrt(c); - if (c == 0.0) return H * H * std::sqrt(a) / 2.0; - - f = std::sqrt(a * H * H + b * H + c); - l = 2.0 * a * H + b; - m = 4.0 * a * c - b * b; - n = 2.0 * std::sqrt(a); - - delete[] dx; - delete[] dv; - - return (l * f + log(l / n + f) * m / n - b * std::sqrt(c) - std::log(b / n + std::sqrt(c)) * m / n) / (4.0 * a); -} - -// does not work with degenerate time-intervals. -bool MovingRegion::intersectsRegionAtTime(double t, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsRegionAtTime: MovingRegions have different number of dimensions."); - - // do they contain the time instant? - if (! (m_startTime <= t && t < m_endTime && r.m_startTime <= t && t < r.m_endTime)) return false; - - // do they intersect at that time instant? - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (getExtrapolatedLow(i, t) > r.getExtrapolatedHigh(i, t) || getExtrapolatedHigh(i, t) < r.getExtrapolatedLow(i, t)) return false; - } - return true; -} - -// does not work with degenerate time-intervals. -bool MovingRegion::containsRegionAtTime(double t, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsRegionAtTime: MovingRegions have different number of dimensions."); - - // do they contain the time instant? - if (! (m_startTime <= t && t < m_endTime && r.m_startTime <= t && t < r.m_endTime)) return false; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (getExtrapolatedLow(cDim, t) > r.getExtrapolatedLow(cDim, t) || getExtrapolatedHigh(cDim, t) < getExtrapolatedHigh(cDim, t)) return false; - } - return true; -} - -bool MovingRegion::intersectsPointInTime(const MovingPoint& p) const -{ - libsupermesh::Tools::Interval ivOut; - return intersectsPointInTime(p, ivOut); -} - -bool MovingRegion::intersectsPointInTime(const MovingPoint& p, IInterval& ivOut) const -{ - return intersectsPointInTime(p, p, ivOut); -} - -// if tmin, tmax are infinity then this will not work correctly (everything will always intersect). -// does not work for shrinking regions. -// does not work with degenerate time-intervals. -// FIXME: don't know what happens if tmin is negative infinity. -// -// WARNING: This will return true even if the region completely contains the point, since -// in that case the point trajectory intersects the region area! -bool MovingRegion::intersectsPointInTime(const IInterval& ivPeriod, const MovingPoint& p, IInterval& ivOut) const -{ - if (m_dimension != p.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsPointInTime: MovingPoint has different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(p.m_startTime < p.m_endTime); - assert(ivPeriod.getLowerBound() < ivPeriod.getUpperBound()); - assert(isShrinking() == false); - - if (containsPointInTime(ivPeriod, p)) - { - ivOut = ivPeriod; - return true; - } - - double tmin = std::max(m_startTime, p.m_startTime); - double tmax = std::min(m_endTime, p.m_endTime); - - // the shapes do not intersect in time. - if (tmax <= tmin) return false; - - tmin = std::max(tmin, ivPeriod.getLowerBound()); - tmax = std::min(tmax, ivPeriod.getUpperBound()); - - // the shapes intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return false; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= p.m_startTime && tmax <= p.m_endTime); - - // completely above or bellow in i-th dimension - if ((p.getProjectedCoord(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) && - p.getProjectedCoord(cDim, tmax) >= getExtrapolatedHigh(cDim, tmax)) || - (p.getProjectedCoord(cDim, tmin) < getExtrapolatedLow(cDim, tmin) && - p.getProjectedCoord(cDim, tmax) <= getExtrapolatedLow(cDim, tmax))) - return false; - - // otherwise they intersect inside this interval for sure, since we know that the point is not contained, - // so there is no need to check for 0 divisors, negative values, etc... - - // adjust tmin - if (p.getProjectedCoord(cDim, tmin) > getExtrapolatedHigh(cDim, tmin)) // p above *this at tmin - { - tmin = (getExtrapolatedHigh(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVHigh(cDim)); - } - else if (p.getProjectedCoord(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) // p below *this at tmin - { - tmin = (getExtrapolatedLow(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVLow(cDim)); - } - - // adjust tmax - if (p.getProjectedCoord(cDim, tmax) > getExtrapolatedHigh(cDim, tmax)) // p above *this at tmax - { - tmax = (getExtrapolatedHigh(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVHigh(cDim)); - } - else if (p.getProjectedCoord(cDim, tmax) < getExtrapolatedLow(cDim, tmax)) // p below *this at tmax - { - tmax = (getExtrapolatedLow(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.getVCoord(cDim) - getVLow(cDim)); - } - - if (tmin > tmax) return false; - } - - ivOut.setBounds(tmin, tmax); - - return true; -} - -bool MovingRegion::containsPointInTime(const MovingPoint& p) const -{ - return containsPointInTime(p, p); -} - -// does not work for shrinking regions. -// works fine for infinite bounds (both tmin and tmax). -// does not work with degenerate time-intervals. -// -// finds if during the intersecting time-interval of p and ivPeriod, p is completely contained in *this. -bool MovingRegion::containsPointInTime(const IInterval& ivPeriod, const MovingPoint& p) const -{ - if (m_dimension != p.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsPointInTime: MovingPoint has different number of dimensions."); - - assert(isShrinking() == false); - - double tmin = std::max(ivPeriod.getLowerBound(), p.m_startTime); - double tmax = std::min(ivPeriod.getUpperBound(), p.m_endTime); - - // it should be contained in time. - if (tmax <= tmin || tmin < m_startTime || tmax > m_endTime) return false; - - double intersectionTime; - - assert( - tmin >= ivPeriod.getLowerBound() && tmax <= ivPeriod.getUpperBound() && - tmin >= m_startTime && tmax <= m_endTime && - tmin >= p.m_startTime && tmax <= p.m_endTime); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - // it should be contained at start time. - if (p.getProjectedCoord(cDim, tmin) > getExtrapolatedHigh(cDim, tmin) || - p.getProjectedCoord(cDim, tmin) < getExtrapolatedLow(cDim, tmin)) return false; - - if (p.m_pVCoords[cDim] != m_pVHigh[cDim]) - { - intersectionTime = (getExtrapolatedHigh(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.m_pVCoords[cDim] - m_pVHigh[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && p.m_pVCoords[cDim] > m_pVHigh[cDim]) return false; - } - - if (p.m_pVCoords[cDim] != m_pVLow[cDim]) - { - intersectionTime = (getExtrapolatedLow(cDim, 0.0) - p.getProjectedCoord(cDim, 0.0)) / (p.m_pVCoords[cDim] - m_pVLow[cDim]); - // if they intersect during this time-interval, then it is not contained. - if (tmin < intersectionTime && intersectionTime < tmax) return false; - if (tmin == intersectionTime && p.m_pVCoords[cDim] < m_pVLow[cDim]) return false; - } - } - - return true; -} - -void MovingRegion::combineRegionInTime(const MovingRegion& r) -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("combineRegionInTime: MovingRegions have different number of dimensions."); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(getExtrapolatedLow(cDim, m_startTime), r.getExtrapolatedLow(cDim, m_startTime)); - m_pHigh[cDim] = std::max(getExtrapolatedHigh(cDim, m_startTime), r.getExtrapolatedHigh(cDim, m_startTime)); - m_pVLow[cDim] = std::min(m_pVLow[cDim], r.m_pVLow[cDim]); - m_pVHigh[cDim] = std::max(m_pVHigh[cDim], r.m_pVHigh[cDim]); - } - - // m_startTime should be modified at the end, since it affects the - // calculation of extrapolated coordinates. - m_startTime = std::min(m_startTime, r.m_startTime); - m_endTime = std::max(m_endTime, r.m_endTime); -} - -void MovingRegion::getCombinedRegionInTime(MovingRegion& out, const MovingRegion& in) const -{ - if (m_dimension != in.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getCombinedProjectedRegionInTime: MovingRegions have different number of dimensions."); - - out = *this; - out.combineRegionInTime(in); -} - -void MovingRegion::combineRegionAfterTime(double t, const MovingRegion& r) -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("combineRegionInTime: MovingRegions have different number of dimensions."); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(getExtrapolatedLow(cDim, t), r.getExtrapolatedLow(cDim, t)); - m_pHigh[cDim] = std::max(getExtrapolatedHigh(cDim, t), r.getExtrapolatedHigh(cDim, t)); - m_pVLow[cDim] = std::min(m_pVLow[cDim], r.m_pVLow[cDim]); - m_pVHigh[cDim] = std::max(m_pVHigh[cDim], r.m_pVHigh[cDim]); - } - - // m_startTime should be modified at the end, since it affects the - // calculation of extrapolated coordinates. - m_startTime = t; - m_endTime = std::max(m_endTime, r.m_endTime); - if (t >= m_endTime) m_endTime = std::numeric_limits::max(); -} - -void MovingRegion::getCombinedRegionAfterTime(double t, MovingRegion& out, const MovingRegion& in) const -{ - if (m_dimension != in.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getCombinedProjectedRegionInTime: MovingRegions have different number of dimensions."); - - out = *this; - out.combineRegionAfterTime(t, in); -} - -double MovingRegion::getIntersectingAreaInTime(const MovingRegion& r) const -{ - return getIntersectingAreaInTime(r, r); -} - -double MovingRegion::getIntersectingAreaInTime(const IInterval& ivI, const MovingRegion& r) const -{ - if (m_dimension != r.m_dimension) throw libsupermesh::Tools::IllegalArgumentException("getIntersectingAreaInTime: MovingRegions have different number of dimensions."); - - assert(m_startTime < m_endTime); - assert(r.m_startTime < r.m_endTime); - assert(ivI.getLowerBound() < ivI.getUpperBound()); - assert(isShrinking() == false && r.isShrinking() == false); - - double tmin = std::max(m_startTime, r.m_startTime); - double tmax = std::min(m_endTime, r.m_endTime); - - // the regions do not intersect in time. - if (tmax <= tmin) return 0.0; - - tmin = std::max(tmin, ivI.getLowerBound()); - tmax = std::min(tmax, ivI.getUpperBound()); - - // the regions intersecting interval does not intersect with the given time period. - if (tmax <= tmin) return 0.0; - - assert(tmax < std::numeric_limits::max()); - assert(tmin > -std::numeric_limits::max()); - - libsupermesh::Tools::Interval ivIn(tmin, tmax); - libsupermesh::Tools::Interval ivOut(ivIn); - - if (! intersectsRegionInTime(ivIn, r, ivOut)) return 0.0; - - ivIn = ivOut; - tmin = ivIn.getLowerBound(); - tmax = ivIn.getUpperBound(); - assert(tmin <= tmax); - - assert(tmin >= ivI.getLowerBound() && tmax <= ivI.getUpperBound()); - - if (containsRegionInTime(ivIn, r)) - { - return r.getAreaInTime(ivIn); - } - else if (r.containsRegionInTime(ivIn, *this)) - { - return getAreaInTime(ivIn); - } - - MovingRegion x = *this; - CrossPoint c; - std::priority_queue, CrossPoint::ascending> pq; - - // find points of intersection in all dimensions. - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (getLow(i, tmin) > r.getLow(i, tmin)) - { - x.m_pLow[i] = m_pLow[i]; - x.m_pVLow[i] = m_pVLow[i]; - - if (getLow(i, tmax) < r.getLow(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 0; - c.m_t = (getExtrapolatedLow(i, 0.0) - r.getExtrapolatedLow(i, 0.0)) / (r.getVLow(i) - getVLow(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = &r; - pq.push(c); - } - } - else - { - x.m_pLow[i] = r.m_pLow[i]; - x.m_pVLow[i] = r.m_pVLow[i]; - - if (r.getLow(i, tmax) < getLow(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 0; - c.m_t = (getExtrapolatedLow(i, 0.0) - r.getExtrapolatedLow(i, 0.0)) / (r.getVLow(i) - getVLow(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = this; - pq.push(c); - } - } - - if (getHigh(i, tmin) < r.getHigh(i, tmin)) - { - x.m_pHigh[i] = m_pHigh[i]; - x.m_pVHigh[i] = m_pVHigh[i]; - - if (getHigh(i, tmax) > r.getHigh(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 1; - c.m_t = (getExtrapolatedHigh(i, 0.0) - r.getExtrapolatedHigh(i, 0.0)) / (r.getVHigh(i) - getVHigh(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = &r; - pq.push(c); - } - } - else - { - x.m_pHigh[i] = r.m_pHigh[i]; - x.m_pVHigh[i] = r.m_pVHigh[i]; - - if (r.getHigh(i, tmax) > getHigh(i, tmax)) - { - c.m_dimension = i; - c.m_boundary = 1; - c.m_t = (getExtrapolatedHigh(i, 0.0) - r.getExtrapolatedHigh(i, 0.0)) / (r.getVHigh(i) - getVHigh(i)); - assert(c.m_t >= tmin && c.m_t <= tmax); - c.m_to = this; - pq.push(c); - } - } - } - - // add up the total area of the intersecting pieces. - double area = 0.0; -#ifndef NDEBUG - double _t = -std::numeric_limits::max(); -#endif - - while (! pq.empty()) - { - c = pq.top(); pq.pop(); -#ifndef NDEBUG - assert(_t <= c.m_t); - _t = c.m_t; -#endif - - // needed in case two consecutive points have the same intersection time. - if (c.m_t > tmin) area += x.getAreaInTime(libsupermesh::Tools::Interval(tmin, c.m_t)); - - if (c.m_boundary == 0) - { - x.m_pLow[c.m_dimension] = c.m_to->m_pLow[c.m_dimension]; - x.m_pVLow[c.m_dimension] = c.m_to->m_pVLow[c.m_dimension]; - } - else - { - x.m_pHigh[c.m_dimension] = c.m_to->m_pHigh[c.m_dimension]; - x.m_pVHigh[c.m_dimension] = c.m_to->m_pVHigh[c.m_dimension]; - } - - tmin = c.m_t; - } - - // ... and the last piece - if (tmax > tmin) area += x.getAreaInTime(libsupermesh::Tools::Interval(tmin, tmax)); - - return area; -} - -// -// IObject interface -// -MovingRegion* MovingRegion::clone() -{ - return new MovingRegion(*this); -} - -// -// ISerializable interface -// -uint32_t MovingRegion::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + 4 * m_dimension * sizeof(double)); -} - -void MovingRegion::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pHigh, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pVLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pVHigh, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void MovingRegion::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, m_pLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pHigh, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pVLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pVHigh, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IEvolvingShape interface -// -void MovingRegion::getVMBR(Region& out) const -{ - out.makeDimension(m_dimension); - memcpy(out.m_pLow, m_pVLow, m_dimension * sizeof(double)); - memcpy(out.m_pHigh, m_pVHigh, m_dimension * sizeof(double)); -} - -void MovingRegion::getMBRAtTime(double t, Region& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - out.m_pLow[cDim] = getLow(cDim, t); - out.m_pHigh[cDim] = getHigh(cDim, t); - } -} - -// -// ITimeShape interface -// -double MovingRegion::getAreaInTime() const -{ - return getAreaInTime(*this); -} - -// this computes the area/volume/etc. swept by the Region in time. -double MovingRegion::getAreaInTime(const IInterval& ivI) const -{ - double tmin = std::max(ivI.getLowerBound(), m_startTime); - double tmax = std::min(ivI.getUpperBound(), m_endTime); - - assert(tmin > -std::numeric_limits::max()); - assert(tmax < std::numeric_limits::max()); - assert(tmin <= tmax); - - if (tmin >= tmax - std::numeric_limits::epsilon() && - tmin <= tmax + std::numeric_limits::epsilon()) - return 0.0; - - double dx1, dx2, dx3; - double dv1, dv2, dv3; - double H = tmax - tmin; - - if (m_dimension == 3) - { - dx3 = getExtrapolatedHigh(2, tmin) - getExtrapolatedLow(2, tmin); - dv3 = getVHigh(2) - getVLow(2); - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return - H * dx1 * dx2 * dx3 + H * H * (dx1 * dx2 * dv3 + (dx1 * dv2 + dv1 * dx2) * dx3) / 2.0 + - H * H * H * ((dx1 * dv2 + dv1 * dx2) * dv3 + dv1 * dv2 * dx3) / 3.0 + H * H * H * H * dv1 * dv2 * dv3 / 4.0; - } - else if (m_dimension == 2) - { - dx2 = getExtrapolatedHigh(1, tmin) - getExtrapolatedLow(1, tmin); - dv2 = getVHigh(1) - getVLow(1); - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return H * dx1 * dx2 + H * H * (dx1 * dv2 + dv1 * dx2) / 2.0 + H * H * H * dv1 * dv2 / 3.0; - } - else if (m_dimension == 1) - { - dx1 = getExtrapolatedHigh(0, tmin) - getExtrapolatedLow(0, tmin); - dv1 = getVHigh(0) - getVLow(0); - return H * dx1 + H * H * dv1 / 2.0; - } - else - { - throw libsupermesh::Tools::NotSupportedException("getAreaInTime: unsupported dimensionality."); - } -} - -double MovingRegion::getIntersectingAreaInTime(const ITimeShape& r) const -{ - return getIntersectingAreaInTime(r, r); -} - -double MovingRegion::getIntersectingAreaInTime(const IInterval&, const ITimeShape& in) const -{ - const MovingRegion* pr = dynamic_cast(&in); - if (pr != 0) return getIntersectingAreaInTime(*pr); - - throw libsupermesh::Tools::IllegalStateException("getIntersectingAreaInTime: Not implemented yet!"); -} - -void MovingRegion::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pLow[cIndex] = std::numeric_limits::max(); - m_pHigh[cIndex] = -std::numeric_limits::max(); - m_pVLow[cIndex] = std::numeric_limits::max(); - m_pVHigh[cIndex] = -std::numeric_limits::max(); - } - - m_startTime = -std::numeric_limits::max(); - m_endTime = std::numeric_limits::max(); -} - -void MovingRegion::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pLow; - delete[] m_pHigh; - delete[] m_pVLow; - delete[] m_pVHigh; - m_pLow = 0; m_pHigh = 0; - m_pVLow = 0; m_pVHigh = 0; - - m_dimension = dimension; - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - m_pVLow = new double[m_dimension]; - m_pVHigh = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const MovingRegion& r) -{ - uint32_t i; - - os << "Low: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pLow[i] << " "; - } - - os << ", High: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pHigh[i] << " "; - } - - os << "VLow: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pVLow[i] << " "; - } - - os << ", VHigh: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pVHigh[i] << " "; - } - - os << ", Start: " << r.m_startTime << ", End: " << r.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/Point.cc b/spatialindex-1.8.5/src/spatialindex/Point.cc deleted file mode 100644 index 3f077b2..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Point.cc +++ /dev/null @@ -1,273 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -Point::Point() - : m_dimension(0), m_pCoords(0) -{ -} - -Point::Point(const double* pCoords, uint32_t dimension) - : m_dimension(dimension) -{ - // no need to initialize m_pCoords to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pCoords = new double[m_dimension]; - memcpy(m_pCoords, pCoords, m_dimension * sizeof(double)); -} - -Point::Point(const Point& p) - : m_dimension(p.m_dimension) -{ - // no need to initialize m_pCoords to 0 since if a bad_alloc is raised the destructor will not be called. - - m_pCoords = new double[m_dimension]; - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); -} - -Point::~Point() -{ - delete[] m_pCoords; -} - -Point& Point::operator=(const Point& p) -{ - if (this != &p) - { - makeDimension(p.m_dimension); - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - } - - return *this; -} - -bool Point::operator==(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Point::operator==: Points have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pCoords[i] < p.m_pCoords[i] - std::numeric_limits::epsilon() || - m_pCoords[i] > p.m_pCoords[i] + std::numeric_limits::epsilon()) return false; - } - - return true; -} - -// -// IObject interface -// -Point* Point::clone() -{ - return new Point(*this); -} - -// -// ISerializable interface -// -uint32_t Point::getByteArraySize() -{ - return (sizeof(uint32_t) + m_dimension * sizeof(double)); -} - -void Point::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - makeDimension(dimension); - memcpy(m_pCoords, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void Point::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, m_pCoords, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IShape interface -// -bool Point::intersectsShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->containsPoint(*this); - } - - throw libsupermesh::Tools::IllegalStateException( - "Point::intersectsShape: Not implemented yet!" - ); -} - -bool Point::containsShape(const IShape&) const -{ - return false; -} - -bool Point::touchesShape(const IShape& s) const -{ - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) - { - if (*this == *ppt) return true; - return false; - } - - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->touchesPoint(*this); - } - - throw libsupermesh::Tools::IllegalStateException( - "Point::touchesShape: Not implemented yet!" - ); -} - -void Point::getCenter(Point& out) const -{ - out = *this; -} - -uint32_t Point::getDimension() const -{ - return m_dimension; -} - -void Point::getMBR(Region& out) const -{ - out = Region(m_pCoords, m_pCoords, m_dimension); -} - -double Point::getArea() const -{ - return 0.0; -} - -double Point::getMinimumDistance(const IShape& s) const -{ - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) - { - return getMinimumDistance(*ppt); - } - - const Region* pr = dynamic_cast(&s); - if (pr != 0) - { - return pr->getMinimumDistance(*this); - } - - throw libsupermesh::Tools::IllegalStateException( - "Point::getMinimumDistance: Not implemented yet!" - ); -} - -double Point::getMinimumDistance(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Point::getMinimumDistance: Shapes have different number of dimensions." - ); - - double ret = 0.0; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - ret += std::pow(m_pCoords[cDim] - p.m_pCoords[cDim], 2.0); - } - - return std::sqrt(ret); -} - -double Point::getCoordinate(uint32_t index) const -{ - if (index >= m_dimension) - throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pCoords[index]; -} - -void Point::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pCoords[cIndex] = std::numeric_limits::max(); - } -} - -void Point::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pCoords; - - // remember that this is not a constructor. The object will be destructed normally if - // something goes wrong (bad_alloc), so we must take care not to leave the object at an intermediate state. - m_pCoords = 0; - - m_dimension = dimension; - m_pCoords = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const Point& pt) -{ - for (uint32_t cDim = 0; cDim < pt.m_dimension; ++cDim) - { - os << pt.m_pCoords[cDim] << " "; - } - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/Region.cc b/spatialindex-1.8.5/src/spatialindex/Region.cc deleted file mode 100644 index 50bb32a..0000000 --- a/spatialindex-1.8.5/src/spatialindex/Region.cc +++ /dev/null @@ -1,603 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include -#include - -using namespace libsupermesh::SpatialIndex; - -Region::Region() - : m_dimension(0), m_pLow(0), m_pHigh(0) -{ -} - -Region::Region(const double* pLow, const double* pHigh, uint32_t dimension) -{ - initialize(pLow, pHigh, dimension); -} - -Region::Region(const Point& low, const Point& high) -{ - if (low.m_dimension != high.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::Region: arguments have different number of dimensions." - ); - - initialize(low.m_pCoords, high.m_pCoords, low.m_dimension); -} - -Region::Region(const Region& r) -{ - initialize(r.m_pLow, r.m_pHigh, r.m_dimension); -} - -void Region::initialize(const double* pLow, const double* pHigh, uint32_t dimension) -{ - m_pLow = 0; - m_dimension = dimension; - -#ifndef NDEBUG - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if ((pLow[cDim] > pHigh[cDim])) - { - // check for infinitive region - if (!(pLow[cDim] == std::numeric_limits::max() || - pHigh[cDim] == -std::numeric_limits::max() )) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::initialize: Low point has larger coordinates than High point." - " Neither point is infinity." - ); - } - } -#endif - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - throw; - } - - memcpy(m_pLow, pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, pHigh, m_dimension * sizeof(double)); -} - -Region::~Region() -{ - delete[] m_pLow; - delete[] m_pHigh; -} - -Region& Region::operator=(const Region& r) -{ - if(this != &r) - { - makeDimension(r.m_dimension); - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - } - - return *this; -} - -bool Region::operator==(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::operator==: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pLow[i] < r.m_pLow[i] - std::numeric_limits::epsilon() || - m_pLow[i] > r.m_pLow[i] + std::numeric_limits::epsilon() || - m_pHigh[i] < r.m_pHigh[i] - std::numeric_limits::epsilon() || - m_pHigh[i] > r.m_pHigh[i] + std::numeric_limits::epsilon()) - return false; - } - return true; -} - -// -// IObject interface -// -Region* Region::clone() -{ - return new Region(*this); -} - -// -// ISerializable interface -// -uint32_t Region::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * m_dimension * sizeof(double)); -} - -void Region::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - makeDimension(dimension); - memcpy(m_pLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pHigh, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void Region::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, m_pLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pHigh, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// IShape interface -// -bool Region::intersectsShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return intersectsRegion(*pr); - - const LineSegment* pls = dynamic_cast(&s); - if (pls != 0) return intersectsLineSegment(*pls); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return containsPoint(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::intersectsShape: Not implemented yet!" - ); -} - -bool Region::containsShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return containsRegion(*pr); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return containsPoint(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::containsShape: Not implemented yet!" - ); -} - -bool Region::touchesShape(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return touchesRegion(*pr); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return touchesPoint(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::touchesShape: Not implemented yet!" - ); -} - -void Region::getCenter(Point& out) const -{ - out.makeDimension(m_dimension); - for (uint32_t i = 0; i < m_dimension; ++i) - { - out.m_pCoords[i] = (m_pLow[i] + m_pHigh[i]) / 2.0; - } -} - -uint32_t Region::getDimension() const -{ - return m_dimension; -} - -void Region::getMBR(Region& out) const -{ - out = *this; -} - -double Region::getArea() const -{ - double area = 1.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - area *= m_pHigh[i] - m_pLow[i]; - } - - return area; -} - -double Region::getMinimumDistance(const IShape& s) const -{ - const Region* pr = dynamic_cast(&s); - if (pr != 0) return getMinimumDistance(*pr); - - const Point* ppt = dynamic_cast(&s); - if (ppt != 0) return getMinimumDistance(*ppt); - - throw libsupermesh::Tools::IllegalStateException( - "Region::getMinimumDistance: Not implemented yet!" - ); -} - -bool Region::intersectsRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::intersectsRegion: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (m_pLow[i] > r.m_pHigh[i] || m_pHigh[i] < r.m_pLow[i]) return false; - } - return true; -} - -bool Region::containsRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::containsRegion: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (m_pLow[i] > r.m_pLow[i] || m_pHigh[i] < r.m_pHigh[i]) return false; - } - return true; -} - -bool Region::touchesRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::touchesRegion: Regions have different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - (m_pLow[i] >= r.m_pLow[i] + std::numeric_limits::epsilon() && - m_pLow[i] <= r.m_pLow[i] - std::numeric_limits::epsilon()) || - (m_pHigh[i] >= r.m_pHigh[i] + std::numeric_limits::epsilon() && - m_pHigh[i] <= r.m_pHigh[i] - std::numeric_limits::epsilon())) - return false; - } - return true; -} - - -double Region::getMinimumDistance(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getMinimumDistance: Regions have different number of dimensions." - ); - - double ret = 0.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - double x = 0.0; - - if (r.m_pHigh[i] < m_pLow[i]) - { - x = std::abs(r.m_pHigh[i] - m_pLow[i]); - } - else if (m_pHigh[i] < r.m_pLow[i]) - { - x = std::abs(r.m_pLow[i] - m_pHigh[i]); - } - - ret += x * x; - } - - return std::sqrt(ret); -} - -bool Region::intersectsLineSegment(const LineSegment& in) const -{ - if (m_dimension != 2) - throw libsupermesh::Tools::NotSupportedException( - "Region::intersectsLineSegment: only supported for 2 dimensions" - ); - - if (m_dimension != in.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::intersectsRegion: Region and LineSegment have different number of dimensions." - ); - - // there may be a more efficient method, but this suffices for now - Point ll = Point(m_pLow, 2); - Point ur = Point(m_pHigh, 2); - // fabricate ul and lr coordinates and points - double c_ul[2] = {m_pLow[0], m_pHigh[1]}; - double c_lr[2] = {m_pHigh[0], m_pLow[1]}; - Point ul = Point(&c_ul[0], 2); - Point lr = Point(&c_lr[0], 2); - - // Points/LineSegment for the segment - Point p1 = Point(in.m_pStartPoint, 2); - Point p2 = Point(in.m_pEndPoint, 2); - - - //Check whether either or both the endpoints are within the region OR - //whether any of the bounding segments of the Region intersect the segment - return (containsPoint(p1) || containsPoint(p2) || - in.intersectsShape(LineSegment(ll, ul)) || in.intersectsShape(LineSegment(ul, ur)) || - in.intersectsShape(LineSegment(ur, lr)) || in.intersectsShape(LineSegment(lr, ll))); - -} - -bool Region::containsPoint(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::containsPoint: Point has different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (m_pLow[i] > p.getCoordinate(i) || m_pHigh[i] < p.getCoordinate(i)) return false; - } - return true; -} - -bool Region::touchesPoint(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::touchesPoint: Point has different number of dimensions." - ); - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - (m_pLow[i] >= p.getCoordinate(i) - std::numeric_limits::epsilon() && - m_pLow[i] <= p.getCoordinate(i) + std::numeric_limits::epsilon()) || - (m_pHigh[i] >= p.getCoordinate(i) - std::numeric_limits::epsilon() && - m_pHigh[i] <= p.getCoordinate(i) + std::numeric_limits::epsilon())) - return true; - } - return false; -} - -double Region::getMinimumDistance(const Point& p) const -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getMinimumDistance: Point has different number of dimensions." - ); - - double ret = 0.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if (p.getCoordinate(i) < m_pLow[i]) - { - ret += std::pow(m_pLow[i] - p.getCoordinate(i), 2.0); - } - else if (p.getCoordinate(i) > m_pHigh[i]) - { - ret += std::pow(p.getCoordinate(i) - m_pHigh[i], 2.0); - } - } - - return std::sqrt(ret); -} - -Region Region::getIntersectingRegion(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getIntersectingRegion: Regions have different number of dimensions." - ); - - Region ret; - ret.makeInfinite(m_dimension); - - // check for intersection. - // marioh: avoid function call since this is called billions of times. - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (m_pLow[cDim] > r.m_pHigh[cDim] || m_pHigh[cDim] < r.m_pLow[cDim]) return ret; - } - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - ret.m_pLow[cDim] = std::max(m_pLow[cDim], r.m_pLow[cDim]); - ret.m_pHigh[cDim] = std::min(m_pHigh[cDim], r.m_pHigh[cDim]); - } - - return ret; -} - -double Region::getIntersectingArea(const Region& r) const -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getIntersectingArea: Regions have different number of dimensions." - ); - - double ret = 1.0; - double f1, f2; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if (m_pLow[cDim] > r.m_pHigh[cDim] || m_pHigh[cDim] < r.m_pLow[cDim]) return 0.0; - - f1 = std::max(m_pLow[cDim], r.m_pLow[cDim]); - f2 = std::min(m_pHigh[cDim], r.m_pHigh[cDim]); - ret *= f2 - f1; - } - - return ret; -} - -/* - * Returns the margin of a region. It is calcuated as the sum of 2^(d-1) * width, in each dimension. - * It is actually the sum of all edges, no matter what the dimensionality is. -*/ -double Region::getMargin() const -{ - double mul = std::pow(2.0, static_cast(m_dimension) - 1.0); - double margin = 0.0; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - margin += (m_pHigh[i] - m_pLow[i]) * mul; - } - - return margin; -} - -void Region::combineRegion(const Region& r) -{ - if (m_dimension != r.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::combineRegion: Region has different number of dimensions." - ); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(m_pLow[cDim], r.m_pLow[cDim]); - m_pHigh[cDim] = std::max(m_pHigh[cDim], r.m_pHigh[cDim]); - } -} - -void Region::combinePoint(const Point& p) -{ - if (m_dimension != p.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::combinePoint: Point has different number of dimensions." - ); - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - m_pLow[cDim] = std::min(m_pLow[cDim], p.m_pCoords[cDim]); - m_pHigh[cDim] = std::max(m_pHigh[cDim], p.m_pCoords[cDim]); - } -} - -void Region::getCombinedRegion(Region& out, const Region& in) const -{ - if (m_dimension != in.m_dimension) - throw libsupermesh::Tools::IllegalArgumentException( - "Region::getCombinedRegion: Regions have different number of dimensions." - ); - - out = *this; - out.combineRegion(in); -} - -double Region::getLow(uint32_t index) const -{ - if (index >= m_dimension) - throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pLow[index]; -} - -double Region::getHigh(uint32_t index) const -{ - if (index >= m_dimension) - throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pHigh[index]; -} - -void Region::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pLow[cIndex] = std::numeric_limits::max(); - m_pHigh[cIndex] = -std::numeric_limits::max(); - } -} - -void Region::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - delete[] m_pLow; - delete[] m_pHigh; - - // remember that this is not a constructor. The object will be destructed normally if - // something goes wrong (bad_alloc), so we must take care not to leave the object at an intermediate state. - m_pLow = 0; m_pHigh = 0; - - m_dimension = dimension; - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const Region& r) -{ - uint32_t i; - - os << "Low: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pLow[i] << " "; - } - - os << ", High: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pHigh[i] << " "; - } - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc b/spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc deleted file mode 100644 index 816064c..0000000 --- a/spatialindex-1.8.5/src/spatialindex/SpatialIndexImpl.cc +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "../rtree/RTree.h" -#include "../mvrtree/MVRTree.h" -#include "../tprtree/TPRTree.h" - -libsupermesh::SpatialIndex::InvalidPageException::InvalidPageException(id_type id) -{ - std::ostringstream s; - s << "Unknown page id " << id; - m_error = s.str(); -} - -std::string libsupermesh::SpatialIndex::InvalidPageException::what() -{ - return "InvalidPageException: " + m_error; -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const ISpatialIndex& i) -{ - const libsupermesh::SpatialIndex::RTree::RTree* pRTree = dynamic_cast(&i); - if (pRTree != 0) - { - os << *pRTree; - return os; - } - - const libsupermesh::SpatialIndex::MVRTree::MVRTree* pMVRTree = dynamic_cast(&i); - if (pMVRTree != 0) - { - os << *pMVRTree; - return os; - } - - const libsupermesh::SpatialIndex::TPRTree::TPRTree* pTPRTree = dynamic_cast(&i); - if (pTPRTree != 0) - { - os << *pTPRTree; - return os; - } - - std::cerr << "ISpatialIndex operator<<: Not implemented yet for this index type." << std::endl; - return os; -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const IStatistics& s) -{ - const libsupermesh::SpatialIndex::RTree::Statistics* pRTreeStats = dynamic_cast(&s); - if (pRTreeStats != 0) - { - os << *pRTreeStats; - return os; - } - - const libsupermesh::SpatialIndex::MVRTree::Statistics* pMVRTreeStats = dynamic_cast(&s); - if (pMVRTreeStats != 0) - { - os << * pMVRTreeStats; - return os; - } - - const libsupermesh::SpatialIndex::TPRTree::Statistics* pTPRTreeStats = dynamic_cast(&s); - if (pTPRTreeStats != 0) - { - os << * pTPRTreeStats; - return os; - } - - std::cerr << "IStatistics operator<<: Not implemented yet for this index type." << std::endl; - return os; -} - diff --git a/spatialindex-1.8.5/src/spatialindex/TimePoint.cc b/spatialindex-1.8.5/src/spatialindex/TimePoint.cc deleted file mode 100644 index 78b85ec..0000000 --- a/spatialindex-1.8.5/src/spatialindex/TimePoint.cc +++ /dev/null @@ -1,308 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include - -#include - -using namespace libsupermesh::SpatialIndex; - -TimePoint::TimePoint() - : Point(), m_startTime(-std::numeric_limits::max()), m_endTime(std::numeric_limits::max()) -{ -} - -TimePoint::TimePoint(const double* pCoords, const IInterval& ti, uint32_t dimension) - : Point(pCoords, dimension), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimePoint::TimePoint(const double* pCoords, double tStart, double tEnd, uint32_t dimension) - : Point(pCoords, dimension), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimePoint::TimePoint(const Point& p, const IInterval& ti) - : Point(p), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimePoint::TimePoint(const Point& p, double tStart, double tEnd) - : Point(p), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimePoint::TimePoint(const TimePoint& p) - : m_startTime(p.m_startTime), m_endTime(p.m_endTime) -{ - m_dimension = p.m_dimension; - - m_pCoords = new double[m_dimension]; - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); -} - -TimePoint::~TimePoint() -{ -} - -TimePoint& TimePoint::operator=(const TimePoint& p) -{ - if (this != &p) - { - makeDimension(p.m_dimension); - memcpy(m_pCoords, p.m_pCoords, m_dimension * sizeof(double)); - m_startTime = p.m_startTime; - m_endTime = p.m_endTime; - } - - return *this; -} - -bool TimePoint::operator==(const TimePoint& p) const -{ - if ( - m_startTime < p.m_startTime - std::numeric_limits::epsilon() || - m_startTime > p.m_startTime + std::numeric_limits::epsilon() || - m_endTime < p.m_endTime - std::numeric_limits::epsilon() || - m_endTime > p.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t cDim = 0; cDim < m_dimension; ++cDim) - { - if ( - m_pCoords[cDim] < p.m_pCoords[cDim] - std::numeric_limits::epsilon() || - m_pCoords[cDim] > p.m_pCoords[cDim] + std::numeric_limits::epsilon()) - return false; - } - - return true; -} - -// -// IObject interface -// -TimePoint* TimePoint::clone() -{ - return new TimePoint(*this); -} - -// -// ISerializable interface -// -uint32_t TimePoint::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + m_dimension * sizeof(double)); -} - -void TimePoint::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pCoords, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void TimePoint::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, m_pCoords, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// ITimeShape interface -// -bool TimePoint::intersectsShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return pr->containsPointInTime(*this); - - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimePoint::intersectsShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimePoint::containsShapeInTime(const ITimeShape&) const -{ - return false; -} - -bool TimePoint::containsShapeInTime(const IInterval&, const ITimeShape&) const -{ - return false; -} - -bool TimePoint::touchesShapeInTime(const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -bool TimePoint::touchesShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -double TimePoint::getAreaInTime() const -{ - return 0.0; -} - -double TimePoint::getAreaInTime(const IInterval&) const -{ - return 0.0; -} - -double TimePoint::getIntersectingAreaInTime(const ITimeShape&) const -{ - return 0.0; -} - -double TimePoint::getIntersectingAreaInTime(const IInterval&, const ITimeShape&) const -{ - return 0.0; -} - -// -// IInterval interface -// -libsupermesh::Tools::IInterval& TimePoint::operator=(const libsupermesh::Tools::IInterval& i) -{ - if (this != &i) - { - m_startTime = i.getLowerBound(); - m_endTime = i.getUpperBound(); - } - - return *this; -} - -double TimePoint::getLowerBound() const -{ - return m_startTime; -} - -double TimePoint::getUpperBound() const -{ - return m_endTime; -} - -void TimePoint::setBounds(double l, double h) -{ - assert(l <= h); - - m_startTime = l; - m_endTime = h; -} - -bool TimePoint::intersectsInterval(const IInterval& ti) const -{ - return intersectsInterval(ti.getIntervalType(), ti.getLowerBound(), ti.getUpperBound()); -} - -bool TimePoint::intersectsInterval(libsupermesh::Tools::IntervalType, const double start, const double end) const -{ - //if (m_startTime != start && - // (m_startTime >= end || m_endTime <= start)) return false; - if (m_startTime >= end || m_endTime <= start) return false; - - return true; -} - -bool TimePoint::containsInterval(const IInterval& ti) const -{ - if (m_startTime <= ti.getLowerBound() && m_endTime >= ti.getUpperBound()) return true; - return false; -} - -libsupermesh::Tools::IntervalType TimePoint::getIntervalType() const -{ - return libsupermesh::Tools::IT_RIGHTOPEN; -} - -void TimePoint::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pCoords[cIndex] = std::numeric_limits::max(); - } - - m_startTime = std::numeric_limits::max(); - m_endTime = -std::numeric_limits::max(); -} - -void TimePoint::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - m_dimension = dimension; - - delete[] m_pCoords; - m_pCoords = 0; - - m_pCoords = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const TimePoint& pt) -{ - uint32_t i; - - for (i = 0; i < pt.m_dimension; ++i) - { - os << pt.m_pCoords[i] << " "; - } - - os << ", Start: " << pt.m_startTime << ", End: " << pt.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/spatialindex/TimeRegion.cc b/spatialindex-1.8.5/src/spatialindex/TimeRegion.cc deleted file mode 100644 index 0f38e66..0000000 --- a/spatialindex-1.8.5/src/spatialindex/TimeRegion.cc +++ /dev/null @@ -1,430 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include - -using namespace libsupermesh::SpatialIndex; - -TimeRegion::TimeRegion() - : Region(), m_startTime(-std::numeric_limits::max()), m_endTime(std::numeric_limits::max()) -{ -} - -TimeRegion::TimeRegion(const double* pLow, const double* pHigh, const IInterval& ti, uint32_t dimension) - : Region(pLow, pHigh, dimension), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimeRegion::TimeRegion(const double* pLow, const double* pHigh, double tStart, double tEnd, uint32_t dimension) - : Region(pLow, pHigh, dimension), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimeRegion::TimeRegion(const Point& low, const Point& high, const IInterval& ti) - : Region(low, high), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimeRegion::TimeRegion(const Point& low, const Point& high, double tStart, double tEnd) - : Region(low, high), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimeRegion::TimeRegion(const Region& r, const IInterval& ti) - : Region(r), m_startTime(ti.getLowerBound()), m_endTime(ti.getUpperBound()) -{ -} - -TimeRegion::TimeRegion(const Region& r, double tStart, double tEnd) - : Region(r), m_startTime(tStart), m_endTime(tEnd) -{ -} - -TimeRegion::TimeRegion(const TimePoint& low, const TimePoint& high) - : Region((Point&) low, (Point&) high), m_startTime(low.m_startTime), m_endTime(high.m_endTime) -{ -} - -TimeRegion::TimeRegion(const TimeRegion& r) - : m_startTime(r.m_startTime), m_endTime(r.m_endTime) -{ - m_dimension = r.m_dimension; - m_pLow = 0; - - try - { - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } - catch (...) - { - delete[] m_pLow; - throw; - } - - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); -} - -TimeRegion::~TimeRegion() -{ -} - -TimeRegion& TimeRegion::operator=(const TimeRegion& r) -{ - if(this != &r) - { - makeDimension(r.m_dimension); - memcpy(m_pLow, r.m_pLow, m_dimension * sizeof(double)); - memcpy(m_pHigh, r.m_pHigh, m_dimension * sizeof(double)); - - m_startTime = r.m_startTime; - m_endTime = r.m_endTime; - } - - return *this; -} - -bool TimeRegion::operator==(const TimeRegion& r) const -{ - if (m_startTime < r.m_startTime - std::numeric_limits::epsilon() || - m_startTime > r.m_startTime + std::numeric_limits::epsilon() || - m_endTime < r.m_endTime - std::numeric_limits::epsilon() || - m_endTime > r.m_endTime + std::numeric_limits::epsilon()) - return false; - - for (uint32_t i = 0; i < m_dimension; ++i) - { - if ( - m_pLow[i] < r.m_pLow[i] - std::numeric_limits::epsilon() || - m_pLow[i] > r.m_pLow[i] + std::numeric_limits::epsilon() || - m_pHigh[i] < r.m_pHigh[i] - std::numeric_limits::epsilon() || - m_pHigh[i] > r.m_pHigh[i] + std::numeric_limits::epsilon()) - return false; - } - return true; -} - -bool TimeRegion::intersectsRegionInTime(const TimeRegion& r) const -{ - // they should just intersect in time. - // check if they intersect in time first. - // the first check is needed for the following case: - // m_endTime == m_startTime == r.m_startTime. - // For open ended intervals this should be considered as an intersection - // (takes care of degenarate intervals) - //if (m_startTime != r.m_startTime && - // (m_startTime >= r.m_endTime || m_endTime <= r.m_startTime)) - if (! intersectsInterval(r)) return false; - return Region::intersectsRegion(r); -} - -bool TimeRegion::containsRegionInTime(const TimeRegion& r) const -{ - // it should be contained in time. - if (! containsInterval(r)) return false; - return Region::containsRegion(r); -} - -bool TimeRegion::touchesRegionInTime(const TimeRegion& r) const -{ - // they should just intersect in time. - //if (m_startTime != r.m_startTime && - // (m_startTime >= r.m_endTime || m_endTime <= r.m_startTime)) - if (!intersectsInterval(r)) return false; - return Region::touchesRegion(r); -} - -bool TimeRegion::containsPointInTime(const TimePoint& p) const -{ - // it should be contained in time. - //if (p.m_startTime < m_startTime || p.m_endTime > m_endTime) return false; - if (containsInterval(p)) return false; - return Region::containsPoint(p); -} - -bool TimeRegion::touchesPointInTime(const TimePoint& p) const -{ - // they should just intersect in time. - //if (m_startTime != p.m_startTime && - // (m_startTime >= p.m_endTime || m_endTime <= p.m_startTime)) - if (intersectsInterval(p)) return false; - return Region::touchesPoint(p); -} - -void TimeRegion::combineRegionInTime(const TimeRegion& r) -{ - Region::combineRegion(r); - - m_startTime = std::min(m_startTime, r.m_startTime); - m_endTime = std::max(m_endTime, r.m_endTime); -} - -void TimeRegion::getCombinedRegionInTime(TimeRegion& out, const TimeRegion& in) const -{ - Region::getCombinedRegion(out, in); - - out.m_startTime = std::min(m_startTime, in.m_startTime); - out.m_endTime = std::max(m_endTime, in.m_endTime); -} - -// -// IObject interface -// -TimeRegion* TimeRegion::clone() -{ - return new TimeRegion(*this); -} - -// -// ISerializable interface -// -uint32_t TimeRegion::getByteArraySize() -{ - return (sizeof(uint32_t) + 2 * sizeof(double) + 2 * m_dimension * sizeof(double)); -} - -void TimeRegion::loadFromByteArray(const byte* ptr) -{ - uint32_t dimension; - - memcpy(&dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_startTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_endTime, ptr, sizeof(double)); - ptr += sizeof(double); - - makeDimension(dimension); - memcpy(m_pLow, ptr, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(m_pHigh, ptr, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -void TimeRegion::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_startTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_endTime, sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, m_pLow, m_dimension * sizeof(double)); - ptr += m_dimension * sizeof(double); - memcpy(ptr, m_pHigh, m_dimension * sizeof(double)); - //ptr += m_dimension * sizeof(double); -} - -// -// ITimeShape interface -// -bool TimeRegion::intersectsShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return intersectsRegionInTime(*pr); - - const TimePoint* ppt = dynamic_cast(&in); - if (ppt != 0) return containsPointInTime(*ppt); - - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::intersectsShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("intersectsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::containsShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return containsRegionInTime(*pr); - - const TimePoint* ppt = dynamic_cast(&in); - if (ppt != 0) return containsPointInTime(*ppt); - - throw libsupermesh::Tools::IllegalStateException("containsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::containsShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("containsShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::touchesShapeInTime(const ITimeShape& in) const -{ - const TimeRegion* pr = dynamic_cast(&in); - if (pr != 0) return touchesRegionInTime(*pr); - - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -bool TimeRegion::touchesShapeInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("touchesShapeInTime: Not implemented yet!"); -} - -double TimeRegion::getAreaInTime() const -{ - throw libsupermesh::Tools::IllegalStateException("getAreaInTime: Not implemented yet!"); -} - -double TimeRegion::getAreaInTime(const IInterval&) const -{ - throw libsupermesh::Tools::IllegalStateException("getAreaInTime: Not implemented yet!"); -} - -double TimeRegion::getIntersectingAreaInTime(const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("getIntersectingAreaInTime: Not implemented yet!"); -} - -double TimeRegion::getIntersectingAreaInTime(const IInterval&, const ITimeShape&) const -{ - throw libsupermesh::Tools::IllegalStateException("getIntersectingAreaInTime: Not implemented yet!"); -} - -// -// IInterval interface -// -libsupermesh::Tools::IInterval& TimeRegion::operator=(const libsupermesh::Tools::IInterval& i) -{ - if (this != &i) - { - m_startTime = i.getLowerBound(); - m_endTime = i.getUpperBound(); - } - - return *this; -} - -double TimeRegion::getLowerBound() const -{ - return m_startTime; -} - -double TimeRegion::getUpperBound() const -{ - return m_endTime; -} - -void TimeRegion::setBounds(double l, double h) -{ - assert(m_startTime <= m_endTime); - - m_startTime = l; - m_endTime = h; -} - -bool TimeRegion::intersectsInterval(const IInterval& ti) const -{ - return intersectsInterval(ti.getIntervalType(), ti.getLowerBound(), ti.getUpperBound()); -} - -bool TimeRegion::intersectsInterval(libsupermesh::Tools::IntervalType, const double start, const double end) const -{ - //if (m_startTime != start && - // (m_startTime >= end || m_endTime <= start)) return false; - // this will not work for degenarate intervals. - if (m_startTime >= end || m_endTime <= start) return false; - - return true; -} - -bool TimeRegion::containsInterval(const IInterval& ti) const -{ - if (m_startTime <= ti.getLowerBound() && m_endTime >= ti.getUpperBound()) return true; - return false; -} - -libsupermesh::Tools::IntervalType TimeRegion::getIntervalType() const -{ - return libsupermesh::Tools::IT_RIGHTOPEN; -} - -void TimeRegion::makeInfinite(uint32_t dimension) -{ - makeDimension(dimension); - for (uint32_t cIndex = 0; cIndex < m_dimension; ++cIndex) - { - m_pLow[cIndex] = std::numeric_limits::max(); - m_pHigh[cIndex] = -std::numeric_limits::max(); - } - - m_startTime = std::numeric_limits::max(); - m_endTime = -std::numeric_limits::max(); -} - -void TimeRegion::makeDimension(uint32_t dimension) -{ - if (m_dimension != dimension) - { - m_dimension = dimension; - - delete[] m_pLow; - delete[] m_pHigh; - m_pLow = 0; m_pHigh = 0; - - m_pLow = new double[m_dimension]; - m_pHigh = new double[m_dimension]; - } -} - -std::ostream& libsupermesh::SpatialIndex::operator<<(std::ostream& os, const TimeRegion& r) -{ - uint32_t i; - - os << "Low: "; - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pLow[i] << " "; - } - - os << ", High: "; - - for (i = 0; i < r.m_dimension; ++i) - { - os << r.m_pHigh[i] << " "; - } - - os << ", Start: " << r.m_startTime << ", End: " << r.m_endTime; - - return os; -} diff --git a/spatialindex-1.8.5/src/storagemanager/Buffer.cc b/spatialindex-1.8.5/src/storagemanager/Buffer.cc deleted file mode 100644 index 2fadce3..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Buffer.cc +++ /dev/null @@ -1,159 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include "Buffer.h" - -Buffer::Buffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_capacity(10), - m_bWriteThrough(false), - m_pStorageManager(&sm), - m_u64Hits(0) -{ - libsupermesh::Tools::Variant var = ps.getProperty("Capacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("Property Capacity must be libsupermesh::Tools::VT_ULONG"); - m_capacity = var.m_val.ulVal; - } - - var = ps.getProperty("WriteThrough"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("Property WriteThrough must be libsupermesh::Tools::VT_BOOL"); - m_bWriteThrough = var.m_val.blVal; - } -} - -Buffer::~Buffer() -{ - flush(); -} - -void Buffer::flush() -{ - for (std::map::iterator it = m_buffer.begin(); it != m_buffer.end(); ++it) - { - if ((*it).second->m_bDirty) - { - id_type page = (*it).first; - m_pStorageManager->storeByteArray(page, (*it).second->m_length, (*it).second->m_pData); - } - delete (*it).second; - } -} - -void Buffer::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - std::map::iterator it = m_buffer.find(page); - - if (it != m_buffer.end()) - { - ++m_u64Hits; - len = (*it).second->m_length; - *data = new byte[len]; - memcpy(*data, (*it).second->m_pData, len); - } - else - { - m_pStorageManager->loadByteArray(page, len, data); - addEntry(page, new Entry(len, static_cast(*data))); - } -} - -void Buffer::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - if (page == NewPage) - { - m_pStorageManager->storeByteArray(page, len, data); - assert(m_buffer.find(page) == m_buffer.end()); - addEntry(page, new Entry(len, data)); - } - else - { - if (m_bWriteThrough) - { - m_pStorageManager->storeByteArray(page, len, data); - } - - Entry* e = new Entry(len, data); - if (m_bWriteThrough == false) e->m_bDirty = true; - - std::map::iterator it = m_buffer.find(page); - if (it != m_buffer.end()) - { - delete (*it).second; - (*it).second = e; - if (m_bWriteThrough == false) ++m_u64Hits; - } - else - { - addEntry(page, e); - } - } -} - -void Buffer::deleteByteArray(const id_type page) -{ - std::map::iterator it = m_buffer.find(page); - if (it != m_buffer.end()) - { - delete (*it).second; - m_buffer.erase(it); - } - - m_pStorageManager->deleteByteArray(page); -} - -void Buffer::clear() -{ - for (std::map::iterator it = m_buffer.begin(); it != m_buffer.end(); ++it) - { - if ((*it).second->m_bDirty) - { - id_type page = (*it).first; - m_pStorageManager->storeByteArray(page, ((*it).second)->m_length, static_cast(((*it).second)->m_pData)); - } - - delete (*it).second; - } - - m_buffer.clear(); - m_u64Hits = 0; -} - -uint64_t Buffer::getHits() -{ - return m_u64Hits; -} diff --git a/spatialindex-1.8.5/src/storagemanager/Buffer.h b/spatialindex-1.8.5/src/storagemanager/Buffer.h deleted file mode 100644 index 6db5e93..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Buffer.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class Buffer : public IBuffer - { - public: - Buffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps); - // String Value Description - // ---------------------------------------------- - // Capacity VT_ULONG Buffer maximum capacity. - // WriteThrough VT_BOOL Enable or disable write through policy. - - virtual ~Buffer(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - virtual void clear(); - virtual uint64_t getHits(); - - protected: - class Entry - { - public: - Entry(uint32_t l, const byte* const d) : m_pData(0), m_length(l), m_bDirty(false) - { - m_pData = new byte[m_length]; - memcpy(m_pData, d, m_length); - } - - ~Entry() { delete[] m_pData; } - - byte* m_pData; - uint32_t m_length; - bool m_bDirty; - }; // Entry - - virtual void addEntry(id_type page, Entry* pEntry) = 0; - virtual void removeEntry() = 0; - - uint32_t m_capacity; - bool m_bWriteThrough; - IStorageManager* m_pStorageManager; - std::map m_buffer; - uint64_t m_u64Hits; - }; // Buffer - } -} } diff --git a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc b/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc deleted file mode 100644 index 4dd2ff8..0000000 --- a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.cc +++ /dev/null @@ -1,517 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include - -// For checking if a file exists - hobu -#include - -#include -#include "DiskStorageManager.h" -#include - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -bool CheckFilesExists(libsupermesh::Tools::PropertySet& ps) -{ - bool bExists = false; - - std::string filename(""); - std::string idx("idx"); - std::string dat("dat"); - - libsupermesh::Tools::Variant idx_name; - libsupermesh::Tools::Variant dat_name; - libsupermesh::Tools::Variant fn; - - idx_name = ps.getProperty("FileNameIdx"); - dat_name = ps.getProperty("FileNameDat"); - fn = ps.getProperty("FileName"); - - if (idx_name.m_varType != libsupermesh::Tools::VT_EMPTY) dat = std::string(idx_name.m_val.pcVal); - if (dat_name.m_varType != libsupermesh::Tools::VT_EMPTY) idx = std::string(dat_name.m_val.pcVal); - if (fn.m_varType != libsupermesh::Tools::VT_EMPTY) filename = std::string(fn.m_val.pcVal); - - struct stat stats; - - std::ostringstream os; - int ret; - os << filename <<"."<(baseName.c_str()); - ps.setProperty("FileName", var); - // .idx and .dat extensions will be added. - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = pageSize; - ps.setProperty("PageSize", var); - // specify the page size. Since the index may also contain user defined data - // there is no way to know how big a single node may become. The storage manager - // will use multiple pages per node if needed. Off course this will slow down performance. - - return returnDiskStorageManager(ps); -} - -libsupermesh::SpatialIndex::IStorageManager* libsupermesh::SpatialIndex::StorageManager::loadDiskStorageManager(std::string& baseName) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_PCHAR; - var.m_val.pcVal = const_cast(baseName.c_str()); - ps.setProperty("FileName", var); - // .idx and .dat extensions will be added. - - return returnDiskStorageManager(ps); -} - -DiskStorageManager::DiskStorageManager(libsupermesh::Tools::PropertySet& ps) : m_pageSize(0), m_nextPage(-1), m_buffer(0) -{ - libsupermesh::Tools::Variant var; - - // Open/Create flag. - bool bOverwrite = false; - bool bFileExists = false; - std::streamoff length = 0; - - var = ps.getProperty("Overwrite"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property Overwrite must be libsupermesh::Tools::VT_BOOL"); - bOverwrite = var.m_val.blVal; - } - - // storage filename. - var = ps.getProperty("FileName"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (!(var.m_varType == libsupermesh::Tools::VT_PCHAR || - var.m_varType == libsupermesh::Tools::VT_PWCHAR)) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property FileName must be libsupermesh::Tools::VT_PCHAR or libsupermesh::Tools::VT_PWCHAR"); - - std::string idx("idx"); - std::string dat("dat"); - - libsupermesh::Tools::Variant idx_name = ps.getProperty("FileNameIdx"); - if (idx_name.m_varType != libsupermesh::Tools::VT_EMPTY) idx = std::string(idx_name.m_val.pcVal); - - libsupermesh::Tools::Variant dat_name = ps.getProperty("FileNameDat"); - if (dat_name.m_varType != libsupermesh::Tools::VT_EMPTY) dat = std::string(dat_name.m_val.pcVal); - - std::string sIndexFile = std::string(var.m_val.pcVal) + "." + idx; - std::string sDataFile = std::string(var.m_val.pcVal) + "." + dat; - - // check if file exists. - bFileExists = CheckFilesExists(ps); - - // check if file can be read/written. - if (bFileExists == true && bOverwrite == false) - { - std::ios_base::openmode mode = std::ios::in | std::ios::out | std::ios::binary; - m_indexFile.open(sIndexFile.c_str(), mode); - m_dataFile.open(sDataFile.c_str(), mode); - - if (m_indexFile.fail() || m_dataFile.fail()) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Index/Data file cannot be read/writen."); - } - else - { - std::ios_base::openmode mode = std::ios::in | std::ios::out | std::ios::binary | std::ios::trunc; - m_indexFile.open(sIndexFile.c_str(), mode); - m_dataFile.open(sDataFile.c_str(), mode); - - if (m_indexFile.fail() || m_dataFile.fail()) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Index/Data file cannot be created."); - - } - } - else - { - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property FileName was not specified."); - } - - // get current length of file - m_indexFile.seekg (0, m_indexFile.end); - length = m_indexFile.tellg(); - m_indexFile.seekg (0, m_indexFile.beg); - - // find page size. - if ((bOverwrite == true) || (length == 0) || (bFileExists == false)) - { - var = ps.getProperty("PageSize"); - - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: Property PageSize must be libsupermesh::Tools::VT_ULONG"); - m_pageSize = var.m_val.ulVal; - m_nextPage = 0; - } - else - { - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::SpatialIndex::DiskStorageManager: A new storage manager is created and property PageSize was not specified."); - } - } - else - { - m_indexFile.read(reinterpret_cast(&m_pageSize), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Failed reading pageSize."); - - m_indexFile.read(reinterpret_cast(&m_nextPage), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Failed reading nextPage."); - } - - // create buffer. - m_buffer = new byte[m_pageSize]; - memset(m_buffer, 0, m_pageSize); - - if ((bOverwrite == false) && (length > 0)) - { - uint32_t count; - id_type page, id; - - // load empty pages in memory. - m_indexFile.read(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cCount = 0; cCount < count; ++cCount) - { - m_indexFile.read(reinterpret_cast(&page), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - m_emptyPages.insert(page); - } - - // load index table in memory. - m_indexFile.read(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cCount = 0; cCount < count; ++cCount) - { - Entry* e = new Entry(); - - m_indexFile.read(reinterpret_cast(&id), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.read(reinterpret_cast(&(e->m_length)), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - uint32_t count2; - m_indexFile.read(reinterpret_cast(&count2), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cCount2 = 0; cCount2 < count2; ++cCount2) - { - m_indexFile.read(reinterpret_cast(&page), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - e->m_pages.push_back(page); - } - m_pageIndex.insert(std::pair(id, e)); - } - } -} - -DiskStorageManager::~DiskStorageManager() -{ - flush(); - m_indexFile.close(); - m_dataFile.close(); - if (m_buffer != 0) delete[] m_buffer; - - std::map::iterator it; - for (it = m_pageIndex.begin(); it != m_pageIndex.end(); ++it) delete (*it).second; -} - -void DiskStorageManager::flush() -{ - m_indexFile.seekp(0, std::ios_base::beg); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.write(reinterpret_cast(&m_pageSize), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.write(reinterpret_cast(&m_nextPage), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - uint32_t count = static_cast(m_emptyPages.size()); - m_indexFile.write(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (std::set::const_iterator it = m_emptyPages.begin(); it != m_emptyPages.end(); ++it) - { - m_indexFile.write(reinterpret_cast(&(*it)), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - } - - count = static_cast(m_pageIndex.size()); - m_indexFile.write(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (std::map::iterator it = m_pageIndex.begin(); it != m_pageIndex.end(); ++it) - { - m_indexFile.write(reinterpret_cast(&((*it).first)), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - m_indexFile.write(reinterpret_cast(&((*it).second->m_length)), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - count = static_cast((*it).second->m_pages.size()); - m_indexFile.write(reinterpret_cast(&count), sizeof(uint32_t)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - - for (uint32_t cIndex = 0; cIndex < count; ++cIndex) - { - m_indexFile.write(reinterpret_cast(&((*it).second->m_pages[cIndex])), sizeof(id_type)); - if (m_indexFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted storage manager index file."); - } - } - - m_indexFile.flush(); - m_dataFile.flush(); -} - -void DiskStorageManager::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - std::map::iterator it = m_pageIndex.find(page); - - if (it == m_pageIndex.end()) - throw InvalidPageException(page); - - std::vector& pages = (*it).second->m_pages; - uint32_t cNext = 0; - uint32_t cTotal = static_cast(pages.size()); - - len = (*it).second->m_length; - *data = new byte[len]; - - byte* ptr = *data; - uint32_t cLen; - uint32_t cRem = len; - - do - { - m_dataFile.seekg(pages[cNext] * m_pageSize, std::ios_base::beg); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - m_dataFile.read(reinterpret_cast(m_buffer), m_pageSize); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - cLen = (cRem > m_pageSize) ? m_pageSize : cRem; - memcpy(ptr, m_buffer, cLen); - - ptr += cLen; - cRem -= cLen; - ++cNext; - } - while (cNext < cTotal); -} - -void DiskStorageManager::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - if (page == NewPage) - { - Entry* e = new Entry(); - e->m_length = len; - - const byte* ptr = data; - id_type cPage; - uint32_t cRem = len; - uint32_t cLen; - - while (cRem > 0) - { - if (! m_emptyPages.empty()) - { - cPage = *m_emptyPages.begin(); - m_emptyPages.erase(m_emptyPages.begin()); - } - else - { - cPage = m_nextPage; - ++m_nextPage; - } - - cLen = (cRem > m_pageSize) ? m_pageSize : cRem; - memcpy(m_buffer, ptr, cLen); - - m_dataFile.seekp(cPage * m_pageSize, std::ios_base::beg); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - m_dataFile.write(reinterpret_cast(m_buffer), m_pageSize); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - ptr += cLen; - cRem -= cLen; - e->m_pages.push_back(cPage); - } - - page = e->m_pages[0]; - m_pageIndex.insert(std::pair(page, e)); - } - else - { - // find the entry. - std::map::iterator it = m_pageIndex.find(page); - - // check if it exists. - if (it == m_pageIndex.end()) - throw InvalidPageException(page); - - Entry* oldEntry = (*it).second; - - m_pageIndex.erase(it); - - Entry* e = new Entry(); - e->m_length = len; - - const byte* ptr = data; - id_type cPage; - uint32_t cRem = len; - uint32_t cLen, cNext = 0; - - while (cRem > 0) - { - if (cNext < oldEntry->m_pages.size()) - { - cPage = oldEntry->m_pages[cNext]; - ++cNext; - } - else if (! m_emptyPages.empty()) - { - cPage = *m_emptyPages.begin(); - m_emptyPages.erase(m_emptyPages.begin()); - } - else - { - cPage = m_nextPage; - ++m_nextPage; - } - - cLen = (cRem > m_pageSize) ? m_pageSize : cRem; - memcpy(m_buffer, ptr, cLen); - - m_dataFile.seekp(cPage * m_pageSize, std::ios_base::beg); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - m_dataFile.write(reinterpret_cast(m_buffer), m_pageSize); - if (m_dataFile.fail()) - throw libsupermesh::Tools::IllegalStateException("libsupermesh::SpatialIndex::DiskStorageManager: Corrupted data file."); - - ptr += cLen; - cRem -= cLen; - e->m_pages.push_back(cPage); - } - - while (cNext < oldEntry->m_pages.size()) - { - m_emptyPages.insert(oldEntry->m_pages[cNext]); - ++cNext; - } - - m_pageIndex.insert(std::pair(page, e)); - delete oldEntry; - } -} - -void DiskStorageManager::deleteByteArray(const id_type page) -{ - std::map::iterator it = m_pageIndex.find(page); - - if (it == m_pageIndex.end()) - throw InvalidPageException(page); - - for (uint32_t cIndex = 0; cIndex < (*it).second->m_pages.size(); ++cIndex) - { - m_emptyPages.insert((*it).second->m_pages[cIndex]); - } - - delete (*it).second; - m_pageIndex.erase(it); -} diff --git a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h b/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h deleted file mode 100644 index 8cade5a..0000000 --- a/spatialindex-1.8.5/src/storagemanager/DiskStorageManager.h +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class DiskStorageManager : public libsupermesh::SpatialIndex::IStorageManager - { - public: - DiskStorageManager(libsupermesh::Tools::PropertySet&); - virtual ~DiskStorageManager(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - private: - class Entry - { - public: - uint32_t m_length; - std::vector m_pages; - }; - - protected: - std::fstream m_dataFile; - std::fstream m_indexFile; - uint32_t m_pageSize; - id_type m_nextPage; - std::set m_emptyPages; - std::map m_pageIndex; - - byte* m_buffer; - }; // DiskStorageManager - } -} } diff --git a/spatialindex-1.8.5/src/storagemanager/Makefile.am b/spatialindex-1.8.5/src/storagemanager/Makefile.am deleted file mode 100644 index 430ab3d..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libstoragemanager.la -INCLUDES = -I../../include -libstoragemanager_la_SOURCES = Buffer.h Buffer.cc DiskStorageManager.cc MemoryStorageManager.cc RandomEvictionsBuffer.cc DiskStorageManager.h MemoryStorageManager.h RandomEvictionsBuffer.h diff --git a/spatialindex-1.8.5/src/storagemanager/Makefile.in b/spatialindex-1.8.5/src/storagemanager/Makefile.in deleted file mode 100644 index 56b87c9..0000000 --- a/spatialindex-1.8.5/src/storagemanager/Makefile.in +++ /dev/null @@ -1,600 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/storagemanager -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libstoragemanager_la_LIBADD = -am_libstoragemanager_la_OBJECTS = Buffer.lo DiskStorageManager.lo \ - MemoryStorageManager.lo RandomEvictionsBuffer.lo -libstoragemanager_la_OBJECTS = $(am_libstoragemanager_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libstoragemanager_la_SOURCES) -DIST_SOURCES = $(libstoragemanager_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libstoragemanager.la -INCLUDES = -I../../include -libstoragemanager_la_SOURCES = Buffer.h Buffer.cc DiskStorageManager.cc MemoryStorageManager.cc RandomEvictionsBuffer.cc DiskStorageManager.h MemoryStorageManager.h RandomEvictionsBuffer.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/storagemanager/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/storagemanager/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libstoragemanager.la: $(libstoragemanager_la_OBJECTS) $(libstoragemanager_la_DEPENDENCIES) $(EXTRA_libstoragemanager_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libstoragemanager_la_OBJECTS) $(libstoragemanager_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Buffer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DiskStorageManager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemoryStorageManager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RandomEvictionsBuffer.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc b/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc deleted file mode 100644 index 3a73bb4..0000000 --- a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.cc +++ /dev/null @@ -1,141 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include - -#include -#include "MemoryStorageManager.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -libsupermesh::SpatialIndex::IStorageManager* libsupermesh::SpatialIndex::StorageManager::returnMemoryStorageManager(libsupermesh::Tools::PropertySet& ps) -{ - IStorageManager* sm = new MemoryStorageManager(ps); - return sm; -} - -libsupermesh::SpatialIndex::IStorageManager* libsupermesh::SpatialIndex::StorageManager::createNewMemoryStorageManager() -{ - libsupermesh::Tools::PropertySet ps; - return returnMemoryStorageManager(ps); -} - -MemoryStorageManager::MemoryStorageManager(libsupermesh::Tools::PropertySet&) -{ -} - -MemoryStorageManager::~MemoryStorageManager() -{ - for (std::vector::iterator it = m_buffer.begin(); it != m_buffer.end(); ++it) delete *it; -} - -void MemoryStorageManager::flush() -{ -} - -void MemoryStorageManager::loadByteArray(const id_type page, uint32_t& len, byte** data) -{ - Entry* e; - try - { - e = m_buffer.at(page); - if (e == 0) throw InvalidPageException(page); - } - catch (std::out_of_range) - { - throw InvalidPageException(page); - } - - len = e->m_length; - *data = new byte[len]; - - memcpy(*data, e->m_pData, len); -} - -void MemoryStorageManager::storeByteArray(id_type& page, const uint32_t len, const byte* const data) -{ - if (page == NewPage) - { - Entry* e = new Entry(len, data); - - if (m_emptyPages.empty()) - { - m_buffer.push_back(e); - page = m_buffer.size() - 1; - } - else - { - page = m_emptyPages.top(); m_emptyPages.pop(); - m_buffer[page] = e; - } - } - else - { - Entry* e_old; - try - { - e_old = m_buffer.at(page); - if (e_old == 0) throw InvalidPageException(page); - } - catch (std::out_of_range) - { - throw InvalidPageException(page); - } - - Entry* e = new Entry(len, data); - - delete e_old; - m_buffer[page] = e; - } -} - -void MemoryStorageManager::deleteByteArray(const id_type page) -{ - Entry* e; - try - { - e = m_buffer.at(page); - if (e == 0) throw InvalidPageException(page); - } - catch (std::out_of_range) - { - throw InvalidPageException(page); - } - - m_buffer[page] = 0; - m_emptyPages.push(page); - - delete e; -} - diff --git a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h b/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h deleted file mode 100644 index b93ff5c..0000000 --- a/spatialindex-1.8.5/src/storagemanager/MemoryStorageManager.h +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class MemoryStorageManager : public libsupermesh::SpatialIndex::IStorageManager - { - public: - MemoryStorageManager(libsupermesh::Tools::PropertySet&); - - virtual ~MemoryStorageManager(); - - virtual void flush(); - virtual void loadByteArray(const id_type page, uint32_t& len, byte** data); - virtual void storeByteArray(id_type& page, const uint32_t len, const byte* const data); - virtual void deleteByteArray(const id_type page); - - private: - class Entry - { - public: - byte* m_pData; - uint32_t m_length; - - Entry(uint32_t l, const byte* const d) : m_pData(0), m_length(l) - { - m_pData = new byte[m_length]; - memcpy(m_pData, d, m_length); - } - - ~Entry() { delete[] m_pData; } - }; // Entry - - std::vector m_buffer; - std::stack m_emptyPages; - }; // MemoryStorageManager - } -} } diff --git a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc b/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc deleted file mode 100644 index bb54c9d..0000000 --- a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.cc +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#ifndef HAVE_SRAND48 -#include -#endif - -#include -#include "RandomEvictionsBuffer.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::StorageManager; - -IBuffer* libsupermesh::SpatialIndex::StorageManager::returnRandomEvictionsBuffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - IBuffer* b = new RandomEvictionsBuffer(sm, ps); - return b; -} - -IBuffer* libsupermesh::SpatialIndex::StorageManager::createNewRandomEvictionsBuffer(IStorageManager& sm, uint32_t capacity, bool bWriteThrough) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = capacity; - ps.setProperty("Capacity", var); - - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = bWriteThrough; - ps.setProperty("WriteThrough", var); - - return returnRandomEvictionsBuffer(sm, ps); -} - -RandomEvictionsBuffer::RandomEvictionsBuffer(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : Buffer(sm, ps) -{ - srand48(static_cast(time(0))); -} - -RandomEvictionsBuffer::~RandomEvictionsBuffer() -{ -} - -void RandomEvictionsBuffer::addEntry(id_type page, Entry* e) -{ - assert(m_buffer.size() <= m_capacity); - - if (m_buffer.size() == m_capacity) removeEntry(); - assert(m_buffer.find(page) == m_buffer.end()); - m_buffer.insert(std::pair(page, e)); -} - -void RandomEvictionsBuffer::removeEntry() -{ - if (m_buffer.size() == 0) return; - - double random; - - random = drand48(); - - uint32_t entry = static_cast(floor(((double) m_buffer.size()) * random)); - - std::map::iterator it = m_buffer.begin(); - for (uint32_t cIndex = 0; cIndex < entry; cIndex++) ++it; - - if ((*it).second->m_bDirty) - { - id_type page = (*it).first; - m_pStorageManager->storeByteArray(page, ((*it).second)->m_length, (const byte *) ((*it).second)->m_pData); - } - - delete (*it).second; - m_buffer.erase(it); -} diff --git a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h b/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h deleted file mode 100644 index c3ab6ce..0000000 --- a/spatialindex-1.8.5/src/storagemanager/RandomEvictionsBuffer.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Buffer.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace StorageManager - { - class RandomEvictionsBuffer : public Buffer - { - public: - RandomEvictionsBuffer(IStorageManager&, libsupermesh::Tools::PropertySet& ps); - // see Buffer.h for available properties. - - virtual ~RandomEvictionsBuffer(); - - virtual void addEntry(id_type page, Buffer::Entry* pEntry); - virtual void removeEntry(); - }; // RandomEvictionsBuffer - } -} } diff --git a/spatialindex-1.8.5/src/tools/Makefile.am b/spatialindex-1.8.5/src/tools/Makefile.am deleted file mode 100755 index 5ee481a..0000000 --- a/spatialindex-1.8.5/src/tools/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libtools.la -INCLUDES = -I../../include -libtools_la_SOURCES = Tools.cc - -if !RAND_IS_CONFIG -libtools_la_SOURCES += rand48.cc -endif \ No newline at end of file diff --git a/spatialindex-1.8.5/src/tools/Makefile.in b/spatialindex-1.8.5/src/tools/Makefile.in deleted file mode 100644 index 22aeb64..0000000 --- a/spatialindex-1.8.5/src/tools/Makefile.in +++ /dev/null @@ -1,582 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@RAND_IS_CONFIG_FALSE@am__append_1 = rand48.cc -subdir = src/tools -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libtools_la_LIBADD = -am__libtools_la_SOURCES_DIST = Tools.cc rand48.cc -@RAND_IS_CONFIG_FALSE@am__objects_1 = rand48.lo -am_libtools_la_OBJECTS = Tools.lo $(am__objects_1) -libtools_la_OBJECTS = $(am_libtools_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libtools_la_SOURCES) -DIST_SOURCES = $(am__libtools_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libtools.la -INCLUDES = -I../../include -libtools_la_SOURCES = Tools.cc $(am__append_1) -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tools/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/tools/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libtools.la: $(libtools_la_OBJECTS) $(libtools_la_DEPENDENCIES) $(EXTRA_libtools_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libtools_la_OBJECTS) $(libtools_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Tools.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand48.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/tools/Tools.cc b/spatialindex-1.8.5/src/tools/Tools.cc deleted file mode 100644 index dcd518d..0000000 --- a/spatialindex-1.8.5/src/tools/Tools.cc +++ /dev/null @@ -1,1305 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2004, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#ifndef HAVE_SRAND48 -#include -#endif - -#include - -#if (defined _WIN32 || defined _WIN64 || defined WIN32 || defined WIN64) -#include -#define mkdir _mkdir -#endif - -#if HAVE_PTHREAD_H -#if !defined(_POSIX_THREADS) -#include // for sched_yield() -#endif -#endif - -libsupermesh::Tools::IndexOutOfBoundsException::IndexOutOfBoundsException(size_t i) -{ - std::ostringstream s; - s << "Invalid index " << i; - m_error = s.str(); -} - -std::string libsupermesh::Tools::IndexOutOfBoundsException::what() -{ - return "IndexOutOfBoundsException: " + m_error; -} - -libsupermesh::Tools::IllegalArgumentException::IllegalArgumentException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::IllegalArgumentException::what() -{ - return "IllegalArgumentException: " + m_error; -} - -libsupermesh::Tools::IllegalStateException::IllegalStateException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::IllegalStateException::what() -{ - return "IllegalStateException: " + m_error; -} - -libsupermesh::Tools::EndOfStreamException::EndOfStreamException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::EndOfStreamException::what() -{ - return "EndOfStreamException: " + m_error; -} - -libsupermesh::Tools::ResourceLockedException::ResourceLockedException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::ResourceLockedException::what() -{ - return "ResourceLockedException: " + m_error; -} - -libsupermesh::Tools::NotSupportedException::NotSupportedException(std::string s) : m_error(s) -{ -} - -std::string libsupermesh::Tools::NotSupportedException::what() -{ - return "NotSupportedException: " + m_error; -} - -libsupermesh::Tools::Variant::Variant() : m_varType(VT_EMPTY) -{ -} - -libsupermesh::Tools::PropertySet::PropertySet(const byte* data) -{ - loadFromByteArray(data); -} - -libsupermesh::Tools::PropertySet::~PropertySet() -{ -} - -libsupermesh::Tools::PropertySet::PropertySet() -{ -} -void libsupermesh::Tools::PropertySet::loadFromByteArray(const byte* ptr) -{ - m_propertySet.clear(); - - uint32_t numberOfProperties; - memcpy(&numberOfProperties, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - Variant v; - - for (uint32_t cIndex = 0; cIndex < numberOfProperties; ++cIndex) - { - std::string s(reinterpret_cast(ptr)); - ptr += s.size() + 1; - memcpy(&(v.m_varType), ptr, sizeof(VariantType)); - ptr += sizeof(VariantType); - - switch (v.m_varType) - { - case VT_SHORT: - int16_t s; - memcpy(&s, ptr, sizeof(int16_t)); - ptr += sizeof(int16_t); - v.m_val.iVal = s; - break; - case VT_LONG: - int32_t l; - memcpy(&l, ptr, sizeof(int32_t)); - ptr += sizeof(int32_t); - v.m_val.lVal = l; - break; - case VT_LONGLONG: - int64_t ll; - memcpy(&ll, ptr, sizeof(int64_t)); - ptr += sizeof(int64_t); - v.m_val.llVal = ll; - break; - case VT_BYTE: - byte b; - memcpy(&b, ptr, sizeof(byte)); - ptr += sizeof(byte); - v.m_val.bVal = b; - break; - case VT_FLOAT: - float f; - memcpy(&f, ptr, sizeof(float)); - ptr += sizeof(float); - v.m_val.fltVal = f; - break; - case VT_DOUBLE: - double d; - memcpy(&d, ptr, sizeof(double)); - ptr += sizeof(double); - v.m_val.dblVal = d; - break; - case VT_CHAR: - char c; - memcpy(&c, ptr, sizeof(char)); - ptr += sizeof(char); - v.m_val.cVal = c; - break; - case VT_USHORT: - uint16_t us; - memcpy(&us, ptr, sizeof(uint16_t)); - ptr += sizeof(uint16_t); - v.m_val.uiVal = us; - break; - case VT_ULONG: - uint32_t ul; - memcpy(&ul, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - v.m_val.ulVal = ul; - break; - case VT_ULONGLONG: - uint64_t ull; - memcpy(&ull, ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - v.m_val.ullVal = ull; - break; - case VT_BOOL: - byte bl; - memcpy(&bl, ptr, sizeof(byte)); - ptr += sizeof(byte); - v.m_val.blVal = (bl != 0); - break; - default: - throw IllegalStateException( - "libsupermesh::Tools::PropertySet::PropertySet: Deserialization problem." - ); - } - - m_propertySet.insert(std::pair(s, v)); - } -} - -uint32_t libsupermesh::Tools::PropertySet::getByteArraySize() -{ - uint32_t size = sizeof(uint32_t); - std::map::iterator it; - - for (it = m_propertySet.begin(); it != m_propertySet.end(); ++it) - { - switch ((*it).second.m_varType) - { - case VT_SHORT: - size += sizeof(int16_t); - break; - case VT_LONG: - size += sizeof(int32_t); - break; - case VT_LONGLONG: - size += sizeof(int64_t); - break; - case VT_BYTE: - size += sizeof(byte); - break; - case VT_FLOAT: - size += sizeof(float); - break; - case VT_DOUBLE: - size += sizeof(double); - break; - case VT_CHAR: - size += sizeof(char); - break; - case VT_USHORT: - size += sizeof(uint16_t); - break; - case VT_ULONG: - size += sizeof(uint32_t); - break; - case VT_ULONGLONG: - size += sizeof(uint64_t); - break; - case VT_BOOL: - size += sizeof(byte); - break; - default: - throw NotSupportedException( - "libsupermesh::Tools::PropertySet::getSize: Unknown type." - ); - } - size += static_cast((*it).first.size()) + 1 + sizeof(VariantType); - } - - return size; -} - -void libsupermesh::Tools::PropertySet::storeToByteArray(byte** data, uint32_t& length) -{ - length = getByteArraySize(); - *data = new byte[length]; - byte* ptr = *data; - - uint32_t numberOfProperties = static_cast(m_propertySet.size()); - memcpy(ptr, &numberOfProperties, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - std::map::iterator it; - - for (it = m_propertySet.begin(); it != m_propertySet.end(); ++it) - { - size_t strSize = (*it).first.size(); - memcpy(ptr, (*it).first.c_str(), strSize); - ptr += strSize; - *ptr = 0; - ++ptr; - - memcpy(ptr, &((*it).second.m_varType), sizeof(VariantType)); - ptr += sizeof(VariantType); - - switch ((*it).second.m_varType) - { - case VT_SHORT: - memcpy(ptr, &((*it).second.m_val.iVal), sizeof(int16_t)); - ptr += sizeof(int16_t); - break; - case VT_LONG: - memcpy(ptr, &((*it).second.m_val.lVal), sizeof(int32_t)); - ptr += sizeof(int32_t); - break; - case VT_LONGLONG: - memcpy(ptr, &((*it).second.m_val.llVal), sizeof(int64_t)); - ptr += sizeof(int64_t); - break; - case VT_BYTE: - memcpy(ptr, &((*it).second.m_val.bVal), sizeof(byte)); - ptr += sizeof(byte); - break; - case VT_FLOAT: - memcpy(ptr, &((*it).second.m_val.fltVal), sizeof(float)); - ptr += sizeof(float); - break; - case VT_DOUBLE: - memcpy(ptr, &((*it).second.m_val.dblVal), sizeof(double)); - ptr += sizeof(double); - break; - case VT_CHAR: - memcpy(ptr, &((*it).second.m_val.cVal), sizeof(char)); - ptr += sizeof(char); - break; - case VT_USHORT: - memcpy(ptr, &((*it).second.m_val.uiVal), sizeof(uint16_t)); - ptr += sizeof(uint16_t); - break; - case VT_ULONG: - memcpy(ptr, &((*it).second.m_val.ulVal), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - break; - case VT_ULONGLONG: - memcpy(ptr, &((*it).second.m_val.ullVal), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - break; - case VT_BOOL: - byte bl; - bl = (*it).second.m_val.blVal; - memcpy(ptr, &bl, sizeof(byte)); - ptr += sizeof(byte); - break; - default: - throw NotSupportedException( - "libsupermesh::Tools::PropertySet::getData: Cannot serialize a variant of this type." - ); - } - } - - assert(ptr == (*data) + length); -} - -libsupermesh::Tools::Variant libsupermesh::Tools::PropertySet::getProperty(std::string property) const -{ - std::map::const_iterator it = m_propertySet.find(property); - - if (it != m_propertySet.end()) return (*it).second; - else return Variant(); -} - -void libsupermesh::Tools::PropertySet::setProperty(std::string property, Variant const& v) -{ - std::pair::iterator, bool> ret; - std::map::iterator it; - - ret = m_propertySet.insert(std::pair(property, v)); - - // If we weren't able to insert because it is already in the map - // update our existing value - if (ret.second == false) ret.first->second = v; -} - -void libsupermesh::Tools::PropertySet::removeProperty(std::string property) -{ - std::map::iterator it = m_propertySet.find(property); - if (it != m_propertySet.end()) m_propertySet.erase(it); -} - -libsupermesh::Tools::Interval::Interval() : m_type(IT_RIGHTOPEN), m_low(0.0), m_high(0.0) -{ -} - -libsupermesh::Tools::Interval::Interval(IntervalType t, double l, double h) : m_type(t), m_low(l), m_high(h) -{ - assert(l < h); -} - -libsupermesh::Tools::Interval::Interval(double l, double h) : m_type(IT_RIGHTOPEN), m_low(l), m_high(h) -{ - assert(l < h); -} - -libsupermesh::Tools::Interval::Interval(const Interval& iv) -{ - m_low = iv.m_low; - m_high = iv.m_high; - m_type = iv.m_type; -} - -libsupermesh::Tools::IInterval& libsupermesh::Tools::Interval::operator=(const libsupermesh::Tools::IInterval& iv) -{ - if (this != &iv) - { - m_low = iv.getLowerBound(); - m_high = iv.getUpperBound(); - m_type = iv.getIntervalType(); - } - - return *this; -} - -bool libsupermesh::Tools::Interval::operator==(const Interval& iv) const -{ - if ( - m_type == iv.m_type && - m_low >= iv.m_low - std::numeric_limits::epsilon() && - m_low <= iv.m_low + std::numeric_limits::epsilon() && - m_high >= iv.m_high - std::numeric_limits::epsilon() && - m_high <= iv.m_high + std::numeric_limits::epsilon()) - return true; - - return false; -} - -bool libsupermesh::Tools::Interval::operator!=(const Interval& iv) const -{ - return ! (*this == iv); -} - -double libsupermesh::Tools::Interval::getLowerBound() const -{ - return m_low; -} - -double libsupermesh::Tools::Interval::getUpperBound() const -{ - return m_high; -} - -void libsupermesh::Tools::Interval::setBounds(double l, double h) -{ - assert(l <= h); - - m_low = l; - m_high = h; -} - -bool libsupermesh::Tools::Interval::intersectsInterval(const IInterval& i) const -{ - return intersectsInterval(i.getIntervalType(), i.getLowerBound(), i.getUpperBound()); -} - -bool libsupermesh::Tools::Interval::intersectsInterval(IntervalType type, const double low, const double high) const -{ - if (m_high < m_low) - throw IllegalStateException( - "libsupermesh::Tools::Interval::intersectsInterval: high boundary is smaller than low boundary." - ); - - if (m_low > high || m_high < low) return false; - if ((m_low > low && m_low < high) || (m_high > low && m_high < high)) return true; - - switch (m_type) - { - case IT_CLOSED: - if (m_low == high) - { - if (type == IT_CLOSED || type == IT_LEFTOPEN) return true; - else return false; - } - else if (m_high == low) - { - if (type == IT_CLOSED || type == IT_RIGHTOPEN) return true; - else return false; - } - break; - case IT_OPEN: - if (m_low == high || m_high == low) return false; - break; - case IT_RIGHTOPEN: - if (m_low == high) - { - if (type == IT_CLOSED || type == IT_LEFTOPEN) return true; - else return false; - } - else if (m_high == low) - { - return false; - } - break; - case IT_LEFTOPEN: - if (m_low == high) - { - return false; - } - else if (m_high == low) - { - if (type == IT_CLOSED || type == IT_RIGHTOPEN) return true; - else return false; - } - break; - } - - return true; -} - -bool libsupermesh::Tools::Interval::containsInterval(const IInterval& i) const -{ - if (m_high < m_low) - throw IllegalStateException( - "libsupermesh::Tools::Interval::containsInterval: high boundary is smaller than low boundary." - ); - - double low = i.getLowerBound(); - double high = i.getUpperBound(); - IntervalType type = i.getIntervalType(); - - if (m_low < low && m_high > high) return true; - if (m_low > low || m_high < high) return false; - - switch (m_type) - { - case IT_CLOSED: - break; - case IT_OPEN: - if ((m_low == low && m_high == high && type != IT_OPEN) || - (m_low == low && (type == IT_CLOSED || type == IT_RIGHTOPEN)) || - (m_high == high && ( type == IT_CLOSED || type == IT_LEFTOPEN))) - return false; - break; - case IT_RIGHTOPEN: - if (m_high == high && (type == IT_CLOSED || type == IT_LEFTOPEN)) - return false; - break; - case IT_LEFTOPEN: - if (m_low == low && (type == IT_CLOSED || type == IT_RIGHTOPEN)) - return false; - break; - } - - return true; -} - -libsupermesh::Tools::IntervalType libsupermesh::Tools::Interval::getIntervalType() const -{ - return m_type; -} - -libsupermesh::Tools::Random::Random() -{ - m_pBuffer = 0; - initDrand(static_cast(time(0)), 0xD31A); -} - -libsupermesh::Tools::Random::Random(uint32_t seed, uint16_t xsubi0) -{ - m_pBuffer = 0; - initDrand(seed, xsubi0); -} - -libsupermesh::Tools::Random::~Random() -{ - delete[] m_pBuffer; -} - -void libsupermesh::Tools::Random::initDrand(uint32_t seed, uint16_t xsubi0) -{ - m_pBuffer = new uint16_t[3]; - m_pBuffer[0] = static_cast(xsubi0); - uint32_t mask = 0xFFFF; - m_pBuffer[1] = static_cast(seed & mask); - mask = mask << 16; - m_pBuffer[2] = static_cast((seed & mask) >> 16); - -#ifdef BUILD_OS_CYGWIN - srand48(*(reinterpret_cast(m_pBuffer))); - // BUG: There is a bug in cygwin gcc 3.4.4. srand48 needs to be called - // even if we are using the functions that take the seed as a parameter. - // This does not affect random number generation, which still happens - // using the seed provided as a parameter and not the one provided to srand48 :-S -#endif -} - -int32_t libsupermesh::Tools::Random::nextUniformLong() -{ - return jrand48(m_pBuffer); -} - -uint32_t libsupermesh::Tools::Random::nextUniformUnsignedLong() -{ - return static_cast(nextUniformLong()); -} - -int32_t libsupermesh::Tools::Random::nextUniformLong(int32_t low, int32_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -uint32_t libsupermesh::Tools::Random::nextUniformUnsignedLong(uint32_t low, uint32_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -int64_t libsupermesh::Tools::Random::nextUniformLongLong() -{ - return static_cast(nextUniformUnsignedLongLong()); -} - -uint64_t libsupermesh::Tools::Random::nextUniformUnsignedLongLong() -{ - uint64_t lh = static_cast(nextUniformLong()); - uint64_t ll = static_cast(nextUniformLong()); - uint64_t ret = (lh << 32) | ll; - return ret; -} - -int64_t libsupermesh::Tools::Random::nextUniformLongLong(int64_t low, int64_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -uint64_t libsupermesh::Tools::Random::nextUniformUnsignedLongLong(uint64_t low, uint64_t high) -{ - return low + static_cast((high - low) * nextUniformDouble()); -} - -int16_t libsupermesh::Tools::Random::nextUniformShort() -{ - return static_cast(nextUniformUnsignedShort()); -} - -uint16_t libsupermesh::Tools::Random::nextUniformUnsignedShort() -{ - return nextUniformUnsignedLong() >> 16; - // retain the high order bits. -} - -double libsupermesh::Tools::Random::nextUniformDouble() -{ - uint16_t* xsubi = reinterpret_cast(m_pBuffer); - return erand48(xsubi); -} - -double libsupermesh::Tools::Random::nextUniformDouble(double low, double high) -{ - return (high - low) * nextUniformDouble() + low; -} - -bool libsupermesh::Tools::Random::flipCoin() -{ - if (nextUniformDouble() < 0.5) return true; - return false; -} - -#if HAVE_PTHREAD_H -libsupermesh::Tools::LockGuard::LockGuard(pthread_mutex_t* pLock) - : m_pLock(pLock) -{ - pthread_mutex_lock(m_pLock); -} - -libsupermesh::Tools::LockGuard::~LockGuard() -{ - pthread_mutex_unlock(m_pLock); -} -#endif - -std::ostream& libsupermesh::Tools::operator<<(std::ostream& os, const libsupermesh::Tools::PropertySet& p) -{ - std::map::const_iterator it; - - for (it = p.m_propertySet.begin(); it != p.m_propertySet.end(); ++it) - { - if (it != p.m_propertySet.begin()) os << ", "; - - switch ((*it).second.m_varType) - { - case VT_LONG: - os << (*it).first << ": " << (*it).second.m_val.lVal; - break; - case VT_LONGLONG: - os << (*it).first << ": " << (*it).second.m_val.llVal; - break; - case VT_BYTE: - os << (*it).first << ": " << (*it).second.m_val.bVal; - break; - case VT_SHORT: - os << (*it).first << ": " << (*it).second.m_val.iVal; - break; - case VT_FLOAT: - os << (*it).first << ": " << (*it).second.m_val.fltVal; - break; - case VT_DOUBLE: - os << (*it).first << ": " << (*it).second.m_val.dblVal; - break; - case VT_CHAR: - os << (*it).first << ": " << (*it).second.m_val.cVal; - break; - case VT_USHORT: - os << (*it).first << ": " << (*it).second.m_val.uiVal; - break; - case VT_ULONG: - os << (*it).first << ": " << (*it).second.m_val.ulVal; - break; - case VT_ULONGLONG: - os << (*it).first << ": " << (*it).second.m_val.ullVal; - break; - case VT_BOOL: - os << (*it).first << ": " << (*it).second.m_val.blVal; - break; - case VT_PCHAR: - os << (*it).first << ": " << (*it).second.m_val.pcVal; - break; - case VT_PVOID: - os << (*it).first << ": ?"; - break; - case VT_EMPTY: - os << (*it).first << ": empty"; - break; - default: - os << (*it).first << ": unknown"; - } - } - - return os; -} - -std::ostream& libsupermesh::Tools::operator<<(std::ostream& os, const libsupermesh::Tools::Interval& iv) -{ - os << iv.m_type << " " << iv.m_low << " " << iv.m_high; - return os; -} - -// -// BufferedFile -// -libsupermesh::Tools::BufferedFile::BufferedFile(uint32_t u32BufferSize) -: m_buffer(new char[u32BufferSize]), m_u32BufferSize(u32BufferSize), m_bEOF(true) -{ -} - -libsupermesh::Tools::BufferedFile::~BufferedFile() -{ - m_file.close(); - delete[] m_buffer; -} - -void libsupermesh::Tools::BufferedFile::close() -{ - m_file.close(); -} - -bool libsupermesh::Tools::BufferedFile::eof() -{ - return m_bEOF; -} - -// -// BufferedFileReader -// -libsupermesh::Tools::BufferedFileReader::BufferedFileReader() -{ -} - -libsupermesh::Tools::BufferedFileReader::BufferedFileReader(const std::string& sFileName, uint32_t u32BufferSize) -: BufferedFile(u32BufferSize) -{ - open(sFileName); -} - -void libsupermesh::Tools::BufferedFileReader::open(const std::string& sFileName) -{ - m_bEOF = false; - m_file.close(); m_file.clear(); - - - m_file.open(sFileName.c_str(), std::ios_base::in | std::ios_base::binary); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileReader::BufferedFileReader: Cannot open file."); - - m_file.rdbuf()->pubsetbuf(m_buffer, m_u32BufferSize); -} - -libsupermesh::Tools::BufferedFileReader::~BufferedFileReader() -{ -} - -void libsupermesh::Tools::BufferedFileReader::rewind() -{ - m_file.clear(); - m_file.seekg(0, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileReader::rewind: seek failed."); - - m_bEOF = false; -} - -void libsupermesh::Tools::BufferedFileReader::seek(std::fstream::off_type offset) -{ - m_bEOF = false; - m_file.clear(); - m_file.seekg(offset, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileReader::seek: seek failed."); -} - -uint8_t libsupermesh::Tools::BufferedFileReader::readUInt8() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint8_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint8_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -uint16_t libsupermesh::Tools::BufferedFileReader::readUInt16() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint16_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint16_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -uint32_t libsupermesh::Tools::BufferedFileReader::readUInt32() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint32_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint32_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -uint64_t libsupermesh::Tools::BufferedFileReader::readUInt64() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint64_t ret; - m_file.read(reinterpret_cast(&ret), sizeof(uint64_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -float libsupermesh::Tools::BufferedFileReader::readFloat() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - float ret; - m_file.read(reinterpret_cast(&ret), sizeof(float)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -double libsupermesh::Tools::BufferedFileReader::readDouble() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - double ret; - m_file.read(reinterpret_cast(&ret), sizeof(double)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -bool libsupermesh::Tools::BufferedFileReader::readBoolean() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - bool ret; - m_file.read(reinterpret_cast(&ret), sizeof(bool)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - return ret; -} - -std::string libsupermesh::Tools::BufferedFileReader::readString() -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - uint32_t len; - m_file.read(reinterpret_cast(&len), sizeof(uint32_t)); - if (! m_file.good()) - { - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - - std::string::value_type* buf = new std::string::value_type[len]; - m_file.read(reinterpret_cast(buf), len * sizeof(std::string::value_type)); - if (! m_file.good()) - { - delete[] buf; - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } - - std::string ret(buf, len); - delete[] buf; - - return ret; -} - -void libsupermesh::Tools::BufferedFileReader::readBytes(uint32_t u32Len, byte** pData) -{ - if (m_bEOF) throw libsupermesh::Tools::EndOfStreamException(""); - - *pData = new byte[u32Len]; - m_file.read(reinterpret_cast(*pData), u32Len); - if (! m_file.good()) - { - delete[] *pData; - m_bEOF = true; - throw libsupermesh::Tools::EndOfStreamException(""); - } -} - -// -// BufferedFileWriter -// -libsupermesh::Tools::BufferedFileWriter::BufferedFileWriter() -{ - open(""); -} - -libsupermesh::Tools::BufferedFileWriter::BufferedFileWriter(const std::string& sFileName, FileMode mode, uint32_t u32BufferSize) -: BufferedFile(u32BufferSize) -{ - open(sFileName, mode); -} - -libsupermesh::Tools::BufferedFileWriter::~BufferedFileWriter() -{ - m_file.flush(); -} - -void libsupermesh::Tools::BufferedFileWriter::open(const std::string& sFileName, FileMode mode) -{ - m_bEOF = false; - m_file.close(); m_file.clear(); - - if (mode == CREATE) - { - m_file.open(sFileName.c_str(), std::ios_base::out | std::ios_base::binary | std::ios_base::trunc); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::open: Cannot open file."); - } - else if (mode == APPEND) - { - // Idiotic fstream::open truncates an existing file anyway, if it is only opened - // for output (no ios_base::in flag)!! On the other hand, if a file does not exist - // and the ios_base::in flag is specified, then the open fails!! - - m_file.open(sFileName.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::binary); - if (! m_file.good()) - { - m_file.clear(); - m_file.open(sFileName.c_str(), std::ios_base::out | std::ios_base::binary); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::open: Cannot open file."); - } - else - { - m_file.seekp(0, std::ios_base::end); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::open: Cannot open file."); - } - } - else - throw libsupermesh::Tools::IllegalArgumentException("libsupermesh::Tools::BufferedFileWriter::open: Unknown mode."); -} - -void libsupermesh::Tools::BufferedFileWriter::rewind() -{ - m_bEOF = false; - m_file.clear(); - m_file.seekp(0, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::rewind: seek failed."); -} - -void libsupermesh::Tools::BufferedFileWriter::seek(std::fstream::off_type offset) -{ - m_bEOF = false; - m_file.clear(); - m_file.seekp(offset, std::ios_base::beg); - if (! m_file.good()) - throw std::ios_base::failure("libsupermesh::Tools::BufferedFileWriter::seek: seek failed."); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint8_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint8_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint16_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint16_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint32_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint32_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint64_t i) -{ - m_file.write(reinterpret_cast(&i), sizeof(uint64_t)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(float i) -{ - m_file.write(reinterpret_cast(&i), sizeof(float)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(double i) -{ - m_file.write(reinterpret_cast(&i), sizeof(double)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(bool b) -{ - m_file.write(reinterpret_cast(&b), sizeof(bool)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(const std::string& s) -{ - uint32_t len = static_cast(s.size()); - m_file.write(reinterpret_cast(&len), sizeof(uint32_t)); - if (! m_file.good()) throw std::ios_base::failure(""); - m_file.write(reinterpret_cast(s.c_str()), len * sizeof(std::string::value_type)); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -void libsupermesh::Tools::BufferedFileWriter::write(uint32_t u32Len, byte* pData) -{ - m_file.write(reinterpret_cast(pData), u32Len); - if (! m_file.good()) throw std::ios_base::failure(""); -} - -// -// TemporaryFile -// -libsupermesh::Tools::TemporaryFile::TemporaryFile() -{ - -#ifdef _MSC_VER - -#ifndef L_tmpnam_s -// MSVC 2003 doesn't have tmpnam_s, so we'll have to use the old functions - - char* tmpName = NULL; - tmpName = tmpnam( NULL ); - - if (tmpName == NULL) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile: Cannot create temporary file name."); - -#else - char tmpName[L_tmpnam_s]; - errno_t err = tmpnam_s(tmpName, L_tmpnam_s); - if (err) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile: Cannot create temporary file name."); - -#endif - if (tmpName[0] == '\\') - m_sFile = std::string(tmpName + 1); - else - m_sFile = std::string(tmpName); - -#else - char tmpName[7] = "XXXXXX"; - if (mktemp(tmpName) == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile: Cannot create temporary file name."); - m_sFile = tmpName; -#endif - - m_pFile = new libsupermesh::Tools::BufferedFileWriter(m_sFile, libsupermesh::Tools::CREATE); -} - -libsupermesh::Tools::TemporaryFile::~TemporaryFile() -{ - delete m_pFile; - -#ifdef _MSC_VER - _unlink(m_sFile.c_str()); -#else - std::remove(m_sFile.c_str()); -#endif -} - -void libsupermesh::Tools::TemporaryFile::rewindForReading() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br != 0) - m_pFile->rewind(); - else - { - delete m_pFile; - m_pFile = new libsupermesh::Tools::BufferedFileReader(m_sFile); - } -} - -void libsupermesh::Tools::TemporaryFile::rewindForWriting() -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw != 0) - m_pFile->rewind(); - else - { - delete m_pFile; - m_pFile = new libsupermesh::Tools::BufferedFileWriter(m_sFile); - } -} - -bool libsupermesh::Tools::TemporaryFile::eof() -{ - return m_pFile->eof(); -} - -std::string libsupermesh::Tools::TemporaryFile::getFileName() const -{ - return m_sFile; -} - -uint8_t libsupermesh::Tools::TemporaryFile::readUInt8() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt8: file not open for reading."); - - return br->readUInt8(); -} - -uint16_t libsupermesh::Tools::TemporaryFile::readUInt16() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt16: file not open for reading."); - - return br->readUInt16(); -} - -uint32_t libsupermesh::Tools::TemporaryFile::readUInt32() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt32: file not open for reading."); - - return br->readUInt32(); -} - -uint64_t libsupermesh::Tools::TemporaryFile::readUInt64() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readUInt64: file not open for reading."); - - return br->readUInt64(); -} - -float libsupermesh::Tools::TemporaryFile::readFloat() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readFloat: file not open for reading."); - - return br->readFloat(); -} - -double libsupermesh::Tools::TemporaryFile::readDouble() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readDouble: file not open for reading."); - - return br->readDouble(); -} - -std::string libsupermesh::Tools::TemporaryFile::readString() -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readString: file not open for reading."); - - return br->readString(); -} - -void libsupermesh::Tools::TemporaryFile::readBytes(uint32_t u32Len, byte** pData) -{ - libsupermesh::Tools::BufferedFileReader* br = dynamic_cast(m_pFile); - if (br == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::readString: file not open for reading."); - - return br->readBytes(u32Len, pData); -} - -void libsupermesh::Tools::TemporaryFile::write(uint8_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(uint16_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(uint32_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(uint64_t i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(float i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(double i) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(i); -} - -void libsupermesh::Tools::TemporaryFile::write(const std::string& s) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(s); -} - -void libsupermesh::Tools::TemporaryFile::write(uint32_t u32Len, byte* pData) -{ - libsupermesh::Tools::BufferedFileWriter* bw = dynamic_cast(m_pFile); - if (bw == 0) - throw std::ios_base::failure("libsupermesh::Tools::TemporaryFile::write: file not open for writing."); - - return bw->write(u32Len, pData); -} diff --git a/spatialindex-1.8.5/src/tools/rand48.cc b/spatialindex-1.8.5/src/tools/rand48.cc deleted file mode 100644 index 33121d8..0000000 --- a/spatialindex-1.8.5/src/tools/rand48.cc +++ /dev/null @@ -1,150 +0,0 @@ -/* -* Copyright (c) 1993 Martin Birgmeier -* All rights reserved. -* -* You may redistribute unmodified or modified versions of this source -* code provided that the above copyright notice and this and the -* following conditions are retained. -* -* This software is provided ``as is'', and comes with no warranties -* of any kind. I shall in no event be liable for anything that happens -* to anyone/anything when using this software. -*/ - -#ifndef HAVE_SRAND48 - -#include -#include -#include - -#define RAND48_SEED_0 (0x330e) -#define RAND48_SEED_1 (0xabcd) -#define RAND48_SEED_2 (0x1234) -#define RAND48_MULT_0 (0xe66d) -#define RAND48_MULT_1 (0xdeec) -#define RAND48_MULT_2 (0x0005) -#define RAND48_ADD (0x000b) - - - /* Internal function to compute next state of the generator. */ -static void _dorand48(unsigned short[3]); - -/* Unfortunately, 3 __globals, which the exported functions must access */ -unsigned short __rand48_Seed[3] = { - RAND48_SEED_0, - RAND48_SEED_1, - RAND48_SEED_2 -}; -unsigned short __rand48_Mult[3] = { - RAND48_MULT_0, - RAND48_MULT_1, - RAND48_MULT_2 -}; -unsigned short __rand48_Add = RAND48_ADD; - -/* Internal function to compute next state of the generator. */ - static void -_dorand48(unsigned short xseed[3]) -{ - unsigned long accu; - unsigned short temp[2]; - - accu = (unsigned long) __rand48_Mult[0] * (unsigned long) xseed[0] + - (unsigned long) __rand48_Add; - temp[0] = (unsigned short) accu; /* lower 16 bits */ - accu >>= sizeof(unsigned short) * 8; - accu += (unsigned long) __rand48_Mult[0] * (unsigned long) xseed[1] + - (unsigned long) __rand48_Mult[1] * (unsigned long) xseed[0]; - temp[1] = (unsigned short) accu; /* middle 16 bits */ - accu >>= sizeof(unsigned short) * 8; - accu += __rand48_Mult[0] * xseed[2] + __rand48_Mult[1] * xseed[1] + - __rand48_Mult[2] * xseed[0]; - xseed[0] = temp[0]; - xseed[1] = temp[1]; - xseed[2] = (unsigned short) accu; -} - - extern void -srand48(long seed) __THROW -{ - __rand48_Seed[0] = RAND48_SEED_0; - __rand48_Seed[1] = (unsigned short) seed; - __rand48_Seed[2] = (unsigned short) (seed >> 16); - __rand48_Mult[0] = RAND48_MULT_0; - __rand48_Mult[1] = RAND48_MULT_1; - __rand48_Mult[2] = RAND48_MULT_2; - __rand48_Add = RAND48_ADD; -} - - extern unsigned short * -seed48(unsigned short xseed[3]) __THROW -{ - static unsigned short sseed[3]; - - sseed[0] = __rand48_Seed[0]; - sseed[1] = __rand48_Seed[1]; - sseed[2] = __rand48_Seed[2]; - __rand48_Seed[0] = xseed[0]; - __rand48_Seed[1] = xseed[1]; - __rand48_Seed[2] = xseed[2]; - __rand48_Mult[0] = RAND48_MULT_0; - __rand48_Mult[1] = RAND48_MULT_1; - __rand48_Mult[2] = RAND48_MULT_2; - __rand48_Add = RAND48_ADD; - return sseed; -} - - extern long -nrand48(unsigned short xseed[3]) __THROW -{ - _dorand48(xseed); - return ((long) xseed[2] << 15) + ((long) xseed[1] >> 1); -} - extern long -mrand48(void) __THROW -{ - _dorand48(__rand48_Seed); - return ((long) __rand48_Seed[2] << 16) + (long) __rand48_Seed[1]; -} - - extern long -lrand48(void) __THROW -{ - _dorand48(__rand48_Seed); - return ((long) __rand48_Seed[2] << 15) + ((long) __rand48_Seed[1] >> 1); -} - - extern void -lcong48(unsigned short p[7]) __THROW -{ - __rand48_Seed[0] = p[0]; - __rand48_Seed[1] = p[1]; - __rand48_Seed[2] = p[2]; - __rand48_Mult[0] = p[3]; - __rand48_Mult[1] = p[4]; - __rand48_Mult[2] = p[5]; - __rand48_Add = p[6]; -} - extern long -jrand48(unsigned short xseed[3]) __THROW -{ - _dorand48(xseed); - return ((long) xseed[2] << 16) + (long) xseed[1]; -} - - extern double -erand48(unsigned short xseed[3]) __THROW -{ - _dorand48(xseed); - return ldexp((double) xseed[0], -48) + - ldexp((double) xseed[1], -32) + - ldexp((double) xseed[2], -16); -} - - extern double -drand48(void) __THROW -{ - return erand48(__rand48_Seed); -} - -#endif diff --git a/spatialindex-1.8.5/src/tprtree/Index.cc b/spatialindex-1.8.5/src/tprtree/Index.cc deleted file mode 100644 index 000dfde..0000000 --- a/spatialindex-1.8.5/src/tprtree/Index.cc +++ /dev/null @@ -1,413 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "TPRTree.h" -#include "Node.h" -#include "Leaf.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::TPRTree; - -Index::~Index() -{ -} - -Index::Index(libsupermesh::SpatialIndex::TPRTree::TPRTree* pTree, id_type id, uint32_t level) : Node(pTree, id, level, pTree->m_indexCapacity) -{ -} - -NodePtr Index::chooseSubtree(const MovingRegion& mbr, uint32_t insertionLevel, std::stack& pathBuffer) -{ - if (m_level == insertionLevel) return NodePtr(this, &(m_pTree->m_indexPool)); - - pathBuffer.push(m_identifier); - - uint32_t child = 0; - - switch (m_pTree->m_treeVariant) - { - case TPRV_RSTAR: - if (m_level == 1) - { - // if this node points to leaves... - child = findLeastOverlap(mbr); - } - else - { - child = findLeastEnlargement(mbr); - } - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::chooseSubtree: Tree variant not supported."); - } - assert(child != std::numeric_limits::max()); - - NodePtr n = m_pTree->readNode(m_pIdentifier[child]); - NodePtr ret = n->chooseSubtree(mbr, insertionLevel, pathBuffer); - assert(n.unique()); - if (ret.get() == n.get()) n.relinquish(); - - return ret; -} - -NodePtr Index::findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer) -{ - pathBuffer.push(m_identifier); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_ptrMBR[cChild]->containsRegionAfterTime(m_pTree->m_currentTime, mbr)) - { - NodePtr n = m_pTree->readNode(m_pIdentifier[cChild]); - NodePtr l = n->findLeaf(mbr, id, pathBuffer); - if (n.get() == l.get()) n.relinquish(); - if (l.get() != 0) return l; - } - } - - pathBuffer.pop(); - - return NodePtr(); -} - -void Index::split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight) -{ - ++(m_pTree->m_stats.m_splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case TPRV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Index::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_indexPool.acquire(); - pRight = m_pTree->m_indexPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Index(m_pTree, m_identifier, m_level), &(m_pTree->m_indexPool)); - if (pRight.get() == 0) pRight = NodePtr(new Index(m_pTree, -1, m_level), &(m_pTree->m_indexPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(0, 0, *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(0, 0, *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - } -} - -uint32_t Index::findLeastEnlargement(const MovingRegion& r) const -{ - double area = std::numeric_limits::max(); - uint32_t best = std::numeric_limits::max(); - - MovingRegionPtr t = m_pTree->m_regionPool.acquire(); - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // I need the combined region from current time up to infinity here. - m_ptrMBR[cChild]->getCombinedRegionAfterTime(ivT.getLowerBound(), *t, r); - - double a = m_ptrMBR[cChild]->getAreaInTime(ivT); - double b = t->getAreaInTime(ivT); - double enl = b - a; - - if (enl < area) - { - area = enl; - best = cChild; - } - else if (enl == area) - { - // this will rarely happen, so compute best area on the fly only - // when necessary. - if (a < m_ptrMBR[best]->getAreaInTime(ivT)) best = cChild; - } - } - - return best; -} - -uint32_t Index::findLeastOverlap(const MovingRegion& r) const -{ - OverlapEntry** entries = new OverlapEntry*[m_children]; - - double leastOverlap = std::numeric_limits::max(); - double me = std::numeric_limits::max(); - OverlapEntry* best = 0; - - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - // find combined region and enlargement of every entry and store it. - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - try - { - entries[cChild] = new OverlapEntry(); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete entries[i]; - delete[] entries; - throw; - } - - entries[cChild]->m_index = cChild; - entries[cChild]->m_original = m_ptrMBR[cChild]; - entries[cChild]->m_combined = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->getCombinedRegionAfterTime(m_pTree->m_currentTime, *(entries[cChild]->m_combined), r); - entries[cChild]->m_oa = entries[cChild]->m_original->getAreaInTime(ivT); - entries[cChild]->m_ca = entries[cChild]->m_combined->getAreaInTime(ivT); - entries[cChild]->m_enlargement = entries[cChild]->m_ca - entries[cChild]->m_oa; - - if (entries[cChild]->m_enlargement < me) - { - me = entries[cChild]->m_enlargement; - best = entries[cChild]; - } - else if (entries[cChild]->m_enlargement == me && entries[cChild]->m_oa < best->m_oa) - { - best = entries[cChild]; - } - } - - if (me < -std::numeric_limits::epsilon() || me > std::numeric_limits::epsilon()) - { - uint32_t cIterations; - - if (m_children > m_pTree->m_nearMinimumOverlapFactor) - { - // sort entries in increasing order of enlargement. - ::qsort(entries, m_children, - sizeof(OverlapEntry*), - OverlapEntry::compareEntries); - assert(entries[0]->m_enlargement <= entries[m_children - 1]->m_enlargement); - - cIterations = m_pTree->m_nearMinimumOverlapFactor; - } - else - { - cIterations = m_children; - } - - // calculate overlap of most important original entries (near minimum overlap cost). - for (uint32_t cIndex = 0; cIndex < cIterations; ++cIndex) - { - double dif = 0.0; - OverlapEntry* e = entries[cIndex]; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (e->m_index != cChild) - { - double f = e->m_combined->getIntersectingAreaInTime(ivT, *(m_ptrMBR[cChild])); - if (f != 0.0) dif += f - e->m_original->getIntersectingAreaInTime(ivT, *(m_ptrMBR[cChild])); - } - } // for (cChild) - - if (dif < leastOverlap) - { - leastOverlap = dif; - best = entries[cIndex]; - } - else if (dif == leastOverlap) - { - if (e->m_enlargement == best->m_enlargement) - { - // keep the one with least area. - if (e->m_original->getAreaInTime(ivT) < best->m_original->getAreaInTime(ivT)) best = entries[cIndex]; - } - else - { - // keep the one with least enlargement. - if (e->m_enlargement < best->m_enlargement) best = entries[cIndex]; - } - } - } // for (cIndex) - } - - uint32_t ret = best->m_index; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - delete entries[cChild]; - } - delete[] entries; - - return ret; -} - -void Index::adjustTree(Node* n, std::stack& pathBuffer) -{ - ++(m_pTree->m_stats.m_adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n->m_identifier) break; - } - assert(child < m_children); - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - //libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - //bool bContained = m_nodeMBR.containsRegionInTime(ivT, n->m_nodeMBR); - - *(m_ptrMBR[child]) = n->m_nodeMBR; - - //if (! bContained) - //{ - // update the MBR at the current time anyway, to make tighter. - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - //} - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, *(m_ptrMBR[cChild])) == true); - } -#endif - - m_pTree->writeNode(this); - - if (/*! bContained && */ ! pathBuffer.empty()) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} - -void Index::adjustTree(Node* n1, Node* n2, std::stack& pathBuffer, byte* overflowTable) -{ - ++(m_pTree->m_stats.m_adjustments); - - // find entry pointing to old node; - uint32_t child; - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == n1->m_identifier) break; - } - assert(child < m_children); - - // MBR needs recalculation if either: - // 1. the NEW child MBR is not contained. - // 2. the OLD child MBR is touching. - //libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - //bool bContained = m_nodeMBR.containsRegionInTime(ivT, n1->m_nodeMBR); - - *(m_ptrMBR[child]) = n1->m_nodeMBR; - - //if (! bContaied) - //{ - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - //} - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, *(m_ptrMBR[cChild])) == true); - } -#endif - - // No write necessary here. insertData will write the node if needed. - //m_pTree->writeNode(this); - - bool bAdjusted = insertData(0, 0, n2->m_nodeMBR, n2->m_identifier, pathBuffer, overflowTable); - - // if n2 is contained in the node and there was no split or reinsert, - // we need to adjust only if recalculation took place. - // In all other cases insertData above took care of adjustment. - if (! bAdjusted && ! pathBuffer.empty()) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } -} diff --git a/spatialindex-1.8.5/src/tprtree/Index.h b/spatialindex-1.8.5/src/tprtree/Index.h deleted file mode 100644 index 796b510..0000000 --- a/spatialindex-1.8.5/src/tprtree/Index.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class Index : public Node - { - public: - virtual ~Index(); - - private: - Index(TPRTree* pTree, id_type id, uint32_t level); - - virtual NodePtr chooseSubtree(const MovingRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& left, NodePtr& right); - - uint32_t findLeastEnlargement(const MovingRegion&) const; - uint32_t findLeastOverlap(const MovingRegion&) const; - - void adjustTree(Node*, std::stack&); - void adjustTree(Node*, Node*, std::stack&, byte* overflowTable); - - class OverlapEntry - { - public: - uint32_t m_index; - double m_enlargement; - MovingRegionPtr m_original; - MovingRegionPtr m_combined; - double m_oa; - double m_ca; - - static int compareEntries(const void* pv1, const void* pv2) - { - OverlapEntry* pe1 = * (OverlapEntry**) pv1; - OverlapEntry* pe2 = * (OverlapEntry**) pv2; - - if (pe1->m_enlargement < pe2->m_enlargement) return -1; - if (pe1->m_enlargement > pe2->m_enlargement) return 1; - return 0; - } - }; // OverlapEntry - - friend class TPRTree; - friend class Node; - friend class BulkLoader; - }; // Index - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/Leaf.cc b/spatialindex-1.8.5/src/tprtree/Leaf.cc deleted file mode 100644 index 95c4ede..0000000 --- a/spatialindex-1.8.5/src/tprtree/Leaf.cc +++ /dev/null @@ -1,148 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include - -#include "TPRTree.h" -#include "Node.h" -#include "Index.h" -#include "Leaf.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::TPRTree; - -Leaf::~Leaf() -{ -} - -Leaf::Leaf(libsupermesh::SpatialIndex::TPRTree::TPRTree* pTree, id_type id) - : Node(pTree, id, 0, pTree->m_leafCapacity) -{ -} - -NodePtr Leaf::chooseSubtree(const MovingRegion&, uint32_t, std::stack&) -{ - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - return NodePtr(this, &(m_pTree->m_leafPool)); -} - -NodePtr Leaf::findLeaf(const MovingRegion&, id_type id, std::stack&) -{ - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - // should make sure to relinquish other PoolPointer lists that might be pointing to the - // same leaf. - if (m_pIdentifier[cChild] == id /*&& mbr == *(m_ptrMBR[cChild])*/) return NodePtr(this, &(m_pTree->m_leafPool)); - } - - return NodePtr(); -} - -void Leaf::split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& pLeft, NodePtr& pRight) -{ - ++(m_pTree->m_stats.m_splits); - - std::vector g1, g2; - - switch (m_pTree->m_treeVariant) - { - case TPRV_RSTAR: - rstarSplit(dataLength, pData, mbr, id, g1, g2); - break; - default: - throw libsupermesh::Tools::NotSupportedException("Leaf::split: Tree variant not supported."); - } - - pLeft = m_pTree->m_leafPool.acquire(); - pRight = m_pTree->m_leafPool.acquire(); - - if (pLeft.get() == 0) pLeft = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - if (pRight.get() == 0) pRight = NodePtr(new Leaf(m_pTree, -1), &(m_pTree->m_leafPool)); - - pLeft->m_nodeMBR = m_pTree->m_infiniteRegion; - pRight->m_nodeMBR = m_pTree->m_infiniteRegion; - - uint32_t cIndex; - - for (cIndex = 0; cIndex < g1.size(); ++cIndex) - { - pLeft->insertEntry(m_pDataLength[g1[cIndex]], m_pData[g1[cIndex]], *(m_ptrMBR[g1[cIndex]]), m_pIdentifier[g1[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g1[cIndex]] = 0; - } - - for (cIndex = 0; cIndex < g2.size(); ++cIndex) - { - pRight->insertEntry(m_pDataLength[g2[cIndex]], m_pData[g2[cIndex]], *(m_ptrMBR[g2[cIndex]]), m_pIdentifier[g2[cIndex]]); - // we don't want to delete the data array from this node's destructor! - m_pData[g2[cIndex]] = 0; - } -} - -void Leaf::deleteData(id_type id, std::stack& pathBuffer) -{ - uint32_t child; - - for (child = 0; child < m_children; ++child) - { - if (m_pIdentifier[child] == id) break; - } - - deleteEntry(child); - m_pTree->writeNode(this); - - std::stack toReinsert; - NodePtr ptrThis(this, &(m_pTree->m_leafPool)); - condenseTree(toReinsert, pathBuffer, ptrThis); - ptrThis.relinquish(); - - // re-insert eliminated nodes. - while (! toReinsert.empty()) - { - NodePtr n = toReinsert.top(); toReinsert.pop(); - m_pTree->deleteNode(n.get()); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - // keep this in the for loop. The tree height might change after insertions. - byte* overflowTable = new byte[m_pTree->m_stats.m_treeHeight]; - memset(overflowTable, 0, m_pTree->m_stats.m_treeHeight); - m_pTree->insertData_impl(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild], n->m_level, overflowTable); - n->m_pData[cChild] = 0; - delete[] overflowTable; - } - if (n.get() == this) n.relinquish(); - } -} diff --git a/spatialindex-1.8.5/src/tprtree/Leaf.h b/spatialindex-1.8.5/src/tprtree/Leaf.h deleted file mode 100644 index 3b0d30a..0000000 --- a/spatialindex-1.8.5/src/tprtree/Leaf.h +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class Leaf : public Node - { - public: - virtual ~Leaf(); - - private: - Leaf(TPRTree* pTree, id_type id); - - virtual NodePtr chooseSubtree(const MovingRegion& mbr, uint32_t level, std::stack& pathBuffer); - virtual NodePtr findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer); - - virtual void split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& left, NodePtr& right); - - virtual void deleteData(id_type id, std::stack& pathBuffer); - - friend class TPRTree; - friend class BulkLoader; - }; // Leaf - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/Makefile.am b/spatialindex-1.8.5/src/tprtree/Makefile.am deleted file mode 100644 index 6f6a87a..0000000 --- a/spatialindex-1.8.5/src/tprtree/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_LTLIBRARIES = libtprtree.la -INCLUDES = -I../../include -libtprtree_la_SOURCES = Index.cc Leaf.cc Node.cc TPRTree.cc Statistics.cc Leaf.h Index.h Node.h PointerPoolNode.h Statistics.h TPRTree.h diff --git a/spatialindex-1.8.5/src/tprtree/Makefile.in b/spatialindex-1.8.5/src/tprtree/Makefile.in deleted file mode 100644 index b48866e..0000000 --- a/spatialindex-1.8.5/src/tprtree/Makefile.in +++ /dev/null @@ -1,601 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/tprtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libtprtree_la_LIBADD = -am_libtprtree_la_OBJECTS = Index.lo Leaf.lo Node.lo TPRTree.lo \ - Statistics.lo -libtprtree_la_OBJECTS = $(am_libtprtree_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libtprtree_la_SOURCES) -DIST_SOURCES = $(libtprtree_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libtprtree.la -INCLUDES = -I../../include -libtprtree_la_SOURCES = Index.cc Leaf.cc Node.cc TPRTree.cc Statistics.cc Leaf.h Index.h Node.h PointerPoolNode.h Statistics.h TPRTree.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tprtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/tprtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libtprtree.la: $(libtprtree_la_OBJECTS) $(libtprtree_la_DEPENDENCIES) $(EXTRA_libtprtree_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libtprtree_la_OBJECTS) $(libtprtree_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Leaf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Statistics.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TPRTree.Plo@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/src/tprtree/Node.cc b/spatialindex-1.8.5/src/tprtree/Node.cc deleted file mode 100644 index 08686c6..0000000 --- a/spatialindex-1.8.5/src/tprtree/Node.cc +++ /dev/null @@ -1,1260 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -#include - -#include "TPRTree.h" -#include "Node.h" -#include "Index.h" - -using namespace libsupermesh::SpatialIndex; -using namespace libsupermesh::SpatialIndex::TPRTree; - -// -// libsupermesh::Tools::IObject interface -// -libsupermesh::Tools::IObject* Node::clone() -{ - throw libsupermesh::Tools::NotSupportedException("IObject::clone should never be called."); -} - -// -// libsupermesh::Tools::ISerializable interface -// -uint32_t Node::getByteArraySize() -{ - return - (sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(uint32_t) + - sizeof(double) + - (m_children * (4 * m_pTree->m_dimension * sizeof(double) + sizeof(double) + sizeof(id_type) + sizeof(uint32_t))) + - m_totalDataLength + - (4 * m_pTree->m_dimension * sizeof(double))); -} - -void Node::loadFromByteArray(const byte* ptr) -{ - m_nodeMBR = m_pTree->m_infiniteRegion; - - // skip the node type information, it is not needed. - ptr += sizeof(uint32_t); - - memcpy(&m_level, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&m_children, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(&(m_nodeMBR.m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - m_nodeMBR.m_endTime = std::numeric_limits::max(); - //memcpy(&(m_nodeMBR.m_endTime), ptr, sizeof(double)); - //ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_ptrMBR[cChild] = m_pTree->m_regionPool.acquire(); - m_ptrMBR[cChild]->makeDimension(m_pTree->m_dimension); - - memcpy(m_ptrMBR[cChild]->m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pVLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_ptrMBR[cChild]->m_pVHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(&(m_ptrMBR[cChild]->m_startTime), ptr, sizeof(double)); - ptr += sizeof(double); - m_ptrMBR[cChild]->m_endTime = std::numeric_limits::max(); - - memcpy(&(m_pIdentifier[cChild]), ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(&(m_pDataLength[cChild]), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - m_totalDataLength += m_pDataLength[cChild]; - m_pData[cChild] = new byte[m_pDataLength[cChild]]; - memcpy(m_pData[cChild], ptr, m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - else - { - m_pData[cChild] = 0; - } - - //m_nodeMBR.combineRegion(*(m_ptrMBR[cChild])); - } - - memcpy(m_nodeMBR.m_pLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pHigh, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pVLow, ptr, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(m_nodeMBR.m_pVHigh, ptr, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); -} - -void Node::storeToByteArray(byte** data, uint32_t& len) -{ - len = getByteArraySize(); - - *data = new byte[len]; - byte* ptr = *data; - - uint32_t nodeType; - - if (m_level == 0) nodeType = PersistentLeaf; - else nodeType = PersistentIndex; - - memcpy(ptr, &nodeType, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_level, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &m_children, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - memcpy(ptr, &(m_nodeMBR.m_startTime), sizeof(double)); - ptr += sizeof(double); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - memcpy(ptr, m_ptrMBR[cChild]->m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pVLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_ptrMBR[cChild]->m_pVHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, &(m_ptrMBR[cChild]->m_startTime), sizeof(double)); - ptr += sizeof(double); - - memcpy(ptr, &(m_pIdentifier[cChild]), sizeof(id_type)); - ptr += sizeof(id_type); - - memcpy(ptr, &(m_pDataLength[cChild]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_pDataLength[cChild] > 0) - { - memcpy(ptr, m_pData[cChild], m_pDataLength[cChild]); - ptr += m_pDataLength[cChild]; - } - } - - // store the node MBR for efficiency. This increases the node size a little bit. - memcpy(ptr, m_nodeMBR.m_pLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pHigh, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pVLow, m_pTree->m_dimension * sizeof(double)); - ptr += m_pTree->m_dimension * sizeof(double); - memcpy(ptr, m_nodeMBR.m_pVHigh, m_pTree->m_dimension * sizeof(double)); - //ptr += m_pTree->m_dimension * sizeof(double); - - assert(len == (ptr - *data) + m_pTree->m_dimension * sizeof(double)); -} - -// -// libsupermesh::SpatialIndex::IEntry interface -// -libsupermesh::SpatialIndex::id_type Node::getIdentifier() const -{ - return m_identifier; -} - -void Node::getShape(IShape** out) const -{ - *out = new MovingRegion(m_nodeMBR); -} - -// -// libsupermesh::SpatialIndex::INode interface -// -uint32_t Node::getChildrenCount() const -{ - return m_children; -} - -libsupermesh::SpatialIndex::id_type Node::getChildIdentifier(uint32_t index) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - return m_pIdentifier[index]; -} - -void Node::getChildShape(uint32_t index, IShape** out) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - - *out = new MovingRegion(*(m_ptrMBR[index])); -} - -void Node::getChildData(uint32_t index, uint32_t& length, byte** data) const -{ - if (index >= m_children) throw libsupermesh::Tools::IndexOutOfBoundsException(index); - if (m_pData[index] == NULL) - { - length = 0; - data = NULL; - } - else - { - length = m_pDataLength[index]; - *data = m_pData[index]; - } -} - -uint32_t Node::getLevel() const -{ - return m_level; -} - -bool Node::isLeaf() const -{ - return (m_level == 0); -} - -bool Node::isIndex() const -{ - return (m_level != 0); -} - -// -// Internal -// - -Node::Node() : - m_pTree(0), - m_level(0), - m_identifier(-1), - m_children(0), - m_capacity(0), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ -} - -Node::Node(libsupermesh::SpatialIndex::TPRTree::TPRTree* pTree, id_type id, uint32_t level, uint32_t capacity) : - m_pTree(pTree), - m_level(level), - m_identifier(id), - m_children(0), - m_capacity(capacity), - m_pData(0), - m_ptrMBR(0), - m_pIdentifier(0), - m_pDataLength(0), - m_totalDataLength(0) -{ - m_nodeMBR.makeInfinite(m_pTree->m_dimension); - - try - { - m_pDataLength = new uint32_t[m_capacity + 1]; - m_pData = new byte*[m_capacity + 1]; - m_ptrMBR = new MovingRegionPtr[m_capacity + 1]; - m_pIdentifier = new id_type[m_capacity + 1]; - } - catch (...) - { - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - throw; - } -} - -Node::~Node() -{ - if (m_pData != 0) - { - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - if (m_pData[cChild] != 0) delete[] m_pData[cChild]; - } - - delete[] m_pData; - } - - delete[] m_pDataLength; - delete[] m_ptrMBR; - delete[] m_pIdentifier; -} - -Node& Node::operator=(const Node&) -{ - throw libsupermesh::Tools::IllegalStateException("Node::operator =: This should never be called."); -} - -bool Node::insertEntry(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id) -{ - assert(m_children < m_capacity); - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - m_totalDataLength += dataLength; - ++m_children; - - if (m_nodeMBR.m_startTime != m_pTree->m_currentTime) - { - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - } - else if ( - //m_nodeMBR.m_pLow[0] != std::numeric_limits::max() && - ! m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, mbr)) - { - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - double l = m_nodeMBR.getExtrapolatedLow(cDim, m_pTree->m_currentTime); - double rl = mbr.getExtrapolatedLow(cDim, m_pTree->m_currentTime); - if (rl <= l) - { - m_nodeMBR.m_pLow[cDim] = rl - 2.0 * std::numeric_limits::epsilon(); - } - - double h = m_nodeMBR.getExtrapolatedHigh(cDim, m_pTree->m_currentTime); - double rh = mbr.getExtrapolatedHigh(cDim, m_pTree->m_currentTime); - if (rh >= h) - { - m_nodeMBR.m_pHigh[cDim] = rh + 2.0 * std::numeric_limits::epsilon(); - } - - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], mbr.m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], mbr.m_pVHigh[cDim]); - } - } - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_nodeMBR.m_startTime, *(m_ptrMBR[cChild]))); - } -#endif - - return true; -} - -void Node::deleteEntry(uint32_t index) -{ - assert(index >= 0 && index < m_children); - - // cache it, since I might need it for "touches" later. - MovingRegionPtr ptrR = m_ptrMBR[index]; - - m_totalDataLength -= m_pDataLength[index]; - if (m_pData[index] != 0) delete[] m_pData[index]; - - if (m_children > 1 && index != m_children - 1) - { - m_pDataLength[index] = m_pDataLength[m_children - 1]; - m_pData[index] = m_pData[m_children - 1]; - m_ptrMBR[index] = m_ptrMBR[m_children - 1]; - m_pIdentifier[index] = m_pIdentifier[m_children - 1]; - } - - --m_children; - - // WARNING: index has now changed. Do not use it below here. - - if (m_children == 0) - { - m_nodeMBR = m_pTree->m_infiniteRegion; - } - else //if (m_pTree->m_bTightMBRs && m_nodeMBR.touchesRegion(*ptrR)) - { - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_pTree->m_currentTime, *(m_ptrMBR[cChild])) == true); - } -#endif - } -} - -bool Node::insertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable) -{ - if (m_children < m_capacity) - { - bool bNeedToAdjust = insertEntry(dataLength, pData, mbr, id); - m_pTree->writeNode(this); - - if (bNeedToAdjust && ! pathBuffer.empty()) - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - } - - return bNeedToAdjust; - } - else if (false && m_pTree->m_treeVariant == TPRV_RSTAR && ! pathBuffer.empty() && overflowTable[m_level] == 0) - { - overflowTable[m_level] = 1; - - std::vector vReinsert, vKeep; - reinsertData(dataLength, pData, mbr, id, vReinsert, vKeep); - - uint32_t lReinsert = static_cast(vReinsert.size()); - uint32_t lKeep = static_cast(vKeep.size()); - - byte** reinsertdata = 0; - MovingRegionPtr* reinsertmbr = 0; - id_type* reinsertid = 0; - uint32_t* reinsertlen = 0; - byte** keepdata = 0; - MovingRegionPtr* keepmbr = 0; - id_type* keepid = 0; - uint32_t* keeplen = 0; - - try - { - reinsertdata = new byte*[lReinsert]; - reinsertmbr = new MovingRegionPtr[lReinsert]; - reinsertid = new id_type[lReinsert]; - reinsertlen = new uint32_t[lReinsert]; - - keepdata = new byte*[m_capacity + 1]; - keepmbr = new MovingRegionPtr[m_capacity + 1]; - keepid = new id_type[m_capacity + 1]; - keeplen = new uint32_t[m_capacity + 1]; - } - catch (...) - { - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - delete[] keepdata; - delete[] keepmbr; - delete[] keepid; - delete[] keeplen; - throw; - } - - uint32_t cIndex; - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - reinsertlen[cIndex] = m_pDataLength[vReinsert[cIndex]]; - reinsertdata[cIndex] = m_pData[vReinsert[cIndex]]; - reinsertmbr[cIndex] = m_ptrMBR[vReinsert[cIndex]]; - reinsertid[cIndex] = m_pIdentifier[vReinsert[cIndex]]; - } - - for (cIndex = 0; cIndex < lKeep; ++cIndex) - { - keeplen[cIndex] = m_pDataLength[vKeep[cIndex]]; - keepdata[cIndex] = m_pData[vKeep[cIndex]]; - keepmbr[cIndex] = m_ptrMBR[vKeep[cIndex]]; - keepid[cIndex] = m_pIdentifier[vKeep[cIndex]]; - } - - delete[] m_pDataLength; - delete[] m_pData; - delete[] m_ptrMBR; - delete[] m_pIdentifier; - - m_pDataLength = keeplen; - m_pData = keepdata; - m_ptrMBR = keepmbr; - m_pIdentifier = keepid; - m_children = lKeep; - m_totalDataLength = 0; - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) m_totalDataLength += m_pDataLength[cChild]; - - m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < m_nodeMBR.m_dimension; ++cDim) - { - m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - m_nodeMBR.m_pLow[cDim] = std::min(m_nodeMBR.m_pLow[cDim], m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pHigh[cDim] = std::max(m_nodeMBR.m_pHigh[cDim], m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_nodeMBR.m_startTime)); - m_nodeMBR.m_pVLow[cDim] = std::min(m_nodeMBR.m_pVLow[cDim], m_ptrMBR[cChild]->m_pVLow[cDim]); - m_nodeMBR.m_pVHigh[cDim] = std::max(m_nodeMBR.m_pVHigh[cDim], m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < m_children; ++cChild) - { - assert(m_nodeMBR.containsRegionAfterTime(m_nodeMBR.m_startTime, *(m_ptrMBR[cChild]))); - } -#endif - - m_pTree->writeNode(this); - - // Divertion from R*-Tree algorithm here. First adjust - // the path to the root, then start reinserts, to avoid complicated handling - // of changes to the same node from multiple insertions. - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(this, pathBuffer); - - for (cIndex = 0; cIndex < lReinsert; ++cIndex) - { - m_pTree->insertData_impl( - reinsertlen[cIndex], reinsertdata[cIndex], - *(reinsertmbr[cIndex]), reinsertid[cIndex], - m_level, overflowTable); - } - - delete[] reinsertdata; - delete[] reinsertmbr; - delete[] reinsertid; - delete[] reinsertlen; - - return true; - } - else - { - NodePtr n; - NodePtr nn; - split(dataLength, pData, mbr, id, n, nn); - - if (pathBuffer.empty()) - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = -1; - nn->m_identifier = -1; - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - assert(n->m_nodeMBR.containsRegionAfterTime(n->m_nodeMBR.m_startTime, *(n->m_ptrMBR[cChild])) == true); - } - for (uint32_t cChild = 0; cChild < nn->m_children; ++cChild) - { - assert(nn->m_nodeMBR.containsRegionAfterTime(nn->m_nodeMBR.m_startTime, *(nn->m_ptrMBR[cChild])) == true); - } -#endif - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - NodePtr ptrR = m_pTree->m_indexPool.acquire(); - if (ptrR.get() == 0) - { - ptrR = NodePtr(new Index(m_pTree, m_pTree->m_rootID, m_level + 1), &(m_pTree->m_indexPool)); - } - else - { - //ptrR->m_pTree = m_pTree; - ptrR->m_identifier = m_pTree->m_rootID; - ptrR->m_level = m_level + 1; - ptrR->m_nodeMBR = m_pTree->m_infiniteRegion; - } - - ptrR->insertEntry(0, 0, n->m_nodeMBR, n->m_identifier); - ptrR->insertEntry(0, 0, nn->m_nodeMBR, nn->m_identifier); - - m_pTree->writeNode(ptrR.get()); - - m_pTree->m_stats.m_nodesInLevel[m_level] = 2; - m_pTree->m_stats.m_nodesInLevel.push_back(1); - m_pTree->m_stats.m_treeHeight = m_level + 2; - } - else - { - n->m_level = m_level; - nn->m_level = m_level; - n->m_identifier = m_identifier; - nn->m_identifier = -1; - -#ifndef NDEBUG - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - assert(n->m_nodeMBR.containsRegionAfterTime(n->m_nodeMBR.m_startTime, *(n->m_ptrMBR[cChild])) == true); - } - for (uint32_t cChild = 0; cChild < nn->m_children; ++cChild) - { - assert(nn->m_nodeMBR.containsRegionAfterTime(nn->m_nodeMBR.m_startTime, *(nn->m_ptrMBR[cChild])) == true); - } -#endif - - m_pTree->writeNode(n.get()); - m_pTree->writeNode(nn.get()); - - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrN = m_pTree->readNode(cParent); - Index* p = static_cast(ptrN.get()); - p->adjustTree(n.get(), nn.get(), pathBuffer, overflowTable); - } - - return true; - } -} - -void Node::reinsertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& reinsert, std::vector& keep) -{ - ReinsertEntry** v = new ReinsertEntry*[m_capacity + 1]; - - m_pDataLength[m_children] = dataLength; - m_pData[m_children] = pData; - m_ptrMBR[m_children] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_children]) = mbr; - m_pIdentifier[m_children] = id; - - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - for (uint32_t cChild = 0; cChild < m_capacity + 1; ++cChild) - { - try - { - v[cChild] = new ReinsertEntry(cChild, 0.0); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete v[i]; - delete[] v; - throw; - } - - v[cChild]->m_dist = m_nodeMBR.getCenterDistanceInTime(ivT, *(m_ptrMBR[cChild])); - } - - // sort by increasing order of distances. - ::qsort(v, m_capacity + 1, sizeof(ReinsertEntry*), ReinsertEntry::compareReinsertEntry); - - uint32_t cReinsert = static_cast(std::floor((m_capacity + 1) * m_pTree->m_reinsertFactor)); - - uint32_t cCount; - - for (cCount = 0; cCount < cReinsert; ++cCount) - { - reinsert.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - for (cCount = cReinsert; cCount < m_capacity + 1; ++cCount) - { - keep.push_back(v[cCount]->m_index); - delete v[cCount]; - } - - delete[] v; -} - -/* -void Node::rtreeSplit(uint32_t dataLength, byte* pData, Region& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - uint32_t cChild; - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - // use this mask array for marking visited entries. - byte* mask = new byte[m_capacity + 1]; - memset(mask, 0, m_capacity + 1); - - // insert new data in the node for easier manipulation. Data arrays are always - // by one larger than node capacity. - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - - // initialize each group with the seed entries. - uint32_t seed1, seed2; - pickSeeds(seed1, seed2); - - group1.push_back(seed1); - group2.push_back(seed2); - - mask[seed1] = 1; - mask[seed2] = 1; - - // find MBR of each group. - RegionPtr mbr1 = m_pTree->m_regionPool.acquire(); - *mbr1 = *(m_ptrMBR[seed1]); - RegionPtr mbr2 = m_pTree->m_regionPool.acquire(); - *mbr2 = *(m_ptrMBR[seed2]); - - // count how many entries are left unchecked (exclude the seeds here.) - uint32_t cRemaining = m_capacity + 1 - 2; - - while (cRemaining > 0) - { - if (minimumLoad - group1.size() == cRemaining) - { - // all remaining entries must be assigned to group1 to comply with minimun load requirement. - for (cChild = 0; cChild < m_capacity + 1; ++cChild) - { - if (mask[cChild] == 0) - { - group1.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else if (minimumLoad - group2.size() == cRemaining) - { - // all remaining entries must be assigned to group2 to comply with minimun load requirement. - for (cChild = 0; cChild < m_capacity + 1; ++cChild) - { - if (mask[cChild] == 0) - { - group2.push_back(cChild); - mask[cChild] = 1; - --cRemaining; - } - } - } - else - { - // For all remaining entries compute the difference of the cost of grouping an - // entry in either group. When done, choose the entry that yielded the maximum - // difference. In case of linear split, select any entry (e.g. the first one.) - uint32_t sel; - double md1 = 0.0, md2 = 0.0; - double m = -std::numeric_limits::max(); - double d1, d2, d; - double a1 = mbr1->getArea(); - double a2 = mbr2->getArea(); - - RegionPtr a = m_pTree->m_regionPool.acquire(); - RegionPtr b = m_pTree->m_regionPool.acquire(); - - for (cChild = 0; cChild < m_capacity + 1; ++cChild) - { - if (mask[cChild] == 0) - { - mbr1->getCombinedRegion(*a, *(m_ptrMBR[cChild])); - d1 = a->getArea() - a1; - mbr2->getCombinedRegion(*b, *(m_ptrMBR[cChild])); - d2 = b->getArea() - a2; - d = std::abs(d1 - d2); - - if (d > m) - { - m = d; - md1 = d1; md2 = d2; - sel = cChild; - if (m_pTree->m_treeVariant== RV_LINEAR || m_pTree->m_treeVariant == RV_RSTAR) break; - } - } - } - - // determine the group where we should add the new entry. - int32_t group = -1; - - if (md1 < md2) - { - group1.push_back(sel); - group = 1; - } - else if (md2 < md1) - { - group2.push_back(sel); - group = 2; - } - else if (a1 < a2) - { - group1.push_back(sel); - group = 1; - } - else if (a2 < a1) - { - group2.push_back(sel); - group = 2; - } - else if (group1.size() < group2.size()) - { - group1.push_back(sel); - group = 1; - } - else if (group2.size() < group1.size()) - { - group2.push_back(sel); - group = 2; - } - else - { - group1.push_back(sel); - group = 1; - } - mask[sel] = 1; - --cRemaining; - if (group == 1) - { - mbr1->combineRegion(*(m_ptrMBR[sel])); - } - else - { - mbr2->combineRegion(*(m_ptrMBR[sel])); - } - } - } - - delete[] mask; -} -*/ - -void Node::rstarSplit(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& group1, std::vector& group2) -{ - RstarSplitEntry** dataLow = 0; - RstarSplitEntry** dataHigh = 0; - RstarSplitEntry** dataVLow = 0; - RstarSplitEntry** dataVHigh = 0; - - try - { - dataLow = new RstarSplitEntry*[m_capacity + 1]; - dataHigh = new RstarSplitEntry*[m_capacity + 1]; - dataVLow = new RstarSplitEntry*[m_capacity + 1]; - dataVHigh = new RstarSplitEntry*[m_capacity + 1]; - } - catch (...) - { - delete[] dataLow; - delete[] dataHigh; - delete[] dataVLow; - delete[] dataVHigh; - throw; - } - - m_pDataLength[m_capacity] = dataLength; - m_pData[m_capacity] = pData; - m_ptrMBR[m_capacity] = m_pTree->m_regionPool.acquire(); - *(m_ptrMBR[m_capacity]) = mbr; - m_pIdentifier[m_capacity] = id; - - uint32_t nodeSPF = static_cast(std::floor((m_capacity + 1) * m_pTree->m_splitDistributionFactor)); - uint32_t splitDistribution = (m_capacity + 1) - (2 * nodeSPF) + 2; - - libsupermesh::Tools::Interval ivT(m_pTree->m_currentTime, m_pTree->m_currentTime + m_pTree->m_horizon); - - uint32_t cChild = 0, cDim, cIndex; - - for (cChild = 0; cChild <= m_capacity; ++cChild) - { - try - { - dataLow[cChild] = new RstarSplitEntry(m_ptrMBR[cChild].get(), cChild, 0); - } - catch (...) - { - for (uint32_t i = 0; i < cChild; ++i) delete dataLow[i]; - delete[] dataLow; - delete[] dataHigh; - throw; - } - - dataHigh[cChild] = dataLow[cChild]; - dataVLow[cChild] = dataLow[cChild]; - dataVHigh[cChild] = dataLow[cChild]; - } - - double minimumMargin = std::numeric_limits::max(); - uint32_t splitAxis = std::numeric_limits::max(); - uint32_t sortOrder = std::numeric_limits::max(); - - // chooseSplitAxis. - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareLow); - ::qsort(dataHigh, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareHigh); - ::qsort(dataVLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVLow); - ::qsort(dataVHigh, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVHigh); - - // calculate sum of margins and overlap for all distributions. - double marginl = 0.0; - double marginh = 0.0; - double marginvl = 0.0; - double marginvh = 0.0; - - MovingRegion bbl1, bbl2, bbh1, bbh2; - MovingRegion bbvl1, bbvl2, bbvh1, bbvh2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bbl1 = *(dataLow[0]->m_pRegion); - bbh1 = *(dataHigh[0]->m_pRegion); - bbvl1 = *(dataVLow[0]->m_pRegion); - bbvh1 = *(dataVHigh[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bbl1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - bbh1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataHigh[cIndex]->m_pRegion)); - bbvl1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVLow[cIndex]->m_pRegion)); - bbvh1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVHigh[cIndex]->m_pRegion)); - } - - bbl2 = *(dataLow[l]->m_pRegion); - bbh2 = *(dataHigh[l]->m_pRegion); - bbvl2 = *(dataVLow[l]->m_pRegion); - bbvh2 = *(dataVHigh[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bbl2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - bbh2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataHigh[cIndex]->m_pRegion)); - bbvl2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVLow[cIndex]->m_pRegion)); - bbvh2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataVHigh[cIndex]->m_pRegion)); - } - - marginl += bbl1.getProjectedSurfaceAreaInTime(ivT) + bbl2.getProjectedSurfaceAreaInTime(ivT); - marginh += bbh1.getProjectedSurfaceAreaInTime(ivT) + bbh2.getProjectedSurfaceAreaInTime(ivT); - marginvl += bbvl1.getProjectedSurfaceAreaInTime(ivT) + bbvl2.getProjectedSurfaceAreaInTime(ivT); - marginvh += bbvh1.getProjectedSurfaceAreaInTime(ivT) + bbvh2.getProjectedSurfaceAreaInTime(ivT); - } // for (cChild) - - double margin = std::min(std::min(marginl, marginh), std::min(marginvl, marginvh)); - - // keep minimum margin as split axis. - if (margin < minimumMargin) - { - minimumMargin = margin; - splitAxis = cDim; - if (marginl < marginh && marginl < marginvl && marginl < marginvh) sortOrder = 0; - else if (marginh < marginl && marginh < marginvl && marginh < marginvh) sortOrder = 1; - else if (marginvl < marginl && marginvl < marginh && marginvl < marginvh) sortOrder = 2; - else if (marginvh < marginl && marginvh < marginh && marginvh < marginvl) sortOrder = 3; - } - - // increase the dimension according to which the data entries should be sorted. - for (cChild = 0; cChild <= m_capacity; ++cChild) - { - dataLow[cChild]->m_sortDim = cDim + 1; - } - } // for (cDim) - - for (cChild = 0; cChild <= m_capacity; ++cChild) - { - dataLow[cChild]->m_sortDim = splitAxis; - } - - if (sortOrder == 0) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareLow); - else if (sortOrder == 1) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareHigh); - else if (sortOrder == 2) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVLow); - else if (sortOrder == 3) - ::qsort(dataLow, m_capacity + 1, sizeof(RstarSplitEntry*), RstarSplitEntry::compareVHigh); - - double ma = std::numeric_limits::max(); - double mo = std::numeric_limits::max(); - uint32_t splitPoint = std::numeric_limits::max(); - - MovingRegion bb1, bb2; - - for (cChild = 1; cChild <= splitDistribution; ++cChild) - { - uint32_t l = nodeSPF - 1 + cChild; - - bb1 = *(dataLow[0]->m_pRegion); - - for (cIndex = 1; cIndex < l; ++cIndex) - { - bb1.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - } - - bb2 = *(dataLow[l]->m_pRegion); - - for (cIndex = l + 1; cIndex <= m_capacity; ++cIndex) - { - bb2.combineRegionAfterTime(m_pTree->m_currentTime, *(dataLow[cIndex]->m_pRegion)); - } - - double o = bb1.getIntersectingAreaInTime(ivT, bb2); - - if (o < mo) - { - splitPoint = cChild; - mo = o; - ma = bb1.getAreaInTime(ivT) + bb2.getAreaInTime(ivT); - } - else if (o == mo) - { - double a = bb1.getAreaInTime(ivT) + bb2.getAreaInTime(ivT); - - if (a < ma) - { - splitPoint = cChild; - ma = a; - } - } - } // for (cChild) - - uint32_t l1 = nodeSPF - 1 + splitPoint; - - for (cIndex = 0; cIndex < l1; ++cIndex) - { - group1.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - for (cIndex = l1; cIndex <= m_capacity; ++cIndex) - { - group2.push_back(dataLow[cIndex]->m_index); - delete dataLow[cIndex]; - } - - delete[] dataLow; - delete[] dataHigh; - delete[] dataVLow; - delete[] dataVHigh; -} - -/* -void Node::pickSeeds(uint32_t& index1, uint32_t& index2) -{ - double separation = -std::numeric_limits::max(); - double inefficiency = -std::numeric_limits::max(); - uint32_t cDim, cChild, cIndex; - - switch (m_pTree->m_treeVariant) - { - case RV_LINEAR: - case RV_RSTAR: - for (cDim = 0; cDim < m_pTree->m_dimension; ++cDim) - { - double leastLower = m_ptrMBR[0]->m_pLow[cDim]; - double greatestUpper = m_ptrMBR[0]->m_pHigh[cDim]; - uint32_t greatestLower = 0; - uint32_t leastUpper = 0; - double width; - - for (cChild = 1; cChild <= m_capacity; ++cChild) - { - if (m_ptrMBR[cChild]->m_pLow[cDim] > m_ptrMBR[greatestLower]->m_pLow[cDim]) greatestLower = cChild; - if (m_ptrMBR[cChild]->m_pHigh[cDim] < m_ptrMBR[leastUpper]->m_pHigh[cDim]) leastUpper = cChild; - - leastLower = std::min(m_ptrMBR[cChild]->m_pLow[cDim], leastLower); - greatestUpper = std::max(m_ptrMBR[cChild]->m_pHigh[cDim], greatestUpper); - } - - width = greatestUpper - leastLower; - if (width <= 0) width = 1; - - double f = (m_ptrMBR[greatestLower]->m_pLow[cDim] - m_ptrMBR[leastUpper]->m_pHigh[cDim]) / width; - - if (f > separation) - { - index1 = leastUpper; - index2 = greatestLower; - separation = f; - } - } // for (cDim) - - if (index1 == index2) - { - if (index2 == 0) ++index2; - else --index2; - } - - break; - case RV_QUADRATIC: - // for each pair of Regions (account for overflow Region too!) - for (cChild = 0; cChild < m_capacity; ++cChild) - { - double a = m_ptrMBR[cChild]->getArea(); - - for (cIndex = cChild + 1; cIndex <= m_capacity; ++cIndex) - { - // get the combined MBR of those two entries. - Region r; - m_ptrMBR[cChild]->getCombinedRegion(r, *(m_ptrMBR[cIndex])); - - // find the inefficiency of grouping these entries together. - double d = r.getArea() - a - m_ptrMBR[cIndex]->getArea(); - - if (d > inefficiency) - { - inefficiency = d; - index1 = cChild; - index2 = cIndex; - } - } // for (cIndex) - } // for (cChild) - - break; - default: - throw libsupermesh::Tools::NotSupportedException("Node::pickSeeds: Tree variant not supported."); - } -} -*/ - -void Node::condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis) -{ - uint32_t minimumLoad = static_cast(std::floor(m_capacity * m_pTree->m_fillFactor)); - - if (pathBuffer.empty()) - { - // eliminate root if it has only one child. - if (m_level != 0 && m_children == 1) - { - NodePtr ptrN = m_pTree->readNode(m_pIdentifier[0]); - m_pTree->deleteNode(ptrN.get()); - ptrN->m_identifier = m_pTree->m_rootID; - m_pTree->writeNode(ptrN.get()); - - m_pTree->m_stats.m_nodesInLevel.pop_back(); - m_pTree->m_stats.m_treeHeight -= 1; - // HACK: pending deleteNode for deleted child will decrease nodesInLevel, later on. - m_pTree->m_stats.m_nodesInLevel[m_pTree->m_stats.m_treeHeight - 1] = 2; - } - } - else - { - id_type cParent = pathBuffer.top(); pathBuffer.pop(); - NodePtr ptrParent = m_pTree->readNode(cParent); - Index* p = static_cast(ptrParent.get()); - - // find the entry in the parent, that points to this node. - uint32_t child; - - for (child = 0; child != p->m_children; ++child) - { - if (p->m_pIdentifier[child] == m_identifier) break; - } - - if (m_children < minimumLoad) - { - // used space less than the minimum - // 1. eliminate node entry from the parent. deleteEntry will fix the parent's MBR. - p->deleteEntry(child); - // 2. add this node to the stack in order to reinsert its entries. - toReinsert.push(ptrThis); - } - else - { - // adjust the entry in 'p' to contain the new bounding region of this node. - *(p->m_ptrMBR[child]) = m_nodeMBR; - - // global recalculation necessary since the MBR can only shrink in size, - // due to data removal. - //if (m_pTree->m_bTightMBRs) - //{ - - p->m_nodeMBR.m_startTime = m_pTree->m_currentTime; - - for (uint32_t cDim = 0; cDim < p->m_nodeMBR.m_dimension; ++cDim) - { - p->m_nodeMBR.m_pLow[cDim] = std::numeric_limits::max(); - p->m_nodeMBR.m_pHigh[cDim] = -std::numeric_limits::max(); - p->m_nodeMBR.m_pVLow[cDim] = std::numeric_limits::max(); - p->m_nodeMBR.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - p->m_nodeMBR.m_pLow[cDim] = std::min(p->m_nodeMBR.m_pLow[cDim], p->m_ptrMBR[cChild]->getExtrapolatedLow(cDim, m_pTree->m_currentTime)); - p->m_nodeMBR.m_pHigh[cDim] = std::max(p->m_nodeMBR.m_pHigh[cDim], p->m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, m_pTree->m_currentTime)); - p->m_nodeMBR.m_pVLow[cDim] = std::min(p->m_nodeMBR.m_pVLow[cDim], p->m_ptrMBR[cChild]->m_pVLow[cDim]); - p->m_nodeMBR.m_pVHigh[cDim] = std::max(p->m_nodeMBR.m_pVHigh[cDim], p->m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - p->m_nodeMBR.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - p->m_nodeMBR.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - //} - } - - // write parent node back to storage. - m_pTree->writeNode(p); - - p->condenseTree(toReinsert, pathBuffer, ptrParent); - } -} diff --git a/spatialindex-1.8.5/src/tprtree/Node.h b/spatialindex-1.8.5/src/tprtree/Node.h deleted file mode 100644 index df31050..0000000 --- a/spatialindex-1.8.5/src/tprtree/Node.h +++ /dev/null @@ -1,211 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class TPRTree; - class Leaf; - class Index; - class Node; - - typedef libsupermesh::Tools::PoolPointer NodePtr; - - class Node : public libsupermesh::SpatialIndex::INode - { - public: - virtual ~Node(); - - // - // libsupermesh::Tools::IObject interface - // - virtual libsupermesh::Tools::IObject* clone(); - - // - // libsupermesh::Tools::ISerializable interface - // - virtual uint32_t getByteArraySize(); - virtual void loadFromByteArray(const byte* data); - virtual void storeToByteArray(byte** data, uint32_t& len); - - // - // libsupermesh::SpatialIndex::IEntry interface - // - virtual id_type getIdentifier() const; - virtual void getShape(IShape** out) const; - - // - // libsupermesh::SpatialIndex::INode interface - // - virtual uint32_t getChildrenCount() const; - virtual id_type getChildIdentifier(uint32_t index) const; - virtual void getChildShape(uint32_t index, IShape** out) const; - virtual void getChildData(uint32_t index, uint32_t& length, byte** data) const; - virtual uint32_t getLevel() const; - virtual bool isIndex() const; - virtual bool isLeaf() const; - - private: - Node(); - Node(TPRTree* pTree, id_type id, uint32_t level, uint32_t capacity); - - virtual Node& operator=(const Node&); - - virtual bool insertEntry(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id); - virtual void deleteEntry(uint32_t index); - - virtual bool insertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::stack& pathBuffer, byte* overflowTable); - virtual void reinsertData(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& reinsert, std::vector& keep); - - virtual void rstarSplit(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, std::vector& group1, std::vector& group2); - - virtual void condenseTree(std::stack& toReinsert, std::stack& pathBuffer, NodePtr& ptrThis); - - virtual NodePtr chooseSubtree(const MovingRegion& mbr, uint32_t level, std::stack& pathBuffer) = 0; - virtual NodePtr findLeaf(const MovingRegion& mbr, id_type id, std::stack& pathBuffer) = 0; - - virtual void split(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, NodePtr& left, NodePtr& right) = 0; - - TPRTree* m_pTree; - // Parent of all nodes. - - uint32_t m_level; - // The level of the node in the tree. - // Leaves are always at level 0. - - id_type m_identifier; - // The unique ID of this node. - - uint32_t m_children; - // The number of children pointed by this node. - - uint32_t m_capacity; - // Specifies the node capacity. - - MovingRegion m_nodeMBR; - // The minimum bounding region enclosing all data contained in the node. - - byte** m_pData; - // The data stored in the node. - - MovingRegionPtr* m_ptrMBR; - // The corresponding data MBRs. - - id_type* m_pIdentifier; - // The corresponding data identifiers. - - uint32_t* m_pDataLength; - - uint32_t m_totalDataLength; - - class RstarSplitEntry - { - public: - MovingRegion* m_pRegion; - uint32_t m_index; - uint32_t m_sortDim; - - RstarSplitEntry(MovingRegion* pr, uint32_t index, uint32_t dimension) - : m_pRegion(pr), m_index(index), m_sortDim(dimension) {} - - static int compareLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] < pe2->m_pRegion->m_pLow[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pLow[pe1->m_sortDim] > pe2->m_pRegion->m_pLow[pe1->m_sortDim]) return 1; - return 0; - } - - static int compareHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pHigh[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pHigh[pe1->m_sortDim]) return 1; - return 0; - } - - static int compareVLow(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pVLow[pe1->m_sortDim] < pe2->m_pRegion->m_pVLow[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pVLow[pe1->m_sortDim] > pe2->m_pRegion->m_pVLow[pe1->m_sortDim]) return 1; - return 0; - } - - static int compareVHigh(const void* pv1, const void* pv2) - { - RstarSplitEntry* pe1 = * (RstarSplitEntry**) pv1; - RstarSplitEntry* pe2 = * (RstarSplitEntry**) pv2; - - if (pe1->m_pRegion->m_pVHigh[pe1->m_sortDim] < pe2->m_pRegion->m_pVHigh[pe1->m_sortDim]) return -1; - if (pe1->m_pRegion->m_pVHigh[pe1->m_sortDim] > pe2->m_pRegion->m_pVHigh[pe1->m_sortDim]) return 1; - return 0; - } - }; // RstarSplitEntry - - class ReinsertEntry - { - public: - uint32_t m_index; - double m_dist; - - ReinsertEntry(uint32_t index, double dist) : m_index(index), m_dist(dist) {} - - static int compareReinsertEntry(const void* pv1, const void* pv2) - { - ReinsertEntry* pe1 = * (ReinsertEntry**) pv1; - ReinsertEntry* pe2 = * (ReinsertEntry**) pv2; - - if (pe1->m_dist < pe2->m_dist) return -1; - if (pe1->m_dist > pe2->m_dist) return 1; - return 0; - } - }; // ReinsertEntry - - // Needed to access protected members without having to cast from Node. - // It is more efficient than using member functions to access protected members. - friend class TPRTree; - friend class Leaf; - friend class Index; - friend class libsupermesh::Tools::PointerPool; - }; // Node - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/PointerPoolNode.h b/spatialindex-1.8.5/src/tprtree/PointerPoolNode.h deleted file mode 100644 index 68ab80c..0000000 --- a/spatialindex-1.8.5/src/tprtree/PointerPoolNode.h +++ /dev/null @@ -1,145 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Node.h" - -namespace libsupermesh { namespace Tools -{ - using namespace libsupermesh::SpatialIndex; - template<> class PointerPool - { - public: - explicit PointerPool(uint32_t capacity) : m_capacity(capacity) - { - #ifndef NDEBUG - m_hits = 0; - m_misses = 0; - m_pointerCount = 0; - #endif - } - - ~PointerPool() - { - assert(m_pool.size() <= m_capacity); - - while (! m_pool.empty()) - { - TPRTree::Node* x = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - --m_pointerCount; - #endif - delete x; - } - - #ifndef NDEBUG - std::cerr << "Lost pointers: " << m_pointerCount << std::endl; - #endif - } - - PoolPointer acquire() - { - if (! m_pool.empty()) - { - TPRTree::Node* p = m_pool.top(); m_pool.pop(); - #ifndef NDEBUG - ++m_hits; - #endif - - return PoolPointer(p, this); - } - #ifndef NDEBUG - else - { - // fixme: well sort of... - ++m_pointerCount; - ++m_misses; - } - #endif - - return PoolPointer(); - } - - void release(TPRTree::Node* p) - { - if (p != 0) - { - if (m_pool.size() < m_capacity) - { - if (p->m_pData != 0) - { - for (uint32_t cChild = 0; cChild < p->m_children; ++cChild) - { - if (p->m_pData[cChild] != 0) delete[] p->m_pData[cChild]; - } - } - - p->m_level = 0; - p->m_identifier = -1; - p->m_children = 0; - p->m_totalDataLength = 0; - - m_pool.push(p); - } - else - { - #ifndef NDEBUG - --m_pointerCount; - #endif - delete p; - } - - assert(m_pool.size() <= m_capacity); - } - } - - uint32_t getCapacity() const { return m_capacity; } - void setCapacity(uint32_t c) - { - assert (c >= 0); - m_capacity = c; - } - - protected: - uint32_t m_capacity; - std::stack m_pool; - - #ifndef NDEBUG - public: - uint64_t m_hits; - uint64_t m_misses; - uint64_t m_pointerCount; - #endif - }; -} } - diff --git a/spatialindex-1.8.5/src/tprtree/Statistics.cc b/spatialindex-1.8.5/src/tprtree/Statistics.cc deleted file mode 100644 index 863c81b..0000000 --- a/spatialindex-1.8.5/src/tprtree/Statistics.cc +++ /dev/null @@ -1,183 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include "Statistics.h" - -using namespace libsupermesh::SpatialIndex::TPRTree; - -Statistics::Statistics() -{ - reset(); -} - -Statistics::Statistics(const Statistics& s) -{ - m_reads = s.m_reads; - m_writes = s.m_writes; - m_splits = s.m_splits; - m_hits = s.m_hits; - m_misses = s.m_misses; - m_nodes = s.m_nodes; - m_adjustments = s.m_adjustments; - m_queryResults = s.m_queryResults; - m_data = s.m_data; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; -} - -Statistics::~Statistics() -{ -} - -Statistics& Statistics::operator=(const Statistics& s) -{ - if (this != &s) - { - m_reads = s.m_reads; - m_writes = s.m_writes; - m_splits = s.m_splits; - m_hits = s.m_hits; - m_misses = s.m_misses; - m_nodes = s.m_nodes; - m_adjustments = s.m_adjustments; - m_queryResults = s.m_queryResults; - m_data = s.m_data; - m_treeHeight = s.m_treeHeight; - m_nodesInLevel = s.m_nodesInLevel; - } - - return *this; -} - -uint64_t Statistics::getReads() const -{ - return m_reads; -} - -uint64_t Statistics::getWrites() const -{ - return m_writes; -} - -uint32_t Statistics::getNumberOfNodes() const -{ - return m_nodes; -} - -uint64_t Statistics::getNumberOfData() const -{ - return m_data; -} - -uint64_t Statistics::getSplits() const -{ - return m_splits; -} - -uint64_t Statistics::getHits() const -{ - return m_hits; -} - -uint64_t Statistics::getMisses() const -{ - return m_misses; -} - -uint64_t Statistics::getAdjustments() const -{ - return m_adjustments; -} - -uint64_t Statistics::getQueryResults() const -{ - return m_queryResults; -} - -uint32_t Statistics::getTreeHeight() const -{ - return m_treeHeight; -} - -uint32_t Statistics::getNumberOfNodesInLevel(uint32_t l) const -{ - uint32_t cNodes; - try - { - cNodes = m_nodesInLevel.at(l); - } - catch (...) - { - throw libsupermesh::Tools::IndexOutOfBoundsException(l); - } - - return cNodes; -} - -void Statistics::reset() -{ - m_reads = 0; - m_writes = 0; - m_splits = 0; - m_hits = 0; - m_misses = 0; - m_nodes = 0; - m_adjustments = 0; - m_queryResults = 0; - m_data = 0; - m_treeHeight = 0; - m_nodesInLevel.clear(); -} - -std::ostream& libsupermesh::SpatialIndex::TPRTree::operator<<(std::ostream& os, const Statistics& s) -{ - os << "Reads: " << s.m_reads << std::endl - << "Writes: " << s.m_writes << std::endl - << "Hits: " << s.m_hits << std::endl - << "Misses: " << s.m_misses << std::endl - << "Tree height: " << s.m_treeHeight << std::endl - << "Number of data: " << s.m_data << std::endl - << "Number of nodes: " << s.m_nodes << std::endl; - - for (uint32_t cLevel = 0; cLevel < s.m_treeHeight; ++cLevel) - { - os << "Level " << cLevel << " pages: " << s.m_nodesInLevel[cLevel] << std::endl; - } - - os << "Splits: " << s.m_splits << std::endl - << "Adjustments: " << s.m_adjustments << std::endl - << "Query results: " << s.m_queryResults << std::endl; - - return os; -} diff --git a/spatialindex-1.8.5/src/tprtree/Statistics.h b/spatialindex-1.8.5/src/tprtree/Statistics.h deleted file mode 100644 index 6b8bc8c..0000000 --- a/spatialindex-1.8.5/src/tprtree/Statistics.h +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class TPRTree; - class Node; - class Leaf; - class Index; - - class Statistics : public libsupermesh::SpatialIndex::IStatistics - { - public: - Statistics(); - Statistics(const Statistics&); - virtual ~Statistics(); - Statistics& operator=(const Statistics&); - - // - // IStatistics interface - // - virtual uint64_t getReads() const; - virtual uint64_t getWrites() const; - virtual uint32_t getNumberOfNodes() const; - virtual uint64_t getNumberOfData() const; - - virtual uint64_t getSplits() const; - virtual uint64_t getHits() const; - virtual uint64_t getMisses() const; - virtual uint64_t getAdjustments() const; - virtual uint64_t getQueryResults() const; - virtual uint32_t getTreeHeight() const; - virtual uint32_t getNumberOfNodesInLevel(uint32_t l) const; - - private: - void reset(); - - uint64_t m_reads; - - uint64_t m_writes; - - uint64_t m_splits; - - uint64_t m_hits; - - uint64_t m_misses; - - uint32_t m_nodes; - - uint64_t m_adjustments; - - uint64_t m_queryResults; - - uint64_t m_data; - - uint32_t m_treeHeight; - - std::vector m_nodesInLevel; - - friend class TPRTree; - friend class Node; - friend class Index; - friend class Leaf; - friend class BulkLoader; - - friend std::ostream& operator<<(std::ostream& os, const Statistics& s); - }; // Statistics - - std::ostream& operator<<(std::ostream& os, const Statistics& s); - } -} } diff --git a/spatialindex-1.8.5/src/tprtree/TPRTree.cc b/spatialindex-1.8.5/src/tprtree/TPRTree.cc deleted file mode 100644 index 51375cb..0000000 --- a/spatialindex-1.8.5/src/tprtree/TPRTree.cc +++ /dev/null @@ -1,1293 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -#include -#include "Node.h" -#include "Leaf.h" -#include "Index.h" -#include "TPRTree.h" - -#include - -using namespace libsupermesh::SpatialIndex::TPRTree; - -libsupermesh::SpatialIndex::TPRTree::Data::Data(uint32_t len, byte* pData, MovingRegion& r, id_type id) - : m_id(id), m_region(r), m_pData(0), m_dataLength(len) -{ - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, pData, m_dataLength); - } -} - -libsupermesh::SpatialIndex::TPRTree::Data::~Data() -{ - delete[] m_pData; -} - -libsupermesh::SpatialIndex::TPRTree::Data* libsupermesh::SpatialIndex::TPRTree::Data::clone() -{ - return new Data(m_dataLength, m_pData, m_region, m_id); -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::TPRTree::Data::getIdentifier() const -{ - return m_id; -} - -void libsupermesh::SpatialIndex::TPRTree::Data::getShape(IShape** out) const -{ - *out = new MovingRegion(m_region); -} - -void libsupermesh::SpatialIndex::TPRTree::Data::getData(uint32_t& len, byte** data) const -{ - len = m_dataLength; - *data = 0; - - if (m_dataLength > 0) - { - *data = new byte[m_dataLength]; - memcpy(*data, m_pData, m_dataLength); - } -} - -uint32_t libsupermesh::SpatialIndex::TPRTree::Data::getByteArraySize() -{ - return - sizeof(id_type) + - sizeof(uint32_t) + - m_dataLength + - m_region.getByteArraySize(); -} - -void libsupermesh::SpatialIndex::TPRTree::Data::loadFromByteArray(const byte* ptr) -{ - memcpy(&m_id, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - - delete[] m_pData; - m_pData = 0; - - memcpy(&m_dataLength, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - m_pData = new byte[m_dataLength]; - memcpy(m_pData, ptr, m_dataLength); - ptr += m_dataLength; - } - - m_region.loadFromByteArray(ptr); -} - -void libsupermesh::SpatialIndex::TPRTree::Data::storeToByteArray(byte** data, uint32_t& len) -{ - // it is thread safe this way. - uint32_t regionsize; - byte* regiondata = 0; - m_region.storeToByteArray(®iondata, regionsize); - - len = sizeof(id_type) + sizeof(uint32_t) + m_dataLength + regionsize; - - *data = new byte[len]; - byte* ptr = *data; - - memcpy(ptr, &m_id, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_dataLength, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - if (m_dataLength > 0) - { - memcpy(ptr, m_pData, m_dataLength); - ptr += m_dataLength; - } - - memcpy(ptr, regiondata, regionsize); - delete[] regiondata; - // ptr += regionsize; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::TPRTree::returnTPRTree(libsupermesh::SpatialIndex::IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::SpatialIndex::ISpatialIndex* si = new libsupermesh::SpatialIndex::TPRTree::TPRTree(sm, ps); - return si; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::TPRTree::createNewTPRTree( - libsupermesh::SpatialIndex::IStorageManager& sm, - double fillFactor, - uint32_t indexCapacity, - uint32_t leafCapacity, - uint32_t dimension, - TPRTreeVariant rv, - double horizon, - id_type& indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = fillFactor; - ps.setProperty("FillFactor", var); - - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = horizon; - ps.setProperty("Horizon", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = indexCapacity; - ps.setProperty("IndexCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = leafCapacity; - ps.setProperty("LeafCapacity", var); - - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = dimension; - ps.setProperty("Dimension", var); - - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = rv; - ps.setProperty("TreeVariant", var); - - ISpatialIndex* ret = returnTPRTree(sm, ps); - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var = ps.getProperty("IndexIdentifier"); - indexIdentifier = var.m_val.llVal; - - return ret; -} - -libsupermesh::SpatialIndex::ISpatialIndex* libsupermesh::SpatialIndex::TPRTree::loadTPRTree(IStorageManager& sm, id_type indexIdentifier) -{ - libsupermesh::Tools::Variant var; - libsupermesh::Tools::PropertySet ps; - - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = indexIdentifier; - ps.setProperty("IndexIdentifier", var); - - return returnTPRTree(sm, ps); -} - -libsupermesh::SpatialIndex::TPRTree::TPRTree::TPRTree(IStorageManager& sm, libsupermesh::Tools::PropertySet& ps) : - m_pStorageManager(&sm), - m_rootID(StorageManager::NewPage), - m_headerID(StorageManager::NewPage), - m_treeVariant(TPRV_RSTAR), - m_fillFactor(0.7), - m_indexCapacity(100), - m_leafCapacity(100), - m_nearMinimumOverlapFactor(32), - m_splitDistributionFactor(0.4), - m_reinsertFactor(0.3), - m_dimension(2), - m_bTightMBRs(true), - m_currentTime(0.0), - m_horizon(20.0), - m_pointPool(500), - m_regionPool(1000), - m_indexPool(100), - m_leafPool(100) -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_init(&m_lock, NULL); -#endif - - libsupermesh::Tools::Variant var = ps.getProperty("IndexIdentifier"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType == libsupermesh::Tools::VT_LONGLONG) m_headerID = var.m_val.llVal; - else if (var.m_varType == libsupermesh::Tools::VT_LONG) m_headerID = var.m_val.lVal; - // for backward compatibility only. - else throw libsupermesh::Tools::IllegalArgumentException("TPRTree: Property IndexIdentifier must be libsupermesh::Tools::VT_LONGLONG"); - - initOld(ps); - } - else - { - initNew(ps); - var.m_varType = libsupermesh::Tools::VT_LONGLONG; - var.m_val.llVal = m_headerID; - ps.setProperty("IndexIdentifier", var); - } -} - -libsupermesh::SpatialIndex::TPRTree::TPRTree::~TPRTree() -{ -#ifdef HAVE_PTHREAD_H - pthread_mutex_destroy(&m_lock); -#endif - - storeHeader(); -} - -// -// ISpatialIndex interface -// - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::insertData(uint32_t len, const byte* pData, const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - const IEvolvingShape* es = dynamic_cast(&shape); - if (es == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IEvolvingShape interface."); - const libsupermesh::Tools::IInterval *pivI = dynamic_cast(&shape); - if (pivI == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IInterval interface."); - - if (pivI->getLowerBound() < m_currentTime) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape start time is older than tree current time."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - Region mbr; - shape.getMBR(mbr); - Region vbr; - es->getVMBR(vbr); - assert(mbr.m_dimension == vbr.m_dimension); - - MovingRegionPtr mr = m_regionPool.acquire(); - mr->makeDimension(mbr.m_dimension); - - memcpy(mr->m_pLow, mbr.m_pLow, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pHigh, mbr.m_pHigh, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVLow, vbr.m_pLow, vbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVHigh, vbr.m_pHigh, vbr.m_dimension * sizeof(double)); - mr->m_startTime = pivI->getLowerBound(); - mr->m_endTime = std::numeric_limits::max(); - - byte* buffer = 0; - - if (len > 0) - { - buffer = new byte[len]; - memcpy(buffer, pData, len); - } - - m_currentTime = mr->m_startTime; - insertData_impl(len, buffer, *mr, id); - // the buffer is stored in the tree. Do not delete here. -} - -// shape.m_startTime should be the time when the object was inserted initially. -// shape.m_endTime should be the time of the deletion (current time). -bool libsupermesh::SpatialIndex::TPRTree::TPRTree::deleteData(const IShape& shape, id_type id) -{ - if (shape.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape has the wrong number of dimensions."); - const IEvolvingShape* es = dynamic_cast(&shape); - if (es == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IEvolvingShape interface."); - const libsupermesh::Tools::IInterval *pivI = dynamic_cast(&shape); - if (pivI == 0) throw libsupermesh::Tools::IllegalArgumentException("insertData: Shape does not support the libsupermesh::Tools::IInterval interface."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - Region mbr; - shape.getMBR(mbr); - Region vbr; - es->getVMBR(vbr); - assert(mbr.m_dimension == vbr.m_dimension); - - MovingRegionPtr mr = m_regionPool.acquire(); - mr->makeDimension(mbr.m_dimension); - - memcpy(mr->m_pLow, mbr.m_pLow, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pHigh, mbr.m_pHigh, mbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVLow, vbr.m_pLow, vbr.m_dimension * sizeof(double)); - memcpy(mr->m_pVHigh, vbr.m_pHigh, vbr.m_dimension * sizeof(double)); - mr->m_startTime = pivI->getLowerBound(); - mr->m_endTime = std::numeric_limits::max(); - - m_currentTime = pivI->getUpperBound(); - bool ret = deleteData_impl(*mr, id); - - return ret; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::containsWhatQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("containsWhatQuery: Shape has the wrong number of dimensions."); - rangeQuery(ContainmentQuery, query, v); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::intersectsWithQuery(const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("intersectsWithQuery: Shape has the wrong number of dimensions."); - rangeQuery(IntersectionQuery, query, v); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::pointLocationQuery(const Point& query, IVisitor& v) -{ - if (query.m_dimension != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("pointLocationQuery: Shape has the wrong number of dimensions."); - Region r(query, query); - rangeQuery(IntersectionQuery, r, v); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::nearestNeighborQuery(uint32_t, const IShape&, IVisitor&, INearestNeighborComparator&) -{ - throw libsupermesh::Tools::IllegalStateException("nearestNeighborQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v) -{ - if (query.getDimension() != m_dimension) throw libsupermesh::Tools::IllegalArgumentException("nearestNeighborQuery: Shape has the wrong number of dimensions."); - NNComparator nnc; - nearestNeighborQuery(k, query, v, nnc); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::selfJoinQuery(const IShape&, IVisitor&) -{ - throw libsupermesh::Tools::IllegalStateException("selfJoinQuery: not impelmented yet."); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::queryStrategy(IQueryStrategy& qs) -{ -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - id_type next = m_rootID; - bool hasNext = true; - - while (hasNext) - { - NodePtr n = readNode(next); - qs.getNextEntry(*n, next, hasNext); - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::getIndexProperties(libsupermesh::Tools::PropertySet& out) const -{ - libsupermesh::Tools::Variant var; - - // dimension - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_dimension; - out.setProperty("Dimension", var); - - // index capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexCapacity; - out.setProperty("IndexCapacity", var); - - // leaf capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafCapacity; - out.setProperty("LeafCapacity", var); - - // Tree variant - var.m_varType = libsupermesh::Tools::VT_LONG; - var.m_val.lVal = m_treeVariant; - out.setProperty("TreeVariant", var); - - // fill factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_fillFactor; - out.setProperty("FillFactor", var); - - // horizon - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_horizon; - out.setProperty("Horizon", var); - - // near minimum overlap factor - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_nearMinimumOverlapFactor; - out.setProperty("NearMinimumOverlapFactor", var); - - // split distribution factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_splitDistributionFactor; - out.setProperty("SplitDistributionFactor", var); - - // reinsert factor - var.m_varType = libsupermesh::Tools::VT_DOUBLE; - var.m_val.dblVal = m_reinsertFactor; - out.setProperty("ReinsertFactor", var); - - // tight MBRs - var.m_varType = libsupermesh::Tools::VT_BOOL; - var.m_val.blVal = m_bTightMBRs; - out.setProperty("EnsureTightMBRs", var); - - // index pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_indexPool.getCapacity(); - out.setProperty("IndexPoolCapacity", var); - - // leaf pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_leafPool.getCapacity(); - out.setProperty("LeafPoolCapacity", var); - - // region pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_regionPool.getCapacity(); - out.setProperty("RegionPoolCapacity", var); - - // point pool capacity - var.m_varType = libsupermesh::Tools::VT_ULONG; - var.m_val.ulVal = m_pointPool.getCapacity(); - out.setProperty("PointPoolCapacity", var); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::addCommand(ICommand* pCommand, CommandType ct) -{ - switch (ct) - { - case CT_NODEREAD: - m_readNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEWRITE: - m_writeNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - case CT_NODEDELETE: - m_deleteNodeCommands.push_back(libsupermesh::Tools::SmartPointer(pCommand)); - break; - } -} - -bool libsupermesh::SpatialIndex::TPRTree::TPRTree::isIndexValid() -{ - bool ret = true; - - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_level != m_stats.m_treeHeight - 1) - { - std::cerr << "Invalid tree height." << std::endl; - return false; - } - - std::map nodesInLevel; - nodesInLevel.insert(std::pair(root->m_level, 1)); - - ValidateEntry e(root->m_nodeMBR, root); - st.push(e); - - while (! st.empty()) - { - e = st.top(); st.pop(); - - MovingRegion tmpRegion; - tmpRegion = m_infiniteRegion; - - // I have to rely on the parent information here, since none of the node's - // children might have a reference time equal to their parents (e.g., after - // a split). - tmpRegion.m_startTime = e.m_parentMBR.m_startTime; - - for (uint32_t cDim = 0; cDim < tmpRegion.m_dimension; ++cDim) - { - tmpRegion.m_pLow[cDim] = std::numeric_limits::max(); - tmpRegion.m_pHigh[cDim] = -std::numeric_limits::max(); - tmpRegion.m_pVLow[cDim] = std::numeric_limits::max(); - tmpRegion.m_pVHigh[cDim] = -std::numeric_limits::max(); - - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - tmpRegion.m_pLow[cDim] = std::min(tmpRegion.m_pLow[cDim], e.m_pNode->m_ptrMBR[cChild]->getExtrapolatedLow(cDim, tmpRegion.m_startTime)); - tmpRegion.m_pHigh[cDim] = std::max(tmpRegion.m_pHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->getExtrapolatedHigh(cDim, tmpRegion.m_startTime)); - tmpRegion.m_pVLow[cDim] = std::min(tmpRegion.m_pVLow[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pVLow[cDim]); - tmpRegion.m_pVHigh[cDim] = std::max(tmpRegion.m_pVHigh[cDim], e.m_pNode->m_ptrMBR[cChild]->m_pVHigh[cDim]); - } - tmpRegion.m_pLow[cDim] -= 2.0 * std::numeric_limits::epsilon(); - tmpRegion.m_pHigh[cDim] += 2.0 * std::numeric_limits::epsilon(); - } - - if (! (tmpRegion == e.m_pNode->m_nodeMBR)) - { - std::cerr << "Invalid parent information." << std::endl; - ret = false; - } - if (! (tmpRegion == e.m_parentMBR)) - { - std::cerr << "Error in parent." << std::endl; - ret = false; - } - - if (e.m_pNode->m_level != 0) - { - for (uint32_t cChild = 0; cChild < e.m_pNode->m_children; ++cChild) - { - NodePtr ptrN = readNode(e.m_pNode->m_pIdentifier[cChild]); - ValidateEntry tmpEntry(*(e.m_pNode->m_ptrMBR[cChild]), ptrN); - - std::map::iterator itNodes = nodesInLevel.find(tmpEntry.m_pNode->m_level); - - if (itNodes == nodesInLevel.end()) - { - nodesInLevel.insert(std::pair(tmpEntry.m_pNode->m_level, 1l)); - } - else - { - nodesInLevel[tmpEntry.m_pNode->m_level] = nodesInLevel[tmpEntry.m_pNode->m_level] + 1; - } - - st.push(tmpEntry); - } - } - } - - uint32_t nodes = 0; - for (uint32_t cLevel = 0; cLevel < m_stats.m_treeHeight; ++cLevel) - { - if (nodesInLevel[cLevel] != m_stats.m_nodesInLevel[cLevel]) - { - std::cerr << "Invalid nodesInLevel information." << std::endl; - ret = false; - } - - nodes += m_stats.m_nodesInLevel[cLevel]; - } - - if (nodes != m_stats.m_nodes) - { - std::cerr << "Invalid number of nodes information." << std::endl; - ret = false; - } - - return ret; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::getStatistics(IStatistics** out) const -{ - *out = new Statistics(m_stats); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::initNew(libsupermesh::Tools::PropertySet& ps) -{ - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != TPRV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of TPRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // fill factor - // it cannot be larger than 50%, since linear and quadratic split algorithms - // require assigning to both nodes the same number of entries. - var = ps.getProperty("FillFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property FillFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0) for RSTAR"); - - m_fillFactor = var.m_val.dblVal; - } - - // horizon - var = ps.getProperty("Horizon"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal == std::numeric_limits::max()) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Horizon must be libsupermesh::Tools::VT_DOUBLE and a positive constant"); - - m_horizon = var.m_val.dblVal; - } - - // index capacity - var = ps.getProperty("IndexCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_indexCapacity = var.m_val.ulVal; - } - - // leaf capacity - var = ps.getProperty("LeafCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG || var.m_val.ulVal < 4) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafCapacity must be libsupermesh::Tools::VT_ULONG and >= 4"); - - m_leafCapacity = var.m_val.ulVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // dimension - var = ps.getProperty("Dimension"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be libsupermesh::Tools::VT_ULONG"); - if (var.m_val.ulVal <= 1) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property Dimension must be greater than 1"); - - m_dimension = var.m_val.ulVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) - throw libsupermesh::Tools::IllegalArgumentException("initNew: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); - - m_stats.m_treeHeight = 1; - m_stats.m_nodesInLevel.push_back(0); - - Leaf root(this, -1); - m_rootID = writeNode(&root); - - storeHeader(); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::initOld(libsupermesh::Tools::PropertySet& ps) -{ - loadHeader(); - - // only some of the properties may be changed. - // the rest are just ignored. - - libsupermesh::Tools::Variant var; - - // tree variant - var = ps.getProperty("TreeVariant"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_LONG || - (var.m_val.lVal != TPRV_RSTAR)) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property TreeVariant must be libsupermesh::Tools::VT_LONG and of TPRTreeVariant type"); - - m_treeVariant = static_cast(var.m_val.lVal); - } - - // horizon - var = ps.getProperty("Horizon"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_DOUBLE || - var.m_val.dblVal <= 0.0 || - var.m_val.dblVal == std::numeric_limits::max()) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property Horizon must be libsupermesh::Tools::VT_DOUBLE and a positive constant"); - - m_horizon = var.m_val.dblVal; - } - - // near minimum overlap factor - var = ps.getProperty("NearMinimumOverlapFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if ( - var.m_varType != libsupermesh::Tools::VT_ULONG || - var.m_val.ulVal < 1 || - var.m_val.ulVal > m_indexCapacity || - var.m_val.ulVal > m_leafCapacity) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property NearMinimumOverlapFactor must be libsupermesh::Tools::VT_ULONG and less than both index and leaf capacities"); - - m_nearMinimumOverlapFactor = var.m_val.ulVal; - } - - // split distribution factor - var = ps.getProperty("SplitDistributionFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property SplitDistributionFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_splitDistributionFactor = var.m_val.dblVal; - } - - // reinsert factor - var = ps.getProperty("ReinsertFactor"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_DOUBLE || var.m_val.dblVal <= 0.0 || var.m_val.dblVal >= 1.0) - throw libsupermesh::Tools::IllegalArgumentException("initOld: Property ReinsertFactor must be libsupermesh::Tools::VT_DOUBLE and in (0.0, 1.0)"); - - m_reinsertFactor = var.m_val.dblVal; - } - - // tight MBRs - var = ps.getProperty("EnsureTightMBRs"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_BOOL) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property EnsureTightMBRs must be libsupermesh::Tools::VT_BOOL"); - - m_bTightMBRs = var.m_val.blVal; - } - - // index pool capacity - var = ps.getProperty("IndexPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property IndexPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_indexPool.setCapacity(var.m_val.ulVal); - } - - // leaf pool capacity - var = ps.getProperty("LeafPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property LeafPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_leafPool.setCapacity(var.m_val.ulVal); - } - - // region pool capacity - var = ps.getProperty("RegionPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property RegionPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_regionPool.setCapacity(var.m_val.ulVal); - } - - // point pool capacity - var = ps.getProperty("PointPoolCapacity"); - if (var.m_varType != libsupermesh::Tools::VT_EMPTY) - { - if (var.m_varType != libsupermesh::Tools::VT_ULONG) throw libsupermesh::Tools::IllegalArgumentException("initOld: Property PointPoolCapacity must be libsupermesh::Tools::VT_ULONG"); - - m_pointPool.setCapacity(var.m_val.ulVal); - } - - m_infiniteRegion.makeInfinite(m_dimension); -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::storeHeader() -{ - const uint32_t headerSize = - sizeof(id_type) + // m_rootID - sizeof(TPRTreeVariant) + // m_treeVariant - sizeof(double) + // m_fillFactor - sizeof(uint32_t) + // m_indexCapacity - sizeof(uint32_t) + // m_leafCapacity - sizeof(uint32_t) + // m_nearMinimumOverlapFactor - sizeof(double) + // m_splitDistributionFactor - sizeof(double) + // m_reinsertFactor - sizeof(uint32_t) + // m_dimension - sizeof(char) + // m_bTightMBRs - sizeof(uint32_t) + // m_stats.m_nodes - sizeof(uint64_t) + // m_stats.m_data - sizeof(double) + // m_currentTime - sizeof(double) + // m_horizon - sizeof(uint32_t) + // m_stats.m_treeHeight - m_stats.m_treeHeight * sizeof(uint32_t);// m_stats.m_nodesInLevel - - byte* header = new byte[headerSize]; - byte* ptr = header; - - memcpy(ptr, &m_rootID, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(ptr, &m_treeVariant, sizeof(TPRTreeVariant)); - ptr += sizeof(TPRTreeVariant); - memcpy(ptr, &m_fillFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_indexCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_leafCapacity, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_nearMinimumOverlapFactor, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &m_splitDistributionFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_reinsertFactor, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_dimension, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c = (char) m_bTightMBRs; - memcpy(ptr, &c, sizeof(char)); - ptr += sizeof(char); - memcpy(ptr, &(m_stats.m_nodes), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(ptr, &(m_stats.m_data), sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(ptr, &m_currentTime, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &m_horizon, sizeof(double)); - ptr += sizeof(double); - memcpy(ptr, &(m_stats.m_treeHeight), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_treeHeight; ++cLevel) - { - memcpy(ptr, &(m_stats.m_nodesInLevel[cLevel]), sizeof(uint32_t)); - ptr += sizeof(uint32_t); - } - - m_pStorageManager->storeByteArray(m_headerID, headerSize, header); - - delete[] header; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::loadHeader() -{ - uint32_t headerSize; - byte* header = 0; - m_pStorageManager->loadByteArray(m_headerID, headerSize, &header); - - byte* ptr = header; - - memcpy(&m_rootID, ptr, sizeof(id_type)); - ptr += sizeof(id_type); - memcpy(&m_treeVariant, ptr, sizeof(TPRTreeVariant)); - ptr += sizeof(TPRTreeVariant); - memcpy(&m_fillFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_indexCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_leafCapacity, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_nearMinimumOverlapFactor, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&m_splitDistributionFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_reinsertFactor, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_dimension, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - char c; - memcpy(&c, ptr, sizeof(char)); - m_bTightMBRs = (c != 0); - ptr += sizeof(char); - memcpy(&(m_stats.m_nodes), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - memcpy(&(m_stats.m_data), ptr, sizeof(uint64_t)); - ptr += sizeof(uint64_t); - memcpy(&m_currentTime, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&m_horizon, ptr, sizeof(double)); - ptr += sizeof(double); - memcpy(&(m_stats.m_treeHeight), ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - - for (uint32_t cLevel = 0; cLevel < m_stats.m_treeHeight; ++cLevel) - { - uint32_t cNodes; - memcpy(&cNodes, ptr, sizeof(uint32_t)); - ptr += sizeof(uint32_t); - m_stats.m_nodesInLevel.push_back(cNodes); - } - - delete[] header; -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mr, id_type id) -{ - assert(mr.getDimension() == m_dimension); - assert(m_currentTime <= mr.m_startTime); - - std::stack pathBuffer; - byte* overflowTable = 0; - - try - { - NodePtr root = readNode(m_rootID); - - overflowTable = new byte[root->m_level]; - memset(overflowTable, 0, root->m_level); - - NodePtr l = root->chooseSubtree(mr, 0, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - l->insertData(dataLength, pData, mr, id, pathBuffer, overflowTable); - - delete[] overflowTable; - ++(m_stats.m_data); - } - catch (...) - { - delete[] overflowTable; - throw; - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mr, id_type id, uint32_t level, byte* overflowTable) -{ - assert(mr.getDimension() == m_dimension); - - std::stack pathBuffer; - NodePtr root = readNode(m_rootID); - NodePtr n = root->chooseSubtree(mr, level, pathBuffer); - - assert(n->m_level == level); - - if (n.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - n->insertData(dataLength, pData, mr, id, pathBuffer, overflowTable); -} - -bool libsupermesh::SpatialIndex::TPRTree::TPRTree::deleteData_impl(const MovingRegion& mr, id_type id) -{ - assert(mr.m_dimension == m_dimension); - - std::stack pathBuffer; - - NodePtr root = readNode(m_rootID); - NodePtr l = root->findLeaf(mr, id, pathBuffer); - if (l.get() == root.get()) - { - assert(root.unique()); - root.relinquish(); - } - - if (l.get() != 0) - { - Leaf* pL = static_cast(l.get()); - pL->deleteData(id, pathBuffer); - --(m_stats.m_data); - return true; - } - - return false; -} - -libsupermesh::SpatialIndex::id_type libsupermesh::SpatialIndex::TPRTree::TPRTree::writeNode(Node* n) -{ - byte* buffer; - uint32_t dataLength; - n->storeToByteArray(&buffer, dataLength); - - id_type page; - if (n->m_identifier < 0) page = StorageManager::NewPage; - else page = n->m_identifier; - - try - { - m_pStorageManager->storeByteArray(page, dataLength, buffer); - delete[] buffer; - } - catch (InvalidPageException& e) - { - delete[] buffer; - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("writeNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - if (n->m_identifier < 0) - { - n->m_identifier = page; - ++(m_stats.m_nodes); - -#ifndef NDEBUG - try - { - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel.at(n->m_level) + 1; - } - catch(...) - { - throw libsupermesh::Tools::IllegalStateException("writeNode: writing past the end of m_nodesInLevel."); - } -#else - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] + 1; -#endif - } - - ++(m_stats.m_writes); - - for (size_t cIndex = 0; cIndex < m_writeNodeCommands.size(); ++cIndex) - { - m_writeNodeCommands[cIndex]->execute(*n); - } - - return page; -} - -libsupermesh::SpatialIndex::TPRTree::NodePtr libsupermesh::SpatialIndex::TPRTree::TPRTree::readNode(id_type id) -{ - uint32_t dataLength; - byte* buffer; - - try - { - m_pStorageManager->loadByteArray(id, dataLength, &buffer); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("readNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - try - { - uint32_t nodeType; - memcpy(&nodeType, buffer, sizeof(uint32_t)); - - NodePtr n; - - if (nodeType == PersistentIndex) n = m_indexPool.acquire(); - else if (nodeType == PersistentLeaf) n = m_leafPool.acquire(); - else throw libsupermesh::Tools::IllegalStateException("readNode: failed reading the correct node type information"); - - if (n.get() == 0) - { - if (nodeType == PersistentIndex) n = NodePtr(new Index(this, -1, 0), &m_indexPool); - else if (nodeType == PersistentLeaf) n = NodePtr(new Leaf(this, -1), &m_leafPool); - } - - //n->m_pTree = this; - n->m_identifier = id; - n->loadFromByteArray(buffer); - - ++(m_stats.m_reads); - - for (size_t cIndex = 0; cIndex < m_readNodeCommands.size(); ++cIndex) - { - m_readNodeCommands[cIndex]->execute(*n); - } - - delete[] buffer; - return n; - } - catch (...) - { - delete[] buffer; - throw; - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::deleteNode(Node* n) -{ - try - { - m_pStorageManager->deleteByteArray(n->m_identifier); - } - catch (InvalidPageException& e) - { - std::cerr << e.what() << std::endl; - //std::cerr << *this << std::endl; - throw libsupermesh::Tools::IllegalStateException("deleteNode: failed with libsupermesh::Tools::InvalidPageException"); - } - - --(m_stats.m_nodes); - m_stats.m_nodesInLevel[n->m_level] = m_stats.m_nodesInLevel[n->m_level] - 1; - - for (size_t cIndex = 0; cIndex < m_deleteNodeCommands.size(); ++cIndex) - { - m_deleteNodeCommands[cIndex]->execute(*n); - } -} - -void libsupermesh::SpatialIndex::TPRTree::TPRTree::rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v) -{ - const MovingRegion* mr = dynamic_cast(&query); - if (mr == 0) throw libsupermesh::Tools::IllegalArgumentException("rangeQuery: Shape has to be a moving region."); - if (mr->m_startTime < m_currentTime || mr->m_endTime >= m_currentTime + m_horizon) - throw libsupermesh::Tools::IllegalArgumentException("rangeQuery: Query time interval does not intersect current horizon."); - -#ifdef HAVE_PTHREAD_H - libsupermesh::Tools::LockGuard lock(&m_lock); -#endif - - std::stack st; - NodePtr root = readNode(m_rootID); - - if (root->m_children > 0 && mr->intersectsRegionInTime(root->m_nodeMBR)) st.push(root); - - while (! st.empty()) - { - NodePtr n = st.top(); st.pop(); - - if (n->m_level == 0) - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - bool b; - if (type == ContainmentQuery) b = mr->containsRegionInTime(*(n->m_ptrMBR[cChild])); - else b = mr->intersectsRegionInTime(*(n->m_ptrMBR[cChild])); - - if (b) - { - Data data = Data(n->m_pDataLength[cChild], n->m_pData[cChild], *(n->m_ptrMBR[cChild]), n->m_pIdentifier[cChild]); - v.visitData(data); - ++(m_stats.m_queryResults); - } - } - } - else - { - v.visitNode(*n); - - for (uint32_t cChild = 0; cChild < n->m_children; ++cChild) - { - if (mr->intersectsRegionInTime(*(n->m_ptrMBR[cChild]))) st.push(readNode(n->m_pIdentifier[cChild])); - } - } - } -} - -std::ostream& libsupermesh::SpatialIndex::TPRTree::operator<<(std::ostream& os, const TPRTree& t) -{ - os << "Dimension: " << t.m_dimension << std::endl - << "Fill factor: " << t.m_fillFactor << std::endl - << "Horizon: " << t.m_horizon << std::endl - << "Index capacity: " << t.m_indexCapacity << std::endl - << "Leaf capacity: " << t.m_leafCapacity << std::endl - << "Tight MBRs: " << ((t.m_bTightMBRs) ? "enabled" : "disabled") << std::endl; - - if (t.m_treeVariant == TPRV_RSTAR) - { - os << "Near minimum overlap factor: " << t.m_nearMinimumOverlapFactor << std::endl - << "Reinsert factor: " << t.m_reinsertFactor << std::endl - << "Split distribution factor: " << t.m_splitDistributionFactor << std::endl; - } - - if (t.m_stats.getNumberOfNodesInLevel(0) > 0) - os << "Utilization: " << 100 * t.m_stats.getNumberOfData() / (t.m_stats.getNumberOfNodesInLevel(0) * t.m_leafCapacity) << "%" << std::endl - << t.m_stats; - - #ifndef NDEBUG - os << "Leaf pool hits: " << t.m_leafPool.m_hits << std::endl - << "Leaf pool misses: " << t.m_leafPool.m_misses << std::endl - << "Index pool hits: " << t.m_indexPool.m_hits << std::endl - << "Index pool misses: " << t.m_indexPool.m_misses << std::endl - << "Region pool hits: " << t.m_regionPool.m_hits << std::endl - << "Region pool misses: " << t.m_regionPool.m_misses << std::endl - << "Point pool hits: " << t.m_pointPool.m_hits << std::endl - << "Point pool misses: " << t.m_pointPool.m_misses << std::endl; - #endif - - return os; -} diff --git a/spatialindex-1.8.5/src/tprtree/TPRTree.h b/spatialindex-1.8.5/src/tprtree/TPRTree.h deleted file mode 100644 index 5d93238..0000000 --- a/spatialindex-1.8.5/src/tprtree/TPRTree.h +++ /dev/null @@ -1,210 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#pragma once - -#include "Statistics.h" -#include "Node.h" -#include "PointerPoolNode.h" - -namespace libsupermesh { namespace SpatialIndex -{ - namespace TPRTree - { - class TPRTree : public ISpatialIndex - { - class NNEntry; - - public: - TPRTree(IStorageManager&, libsupermesh::Tools::PropertySet&); - // String Value Description - // ---------------------------------------------- - // IndexIndentifier VT_LONG If specified an existing index will be openened from the supplied - // storage manager with the given index id. Behaviour is unspecified - // if the index id or the storage manager are incorrect. - // Dimension VT_ULONG Dimensionality of the data that will be inserted. - // IndexCapacity VT_ULONG The index node capacity. Default is 100. - // LeafCapactiy VT_ULONG The leaf node capacity. Default is 100. - // FillFactor VT_DOUBLE The fill factor. Default is 70% - // Horizon VT_DOUBLE Horizon. Default is 20.0. - // TreeVariant VT_LONG Can be one of Linear, Quadratic or Rstar. Default is Rstar - // NearMinimumOverlapFactor VT_ULONG Default is 32. - // SplitDistributionFactor VT_DOUBLE Default is 0.4 - // ReinsertFactor VT_DOUBLE Default is 0.3 - // EnsureTightMBRs VT_BOOL Default is true - // IndexPoolCapacity VT_LONG Default is 100 - // LeafPoolCapacity VT_LONG Default is 100 - // RegionPoolCapacity VT_LONG Default is 1000 - // PointPoolCapacity VT_LONG Default is 500 - - virtual ~TPRTree(); - - // - // ISpatialIndex interface - // - virtual void insertData(uint32_t len, const byte* pData, const IShape& shape, id_type shapeIdentifier); - virtual bool deleteData(const IShape& shape, id_type id); - virtual void containsWhatQuery(const IShape& query, IVisitor& v); - virtual void intersectsWithQuery(const IShape& query, IVisitor& v); - virtual void pointLocationQuery(const Point& query, IVisitor& v); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v, INearestNeighborComparator&); - virtual void nearestNeighborQuery(uint32_t k, const IShape& query, IVisitor& v); - virtual void selfJoinQuery(const IShape& s, IVisitor& v); - virtual void queryStrategy(IQueryStrategy& qs); - virtual void getIndexProperties(libsupermesh::Tools::PropertySet& out) const; - virtual void addCommand(ICommand* pCommand, CommandType ct); - virtual bool isIndexValid(); - virtual void getStatistics(IStatistics** out) const; - - private: - void initNew(libsupermesh::Tools::PropertySet&); - void initOld(libsupermesh::Tools::PropertySet& ps); - void storeHeader(); - void loadHeader(); - - void insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id); - void insertData_impl(uint32_t dataLength, byte* pData, MovingRegion& mbr, id_type id, uint32_t level, byte* overflowTable); - bool deleteData_impl(const MovingRegion& mbr, id_type id); - - id_type writeNode(Node*); - NodePtr readNode(id_type id); - void deleteNode(Node*); - - void rangeQuery(RangeQueryType type, const IShape& query, IVisitor& v); - - IStorageManager* m_pStorageManager; - - id_type m_rootID, m_headerID; - - TPRTreeVariant m_treeVariant; - - double m_fillFactor; - - uint32_t m_indexCapacity; - - uint32_t m_leafCapacity; - - uint32_t m_nearMinimumOverlapFactor; - // The R*-Tree 'p' constant, for calculating nearly minimum overlap cost. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.1] - - double m_splitDistributionFactor; - // The R*-Tree 'm' constant, for calculating spliting distributions. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.2] - - double m_reinsertFactor; - // The R*-Tree 'p' constant, for removing entries at reinserts. - // [Beckmann, Kriegel, Schneider, Seeger 'The R*-tree: An efficient and Robust Access Method - // for Points and Rectangles', Section 4.3] - - uint32_t m_dimension; - - MovingRegion m_infiniteRegion; - - Statistics m_stats; - - bool m_bTightMBRs; - - double m_currentTime; - - double m_horizon; - - libsupermesh::Tools::PointerPool m_pointPool; - libsupermesh::Tools::PointerPool m_regionPool; - libsupermesh::Tools::PointerPool m_indexPool; - libsupermesh::Tools::PointerPool m_leafPool; - - std::vector > m_writeNodeCommands; - std::vector > m_readNodeCommands; - std::vector > m_deleteNodeCommands; - -#ifdef HAVE_PTHREAD_H - pthread_mutex_t m_lock; -#endif - - class NNEntry - { - public: - id_type m_id; - IEntry* m_pEntry; - double m_minDist; - - NNEntry(id_type id, IEntry* e, double f) : m_id(id), m_pEntry(e), m_minDist(f) {} - ~NNEntry() {} - - struct ascending { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { - return __x->m_minDist > __y->m_minDist; - } - }; - - }; // NNEntry - - class NNComparator : public INearestNeighborComparator - { - public: - double getMinimumDistance(const IShape& query, const IShape& entry) - { - return query.getMinimumDistance(entry); - } - - double getMinimumDistance(const IShape& query, const IData& data) - { - IShape* pS; - data.getShape(&pS); - double ret = query.getMinimumDistance(*pS); - delete pS; - return ret; - } - }; // NNComparator - - class ValidateEntry - { - public: - ValidateEntry(MovingRegion& r, NodePtr& pNode) : m_parentMBR(r), m_pNode(pNode) {} - - MovingRegion m_parentMBR; - NodePtr m_pNode; - }; // ValidateEntry - - friend class Node; - friend class Leaf; - friend class Index; - - friend std::ostream& operator<<(std::ostream& os, const TPRTree& t); - }; // TPRTree - - std::ostream& operator<<(std::ostream& os, const TPRTree& t); - } -} } diff --git a/spatialindex-1.8.5/test/CMakeLists.txt b/spatialindex-1.8.5/test/CMakeLists.txt deleted file mode 100644 index 84474bb..0000000 --- a/spatialindex-1.8.5/test/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -include_directories(../include) - -set (DIR geometry) -set (SOURCES - Intersection - ) - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() - -set (DIR rtree) -set (SOURCES - Exhaustive - Generator - RTreeBulkLoad - RTreeLoad - RTreeQuery) - - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() - -set (DIR mvrtree) -set (SOURCES - Exhaustive - Generator - MVRTreeLoad - MVRTreeQuery - ) - - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() - -set (DIR tprtree) -set (SOURCES - Exhaustive - Generator - TPRTreeLoad - TPRTreeQuery - ) - - -foreach (test ${SOURCES}) - add_executable(test-${DIR}-${test} ${DIR}/${test}.cc ${DIR}/RandomGenerator.cc) - target_link_libraries(test-${DIR}-${test} ${SIDX_LIB_NAME}) -endforeach() diff --git a/spatialindex-1.8.5/test/Makefile.am b/spatialindex-1.8.5/test/Makefile.am deleted file mode 100644 index 1555c95..0000000 --- a/spatialindex-1.8.5/test/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = geometry rtree mvrtree tprtree diff --git a/spatialindex-1.8.5/test/Makefile.in b/spatialindex-1.8.5/test/Makefile.in deleted file mode 100644 index 909daf1..0000000 --- a/spatialindex-1.8.5/test/Makefile.in +++ /dev/null @@ -1,607 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = test -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-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 -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = geometry rtree mvrtree tprtree -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/geometry/Intersection.cc b/spatialindex-1.8.5/test/geometry/Intersection.cc deleted file mode 100644 index a79f645..0000000 --- a/spatialindex-1.8.5/test/geometry/Intersection.cc +++ /dev/null @@ -1,81 +0,0 @@ -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -/* - * Test the Geometry - * Nowhere near complete, but it's something - */ -int main(int argc, char** argv) { - //define points - double c1[2] = {1.0, 0.0}; - double c2[2] = {3.0, 2.0}; - double c3[2] = {2.0, 0.0}; - double c4[2] = {2.0, 4.0}; - double c5[2] = {1.0, 1.0}; - double c6[2] = {2.5, 3.0}; - double c7[2] = {1.0, 2.0}; - double c8[2] = {0.0, -1.0}; - double c9[2] = {4.0, 3.0}; - Point p1 = Point(&c1[0], 2); - Point p2 = Point(&c2[0], 2); - Point p3 = Point(&c3[0], 2); - Point p4 = Point(&c4[0], 2); - Point p5 = Point(&c5[0], 2); - Point p6 = Point(&c6[0], 2); - Point p7 = Point(&c7[0], 2); - Point p8 = Point(&c8[0], 2); - Point p9 = Point(&c9[0], 2); - - double c3a[2] = {2.0, 3.0}; - Point p3a = Point(&c3a[0], 2); - - //Now Test LineSegment intersection - LineSegment ls1 = LineSegment(p1, p2); - LineSegment ls2 = LineSegment(p3, p4); - LineSegment ls3 = LineSegment(p3a, p4); - - if (!ls1.intersectsShape(ls2)) { - cerr << "Test failed: intersectsShape returned false, but should be true." << endl; - cerr << ls1 << ", " << ls2 << endl; - return -1; - } - - if (ls1.intersectsShape(ls3)) { - cerr << "Test failed: intersectsShape returned true, but should be false." << endl; - cerr << ls1 << ", " << ls3 << endl; - return -1; - } - - //Now LineSegment Region intersection - Region r1 = Region(p5, p6); - Region r2 = Region(p7, p6); - Region r3 = Region(p8, p9); - - if (!r1.intersectsShape(ls1) || !ls1.intersectsShape(r1)) { - cerr << "Test failed: intersectsShape returned false, but should be true." << endl; - cerr << r1 << ", " << ls1 << endl; - return -1; - } - - if (r2.intersectsShape(ls1) || ls1.intersectsShape(r2)) { - cerr << "Test failed: intersectsShape returned true, but should be false." << endl; - cerr << r2 << ", " << ls1 << endl; - return -1; - } - - // This is the contains test - if (!r3.intersectsShape(ls1) || !ls1.intersectsShape(r3)) { - cerr << "Test failed: intersectsShape returned false, but should be true." << endl; - cerr << r3 << ", " << ls1 << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/geometry/Makefile.am b/spatialindex-1.8.5/test/geometry/Makefile.am deleted file mode 100644 index fdd8c50..0000000 --- a/spatialindex-1.8.5/test/geometry/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Intersection -INCLUDES = -I../../include -Intersection_SOURCES = Intersection.cc -Intersection_LDADD = ../../libspatialindex.la diff --git a/spatialindex-1.8.5/test/geometry/Makefile.in b/spatialindex-1.8.5/test/geometry/Makefile.in deleted file mode 100644 index 382b16b..0000000 --- a/spatialindex-1.8.5/test/geometry/Makefile.in +++ /dev/null @@ -1,578 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Intersection$(EXEEXT) -subdir = test/geometry -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Intersection_OBJECTS = Intersection.$(OBJEXT) -Intersection_OBJECTS = $(am_Intersection_OBJECTS) -Intersection_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(Intersection_SOURCES) -DIST_SOURCES = $(Intersection_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Intersection_SOURCES = Intersection.cc -Intersection_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/geometry/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/geometry/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Intersection$(EXEEXT): $(Intersection_OBJECTS) $(Intersection_DEPENDENCIES) $(EXTRA_Intersection_DEPENDENCIES) - @rm -f Intersection$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Intersection_OBJECTS) $(Intersection_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intersection.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/mvrtree/Exhaustive.cc b/spatialindex-1.8.5/test/mvrtree/Exhaustive.cc deleted file mode 100644 index 9fd3b56..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Exhaustive.cc +++ /dev/null @@ -1,216 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - - -#include - -class TimeRegion -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - double m_startTime, m_endTime; - - TimeRegion() {} - - TimeRegion(double x1, double y1, double x2, double y2, double t1, double t2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - m_startTime = t1; - m_endTime = (t2 <= 0) ? std::numeric_limits::max() : t2; - } - - bool intersects(TimeRegion& r) - { - if (m_xmin > r.m_xmax || m_xmax < r.m_xmin || - m_ymin > r.m_ymax || m_ymax < r.m_ymin) return false; - - return true; - } - - bool intersectsInTime(TimeRegion& r) - { - //if (m_startTime != r.m_startTime && (m_endTime <= r.m_startTime || m_startTime >= r.m_endTime)) return false; - if (m_endTime <= r.m_startTime || m_startTime >= r.m_endTime) return false; - return intersects(r); - } - - double getMinDist(const TimeRegion& r) - { - double ret = 0.0; - - if (r.m_xmax < m_xmin) - ret += std::pow(m_xmin - r.m_xmax, 2.0); - else if (r.m_xmin > m_xmax) - ret += std::pow(r.m_xmin - m_xmax, 2.0); - - if (r.m_ymax < m_ymin) - ret += std::pow(m_ymin - r.m_ymax, 2.0); - else if (r.m_ymin > m_ymax) - ret += std::pow(r.m_ymin - m_ymax, 2.0); - - return ret; - } -}; - -class NNEntry -{ -public: - size_t m_id; - double m_dist; - - NNEntry(size_t id, double dist) : m_id(id), m_dist(dist) {} - - struct greater : public binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_dist > __y->m_dist; } - }; -}; - -int main(int argc, char** argv) -{ - if (argc != 3) - { - cerr << "Usage: " << argv[0] << " data_file query_type [intersection | 10NN]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[2], "intersection") == 0) queryType = 0; - else if (strcmp(argv[2], "10NN") == 0) queryType = 1; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file" << argv[1] << "." << endl; - return -1; - } - - multimap data; - size_t id; - uint32_t op; - double x1, x2, y1, y2, t; - - while (fin) - { - fin >> t >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; - - if (op == INSERT) - { - //insert - data.insert(pair(id, TimeRegion(x1, y1, x2, y2, t, std::numeric_limits::max()))); - } - else if (op == DELETE) - { - //delete - // find the live instance of id. - multimap::iterator it = data.find(id); - assert(it != data.end()); - while (it->first == id && it->second.m_endTime < std::numeric_limits::max()) it++; - assert(it->first == id); - (*it).second.m_endTime = t; - } - else if (op == QUERY) - { - size_t qt1, qt2; - fin >> qt1 >> qt2; - if (! fin.good()) continue; - - //query - if (queryType == 0) - { - TimeRegion query = TimeRegion(x1, y1, x2, y2, qt1, qt2); - for (multimap::iterator it = data.begin(); it != data.end(); it++) - { - if (query.intersectsInTime((*it).second)) cout << (*it).first << endl; - } - } - else - { - /* - TimeRegion query = TimeRegion(x1, y1, x1, y1, qt1, qt2); - - priority_queue, NNEntry::greater > queue; - - for (multimap::iterator it = data.begin(); it != data.end(); it++) - { - queue.push(new NNEntry((*it).first, (*it).second.getMinDist(query))); - } - - size_t count = 0; - double knearest = 0.0; - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - - if (count >= 10 && e->m_dist > knearest) break; - - //cout << e->m_id << " " << e->m_dist << endl; - cout << e->m_id << endl; - count++; - knearest = e->m_dist; - delete e; - } - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - delete e; - } - */ - } - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/Generator.cc b/spatialindex-1.8.5/test/mvrtree/Generator.cc deleted file mode 100644 index 4932190..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Generator.cc +++ /dev/null @@ -1,186 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -#include -#include -#include - -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -class Region -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - bool m_bIsDead; - - Region() : m_xmin(numeric_limits::max()), m_ymin(numeric_limits::max()), - m_xmax(numeric_limits::max()), m_ymax(numeric_limits::max()) {} - - Region(double x1, double y1, double x2, double y2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - m_bIsDead = false; - } -}; - -int main(int argc, char** argv) -{ - if (argc != 2) - { - cerr << "Usage: " << argv[0] << " number_of_data." << endl; - return -1; - } - - size_t numberOfObjects = atoi(argv[1]); - map data; - libsupermesh::Tools::Random rnd; - - for (size_t i = 0; i < numberOfObjects; i++) - { - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(pair(i, r)); - - cout << "0 " << INSERT << " " << i << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << endl; - } - - size_t nextID = numberOfObjects; - size_t A = static_cast(std::floor(static_cast(numberOfObjects) * 0.05)); - - for (size_t T = 1; T <= 100; T++) - { - cerr << (101 - T) << endl; - - if (T == 50) - { - // delete all entries and reinsert - for (map::iterator itMap = data.begin(); itMap != data.end(); itMap++) - { - if (! (*itMap).second.m_bIsDead) - { - (*itMap).second.m_bIsDead = true; - cout << "50 " << DELETE << " " << (*itMap).first << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << endl; - } - } - - for (size_t i = nextID; i < nextID + numberOfObjects; i++) - { - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(pair(i, r)); - - cout << "50 " << INSERT << " " << i << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << endl; - } - - nextID += numberOfObjects; - continue; - } - - set examined; - - for (size_t a = 0; a < A; a++) - { - // find an id that is not examined yet. - size_t id = static_cast(rnd.nextUniformLongLong(0, nextID)); - set::iterator itSet = examined.find(id); - while (itSet != examined.end() || data[id].m_bIsDead == true) - { - id = static_cast(rnd.nextUniformLongLong(0, nextID)); - itSet = examined.find(id); - } - examined.insert(id); - - map::iterator itMap = data.find(id); - assert(itMap != data.end() && (*itMap).second.m_bIsDead == false); - - cout << T << " " << DELETE << " " << id << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << endl; - (*itMap).second.m_bIsDead = true; - - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(pair(nextID, r)); - - cout << T << " " << INSERT << " " << nextID << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << endl; - examined.insert(nextID); - nextID++; - } - - double stx = rnd.nextUniformDouble(); - double sty = rnd.nextUniformDouble(); - size_t qt = rnd.nextUniformLongLong(0, T); - cout << T << " " << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << " " << qt << " " << qt + 2<< endl; - stx = rnd.nextUniformDouble(); - sty = rnd.nextUniformDouble(); - qt = rnd.nextUniformLongLong(0, T); - cout << T << " " << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << " " << qt << " " << qt + 2<< endl; - stx = rnd.nextUniformDouble(); - sty = rnd.nextUniformDouble(); - qt = rnd.nextUniformLongLong(0, T); - cout << T << " " << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << " " << qt << " " << qt + 2<< endl; - } - - // delete everything at the end (for testing the special case when the tree dies out completely) - for (map::iterator it = data.begin(); it != data.end(); it++) - { - if (! it->second.m_bIsDead) - { - cout << 102 << " " << DELETE << " " << it->first << " " << it->second.m_xmin << " " << it->second.m_ymin << " " - << it->second.m_xmax << " " << it->second.m_ymax << endl; - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc b/spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc deleted file mode 100644 index 56b8589..0000000 --- a/spatialindex-1.8.5/test/mvrtree/MVRTreeLoad.cc +++ /dev/null @@ -1,220 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -// example of a Visitor pattern. -// see MVRTreeQuery for a more elaborate example. -class MyVisitor : public IVisitor -{ -public: - void visitNode(const INode& n) {} - - void visitData(const IData& d) - { - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) {} -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 5) - { - cerr << "Usage: " << argv[0] << " input_file tree_file capacity query_type [intersection | 10NN]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[4], "intersection") == 0) queryType = 0; - else if (strcmp(argv[4], "10NN") == 0) queryType = 1; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file " << argv[1] << "." << endl; - return -1; - } - - // Create a new storage manager with the provided base name and a 4K page size. - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - //StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // Create a new, empty, MVRTree with dimensionality 2, minimum load 70%, using "file" as - // the StorageManager and the RSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = MVRTree::createNewMVRTree(*diskfile, 0.7, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::MVRTree::RV_RSTAR, indexIdentifier); - - size_t count = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2, t; - double plow[2], phigh[2]; - - while (fin) - { - fin >> t >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - TimeRegion r = TimeRegion(plow, phigh, t, t, 2); - - //ostringstream os; - //os << r; - //string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see MVRTree::Node::load and MVRTree::Node::store for - // an example of how to do that). - - //tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - TimeRegion r = TimeRegion(plow, phigh, t, t, 2); - - if (tree->deleteData(r, id) == false) - { - cerr << "******ERROR******" << endl; - cerr << "Cannot delete id: " << id << " , count: " << count << endl; - return -1; - } - } - else if (op == QUERY) - { - size_t qt1, qt2; - fin >> qt1 >> qt2; - if (! fin.good()) continue; - - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - TimeRegion r = TimeRegion(plow, phigh, qt1, qt2, 2); - - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else - { - //Point p = Point(plow, 2); - //tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - cerr << "Operations: " << count << endl; - cerr << *tree; - //cerr << "Buffer hits: " << file->getHits() << endl; - cerr << "Index ID: " << indexIdentifier << endl; - - bool ret = tree->isIndexValid(); - if (ret == false) cerr << "ERROR: Structure is invalid!" << endl; - else cerr << "The stucture seems O.K." << endl; - - delete tree; - //delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc b/spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc deleted file mode 100644 index 4f8d39e..0000000 --- a/spatialindex-1.8.5/test/mvrtree/MVRTreeQuery.cc +++ /dev/null @@ -1,279 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2003, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -// example of a Visitor pattern. -// findes the index and leaf IO for answering the query and prints -// the resulting data IDs to stdout. -class MyVisitor : public IVisitor -{ -public: - size_t m_indexIO; - size_t m_leafIO; - -public: - MyVisitor() : m_indexIO(0), m_leafIO(0) {} - - void visitNode(const INode& n) - { - if (n.isLeaf()) m_leafIO++; - else m_indexIO++; - } - - void visitData(const IData& d) - { - //IShape* pS; - //d.getShape(&pS); - // do something. - //delete pS; - - // data should be an array of characters representing a Region as a string. - //byte* pData = 0; - //size_t cLen = 0; - //d.getData(cLen, &pData); - // do something. - //string s = reinterpret_cast(pData); - //cout << s << endl; - //delete[] pData; - - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) {} -}; - -// example of a Strategy pattern. -// traverses the tree by level. -class MyQueryStrategy : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - queue ids; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - IShape* ps; - entry.getShape(&ps); - Region* pr = dynamic_cast(ps); - - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl << endl << endl; - // print node MBRs gnuplot style! - - delete ps; - - const INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 1) - { - for (size_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push(n->getChildIdentifier(cChild)); - } - } - - if (! ids.empty()) - { - nextEntry = ids.front(); ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } - } -}; - -// example of a Strategy pattern. -// find the total indexed space managed by the index (the MBR of the root). -class MyQueryStrategy2 : public IQueryStrategy -{ -public: - Region m_indexedSpace; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - // the first time we are called, entry points to the root. - - // stop after the root. - hasNext = false; - - IShape* ps; - entry.getShape(&ps); - ps->getMBR(m_indexedSpace); - delete ps; - } -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 4) - { - cerr << "Usage: " << argv[0] << " query_file tree_file query_type [intersection | 10NN]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[3], "intersection") == 0) queryType = 0; - else if (strcmp(argv[3], "10NN") == 0) queryType = 1; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open query file " << argv[1] << "." << endl; - return -1; - } - - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::loadDiskStorageManager(baseName); - // this will try to locate and open an already existing storage manager. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // If we need to open an existing tree stored in the storage manager, we only - // have to specify the index identifier as follows - ISpatialIndex* tree = MVRTree::loadMVRTree(*file, 1); - - size_t count = 0; - size_t indexIO = 0; - size_t leafIO = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2, t; - double plow[2], phigh[2]; - - while (fin) - { - fin >> t >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == QUERY) - { - size_t qt1, qt2; - fin >> qt1 >> qt2; - if (! fin.good()) continue; - - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - TimeRegion r = TimeRegion(plow, phigh, qt1, qt2, 2); - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else - { - //Point p = Point(plow, 2); - //tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - - indexIO += vis.m_indexIO; - leafIO += vis.m_leafIO; - // example of the Visitor pattern usage, for calculating how many nodes - // were visited. - } - else - { - cerr << "This is not a query operation." << endl; - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - MyQueryStrategy2 qs; - tree->queryStrategy(qs); - - cerr << "Indexed space: " << qs.m_indexedSpace << endl; - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Index I/O: " << indexIO << endl; - cerr << "Leaf I/O: " << leafIO << endl; - cerr << "Buffer hits: " << file->getHits() << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail writting the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/mvrtree/Makefile.am b/spatialindex-1.8.5/test/mvrtree/Makefile.am deleted file mode 100644 index 77a83a1..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Generator Exhaustive MVRTreeLoad MVRTreeQuery -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -MVRTreeLoad_SOURCES = MVRTreeLoad.cc -MVRTreeLoad_LDADD = ../../libspatialindex.la -MVRTreeQuery_SOURCES = MVRTreeQuery.cc -MVRTreeQuery_LDADD = ../../libspatialindex.la - diff --git a/spatialindex-1.8.5/test/mvrtree/Makefile.in b/spatialindex-1.8.5/test/mvrtree/Makefile.in deleted file mode 100644 index a8efde2..0000000 --- a/spatialindex-1.8.5/test/mvrtree/Makefile.in +++ /dev/null @@ -1,611 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Generator$(EXEEXT) Exhaustive$(EXEEXT) \ - MVRTreeLoad$(EXEEXT) MVRTreeQuery$(EXEEXT) -subdir = test/mvrtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Exhaustive_OBJECTS = Exhaustive.$(OBJEXT) -Exhaustive_OBJECTS = $(am_Exhaustive_OBJECTS) -Exhaustive_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_Generator_OBJECTS = Generator.$(OBJEXT) -Generator_OBJECTS = $(am_Generator_OBJECTS) -Generator_DEPENDENCIES = ../../libspatialindex.la -am_MVRTreeLoad_OBJECTS = MVRTreeLoad.$(OBJEXT) -MVRTreeLoad_OBJECTS = $(am_MVRTreeLoad_OBJECTS) -MVRTreeLoad_DEPENDENCIES = ../../libspatialindex.la -am_MVRTreeQuery_OBJECTS = MVRTreeQuery.$(OBJEXT) -MVRTreeQuery_OBJECTS = $(am_MVRTreeQuery_OBJECTS) -MVRTreeQuery_DEPENDENCIES = ../../libspatialindex.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(MVRTreeLoad_SOURCES) $(MVRTreeQuery_SOURCES) -DIST_SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(MVRTreeLoad_SOURCES) $(MVRTreeQuery_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -MVRTreeLoad_SOURCES = MVRTreeLoad.cc -MVRTreeLoad_LDADD = ../../libspatialindex.la -MVRTreeQuery_SOURCES = MVRTreeQuery.cc -MVRTreeQuery_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/mvrtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/mvrtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Exhaustive$(EXEEXT): $(Exhaustive_OBJECTS) $(Exhaustive_DEPENDENCIES) $(EXTRA_Exhaustive_DEPENDENCIES) - @rm -f Exhaustive$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Exhaustive_OBJECTS) $(Exhaustive_LDADD) $(LIBS) - -Generator$(EXEEXT): $(Generator_OBJECTS) $(Generator_DEPENDENCIES) $(EXTRA_Generator_DEPENDENCIES) - @rm -f Generator$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Generator_OBJECTS) $(Generator_LDADD) $(LIBS) - -MVRTreeLoad$(EXEEXT): $(MVRTreeLoad_OBJECTS) $(MVRTreeLoad_DEPENDENCIES) $(EXTRA_MVRTreeLoad_DEPENDENCIES) - @rm -f MVRTreeLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(MVRTreeLoad_OBJECTS) $(MVRTreeLoad_LDADD) $(LIBS) - -MVRTreeQuery$(EXEEXT): $(MVRTreeQuery_OBJECTS) $(MVRTreeQuery_DEPENDENCIES) $(EXTRA_MVRTreeQuery_DEPENDENCIES) - @rm -f MVRTreeQuery$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(MVRTreeQuery_OBJECTS) $(MVRTreeQuery_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exhaustive.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MVRTreeLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MVRTreeQuery.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/mvrtree/test1/run b/spatialindex-1.8.5/test/mvrtree/test1/run deleted file mode 100755 index 1aaa9c7..0000000 --- a/spatialindex-1.8.5/test/mvrtree/test1/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 1000 > d -awk '{if ($2 != 2) print $0}' < d > data -awk '{if ($2 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new MVR-Tree -../MVRTreeLoad data tree 20 intersection - -echo Querying MVR-Tree -../MVRTreeQuery queries tree intersection > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/mvrtree/test2/run b/spatialindex-1.8.5/test/mvrtree/test2/run deleted file mode 100755 index de5cb8b..0000000 --- a/spatialindex-1.8.5/test/mvrtree/test2/run +++ /dev/null @@ -1,22 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 1000 > mix - -echo Creating new MVR-Tree and Querying -../MVRTreeLoad mix tree 20 intersection > res - -echo Running exhaustive search -../Exhaustive mix intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/rtree/Exhaustive.cc b/spatialindex-1.8.5/test/rtree/Exhaustive.cc deleted file mode 100644 index 8c4d995..0000000 --- a/spatialindex-1.8.5/test/rtree/Exhaustive.cc +++ /dev/null @@ -1,206 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - - - -class Region -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - - Region(double x1, double y1, double x2, double y2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - } - - bool intersects(Region& r) - { - if ( - m_xmin > r.m_xmax || m_xmax < r.m_xmin || - m_ymin > r.m_ymax || m_ymax < r.m_ymin) - return false; - - return true; - } - - double getMinDist(const Region& r) - { - double ret = 0.0; - - if (r.m_xmax < m_xmin) - ret += std::pow(m_xmin - r.m_xmax, 2.0); - else if (r.m_xmin > m_xmax) - ret += std::pow(r.m_xmin - m_xmax, 2.0); - - if (r.m_ymax < m_ymin) - ret += std::pow(m_ymin - r.m_ymax, 2.0); - else if (r.m_ymin > m_ymax) - ret += std::pow(r.m_ymin - m_ymax, 2.0); - - return ret; - } -}; - -class NNEntry -{ -public: - size_t m_id; - double m_dist; - - NNEntry(size_t id, double dist) : m_id(id), m_dist(dist) {} - - struct greater : public std::binary_function - { - bool operator()(const NNEntry* __x, const NNEntry* __y) const { return __x->m_dist > __y->m_dist; } - }; -}; - -int main(int argc, char** argv) -{ - if (argc != 3) - { - std::cerr << "Usage: " << argv[0] << " data_file query_type [intersection | 10NN | selfjoin]." << std::endl; - return -1; - } - uint32_t queryType = 0; - - if (strcmp(argv[2], "intersection") == 0) queryType = 0; - else if (strcmp(argv[2], "10NN") == 0) queryType = 1; - else if (strcmp(argv[2], "selfjoin") == 0) queryType = 2; - else - { - std::cerr << "Unknown query type." << std::endl; - return -1; - } - - std::ifstream fin(argv[1]); - if (! fin) - { - std::cerr << "Cannot open data file" << argv[1] << "." << std::endl; - return -1; - } - - std::multimap data; - size_t id; - uint32_t op; - double x1, x2, y1, y2; - - while (fin) - { - fin >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; - - if (op == INSERT) - { - //insert - data.insert(std::pair(id, Region(x1, y1, x2, y2))); - } - else if (op == DELETE) - { - data.erase(id); - } - else if (op == QUERY) - { - //query - if (queryType == 0) - { - Region query = Region(x1, y1, x2, y2); - for (std::multimap::iterator it = data.begin(); it != data.end(); it++) - { - if (query.intersects((*it).second)) std::cout << (*it).first << std::endl; - } - } - else if (queryType == 1) - { - Region query = Region(x1, y1, x1, y1); - - std::priority_queue, NNEntry::greater > queue; - - for (std::multimap::iterator it = data.begin(); it != data.end(); it++) - { - queue.push(new NNEntry((*it).first, (*it).second.getMinDist(query))); - } - - size_t count = 0; - double knearest = 0.0; - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - - if (count >= 10 && e->m_dist > knearest) break; - - //std::cout << e->m_id << " " << e->m_dist << std::endl; - std::cout << e->m_id << std::endl; - count++; - knearest = e->m_dist; - delete e; - } - - while (! queue.empty()) - { - NNEntry* e = queue.top(); queue.pop(); - delete e; - } - } - else - { - Region query = Region(x1, y1, x2, y2); - - for (std::multimap::iterator it1 = data.begin(); it1 != data.end(); it1++) - { - if (query.intersects((*it1).second)) - { - for (std::multimap::iterator it2 = data.begin(); it2 != data.end(); it2++) - { - if ( - (*it1).first != (*it2).first && - query.intersects((*it2).second) && - (*it1).second.intersects((*it2).second)) - { - std::cout << (*it1).first << " " << (*it2).first << std::endl; - } - } - } - } - } - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/Generator.cc b/spatialindex-1.8.5/test/rtree/Generator.cc deleted file mode 100644 index 4dad919..0000000 --- a/spatialindex-1.8.5/test/rtree/Generator.cc +++ /dev/null @@ -1,140 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -#include -#include -#include - -#include - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -class Region -{ -public: - double m_xmin, m_ymin, m_xmax, m_ymax; - - Region(double x1, double y1, double x2, double y2) - { - m_xmin = (x1 < x2) ? x1 : x2; - m_ymin = (y1 < y2) ? y1 : y2; - m_xmax = (x1 > x2) ? x1 : x2; - m_ymax = (y1 > y2) ? y1 : y2; - } -}; - -int main(int argc, char** argv) -{ - if (argc != 3) - { - std::cerr << "Usage: " << argv[0] << " number_of_data time_instants." << std::endl; - return -1; - } - - size_t simulationLength = atol(argv[2]); - size_t numberOfObjects = atol(argv[1]); - std::map data; - libsupermesh::Tools::Random rnd; - - for (size_t i = 0; i < numberOfObjects; i++) - { - double x = rnd.nextUniformDouble(); - double y = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - Region r = Region(x, y, x + dx, y + dy); - - data.insert(std::pair(i, r)); - - std::cout << INSERT << " " << i << " " << r.m_xmin << " " << r.m_ymin << " " - << r.m_xmax << " " << r.m_ymax << std::endl; - } - - if (simulationLength == 0) - { - for (size_t i = 0; i < 1000; i++) - { - double stx = rnd.nextUniformDouble(); - double sty = rnd.nextUniformDouble(); - std::cout << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << std::endl; - } - } - - size_t A = static_cast(std::floor(static_cast(numberOfObjects) * 0.05)); - - for (size_t T = 1; T <= simulationLength; T++) - { - std::cerr << (simulationLength + 1 - T) << std::endl; - std::set examined; - - for (size_t a = 0; a < A; a++) - { - // find an id that is not yet examined. - size_t id = static_cast(rnd.nextUniformLong(0, numberOfObjects)); - std::set::iterator itSet = examined.find(id); - - while (itSet != examined.end()) - { - id = static_cast(rnd.nextUniformLong(0, numberOfObjects)); - itSet = examined.find(id); - } - examined.insert(id); - - std::map::iterator itMap = data.find(id); - assert(itMap != data.end()); - - std::cout << DELETE << " " << id << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << std::endl; - - double x = rnd.nextUniformDouble(); - double dx = rnd.nextUniformDouble(0.0001, 0.1); - (*itMap).second.m_xmin = x; - (*itMap).second.m_xmax = x + dx; - double y = rnd.nextUniformDouble(); - double dy = rnd.nextUniformDouble(0.0001, 0.1); - (*itMap).second.m_ymin = y; - (*itMap).second.m_ymax = y + dy; - - std::cout << INSERT << " " << id << " " << (*itMap).second.m_xmin << " " << (*itMap).second.m_ymin << " " - << (*itMap).second.m_xmax << " " << (*itMap).second.m_ymax << std::endl; - } - - double stx = rnd.nextUniformDouble(); - double sty = rnd.nextUniformDouble(); - std::cout << QUERY << " 9999999 " << stx << " " << sty << " " << (stx + 0.01) << " " << (sty + 0.01) << std::endl; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/Makefile.am b/spatialindex-1.8.5/test/rtree/Makefile.am deleted file mode 100644 index 820f9dd..0000000 --- a/spatialindex-1.8.5/test/rtree/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Generator Exhaustive RTreeLoad RTreeQuery RTreeBulkLoad -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -RTreeLoad_SOURCES = RTreeLoad.cc -RTreeLoad_LDADD = ../../libspatialindex.la -RTreeQuery_SOURCES = RTreeQuery.cc -RTreeQuery_LDADD = ../../libspatialindex.la -RTreeBulkLoad_SOURCES = RTreeBulkLoad.cc -RTreeBulkLoad_LDADD = ../../libspatialindex.la diff --git a/spatialindex-1.8.5/test/rtree/Makefile.in b/spatialindex-1.8.5/test/rtree/Makefile.in deleted file mode 100644 index 51b2c64..0000000 --- a/spatialindex-1.8.5/test/rtree/Makefile.in +++ /dev/null @@ -1,623 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Generator$(EXEEXT) Exhaustive$(EXEEXT) \ - RTreeLoad$(EXEEXT) RTreeQuery$(EXEEXT) RTreeBulkLoad$(EXEEXT) -subdir = test/rtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Exhaustive_OBJECTS = Exhaustive.$(OBJEXT) -Exhaustive_OBJECTS = $(am_Exhaustive_OBJECTS) -Exhaustive_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_Generator_OBJECTS = Generator.$(OBJEXT) -Generator_OBJECTS = $(am_Generator_OBJECTS) -Generator_DEPENDENCIES = ../../libspatialindex.la -am_RTreeBulkLoad_OBJECTS = RTreeBulkLoad.$(OBJEXT) -RTreeBulkLoad_OBJECTS = $(am_RTreeBulkLoad_OBJECTS) -RTreeBulkLoad_DEPENDENCIES = ../../libspatialindex.la -am_RTreeLoad_OBJECTS = RTreeLoad.$(OBJEXT) -RTreeLoad_OBJECTS = $(am_RTreeLoad_OBJECTS) -RTreeLoad_DEPENDENCIES = ../../libspatialindex.la -am_RTreeQuery_OBJECTS = RTreeQuery.$(OBJEXT) -RTreeQuery_OBJECTS = $(am_RTreeQuery_OBJECTS) -RTreeQuery_DEPENDENCIES = ../../libspatialindex.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(RTreeBulkLoad_SOURCES) $(RTreeLoad_SOURCES) \ - $(RTreeQuery_SOURCES) -DIST_SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(RTreeBulkLoad_SOURCES) $(RTreeLoad_SOURCES) \ - $(RTreeQuery_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Generator_SOURCES = Generator.cc -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -RTreeLoad_SOURCES = RTreeLoad.cc -RTreeLoad_LDADD = ../../libspatialindex.la -RTreeQuery_SOURCES = RTreeQuery.cc -RTreeQuery_LDADD = ../../libspatialindex.la -RTreeBulkLoad_SOURCES = RTreeBulkLoad.cc -RTreeBulkLoad_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/rtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/rtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Exhaustive$(EXEEXT): $(Exhaustive_OBJECTS) $(Exhaustive_DEPENDENCIES) $(EXTRA_Exhaustive_DEPENDENCIES) - @rm -f Exhaustive$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Exhaustive_OBJECTS) $(Exhaustive_LDADD) $(LIBS) - -Generator$(EXEEXT): $(Generator_OBJECTS) $(Generator_DEPENDENCIES) $(EXTRA_Generator_DEPENDENCIES) - @rm -f Generator$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Generator_OBJECTS) $(Generator_LDADD) $(LIBS) - -RTreeBulkLoad$(EXEEXT): $(RTreeBulkLoad_OBJECTS) $(RTreeBulkLoad_DEPENDENCIES) $(EXTRA_RTreeBulkLoad_DEPENDENCIES) - @rm -f RTreeBulkLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(RTreeBulkLoad_OBJECTS) $(RTreeBulkLoad_LDADD) $(LIBS) - -RTreeLoad$(EXEEXT): $(RTreeLoad_OBJECTS) $(RTreeLoad_DEPENDENCIES) $(EXTRA_RTreeLoad_DEPENDENCIES) - @rm -f RTreeLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(RTreeLoad_OBJECTS) $(RTreeLoad_LDADD) $(LIBS) - -RTreeQuery$(EXEEXT): $(RTreeQuery_OBJECTS) $(RTreeQuery_DEPENDENCIES) $(EXTRA_RTreeQuery_DEPENDENCIES) - @rm -f RTreeQuery$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(RTreeQuery_OBJECTS) $(RTreeQuery_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exhaustive.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTreeBulkLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTreeLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTreeQuery.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc b/spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc deleted file mode 100644 index 8123313..0000000 --- a/spatialindex-1.8.5/test/rtree/RTreeBulkLoad.cc +++ /dev/null @@ -1,173 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -class MyDataStream : public IDataStream -{ -public: - MyDataStream(std::string inputFile) : m_pNext(0) - { - m_fin.open(inputFile.c_str()); - - if (! m_fin) - throw libsupermesh::Tools::IllegalArgumentException("Input file not found."); - - readNextEntry(); - } - - virtual ~MyDataStream() - { - if (m_pNext != 0) delete m_pNext; - } - - virtual IData* getNext() - { - if (m_pNext == 0) return 0; - - RTree::Data* ret = m_pNext; - m_pNext = 0; - readNextEntry(); - return ret; - } - - virtual bool hasNext() - { - return (m_pNext != 0); - } - - virtual uint32_t size() - { - throw libsupermesh::Tools::NotSupportedException("Operation not supported."); - } - - virtual void rewind() - { - if (m_pNext != 0) - { - delete m_pNext; - m_pNext = 0; - } - - m_fin.seekg(0, std::ios::beg); - readNextEntry(); - } - - void readNextEntry() - { - id_type id; - uint32_t op; - double low[2], high[2]; - - m_fin >> op >> id >> low[0] >> low[1] >> high[0] >> high[1]; - - if (m_fin.good()) - { - if (op != INSERT) - throw libsupermesh::Tools::IllegalArgumentException( - "The data input should contain insertions only." - ); - - Region r(low, high, 2); - m_pNext = new RTree::Data(sizeof(double), reinterpret_cast(low), r, id); - // Associate a bogus data array with every entry for testing purposes. - // Once the data array is given to RTRee:Data a local copy will be created. - // Hence, the input data array can be deleted after this operation if not - // needed anymore. - } - } - - std::ifstream m_fin; - RTree::Data* m_pNext; -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 5) - { - std::cerr << "Usage: " << argv[0] << " input_file tree_file capacity utilization." << std::endl; - return -1; - } - - std::string baseName = argv[2]; - double utilization = atof(argv[4]); - - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - // Create a new storage manager with the provided base name and a 4K page size. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - MyDataStream stream(argv[1]); - - // Create and bulk load a new RTree with dimensionality 2, using "file" as - // the StorageManager and the RSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = RTree::createAndBulkLoadNewRTree( - RTree::BLM_STR, stream, *file, utilization, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::RTree::RV_RSTAR, indexIdentifier); - - std::cerr << *tree; - std::cerr << "Buffer hits: " << file->getHits() << std::endl; - std::cerr << "Index ID: " << indexIdentifier << std::endl; - - bool ret = tree->isIndexValid(); - if (ret == false) std::cerr << "ERROR: Structure is invalid!" << std::endl; - else std::cerr << "The stucture seems O.K." << std::endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - std::cerr << "******ERROR******" << std::endl; - std::string s = e.what(); - std::cerr << s << std::endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/RTreeLoad.cc b/spatialindex-1.8.5/test/rtree/RTreeLoad.cc deleted file mode 100644 index 311b96a..0000000 --- a/spatialindex-1.8.5/test/rtree/RTreeLoad.cc +++ /dev/null @@ -1,220 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// see RTreeQuery for a more elaborate example. -class MyVisitor : public IVisitor -{ -public: - void visitNode(const INode& n) {} - - void visitData(const IData& d) - { - std::cout << d.getIdentifier() << std::endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) {} -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 5) - { - std::cerr << "Usage: " << argv[0] << " input_file tree_file capacity query_type [intersection | 10NN | selfjoin | contains]." << std::endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[4], "intersection") == 0) queryType = 0; - else if (strcmp(argv[4], "10NN") == 0) queryType = 1; - else if (strcmp(argv[4], "selfjoin") == 0) queryType = 2; - else if (strcmp(argv[4], "contains") == 0) queryType = 3; - else - { - std::cerr << "Unknown query type." << std::endl; - return -1; - } - - std::ifstream fin(argv[1]); - if (! fin) - { - std::cerr << "Cannot open data file " << argv[1] << "." << std::endl; - return -1; - } - - // Create a new storage manager with the provided base name and a 4K page size. - std::string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // Create a new, empty, RTree with dimensionality 2, minimum load 70%, using "file" as - // the StorageManager and the RSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = RTree::createNewRTree(*file, 0.7, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::RTree::RV_RSTAR, indexIdentifier); - - size_t count = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2; - double plow[2], phigh[2]; - - while (fin) - { - fin >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - Region r = Region(plow, phigh, 2); - - std::ostringstream os; - os << r; - std::string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see RTree::Node::load and RTree::Node::store for - // an example of how to do that). - - tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - //tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - Region r = Region(plow, phigh, 2); - - if (tree->deleteData(r, id) == false) - { - std::cerr << "******ERROR******" << std::endl; - std::cerr << "Cannot delete id: " << id << " , count: " << count << std::endl; - return -1; - } - } - else if (op == QUERY) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - Region r = Region(plow, phigh, 2); - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else if (queryType == 1) - { - Point p = Point(plow, 2); - tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - else if(queryType == 2) - { - Region r = Region(plow, phigh, 2); - tree->selfJoinQuery(r, vis); - } - else - { - Region r = Region(plow, phigh, 2); - tree->containsWhatQuery(r, vis); - // this will find all data that is contained by the query range. - } - } - - if ((count % 1000) == 0) - std::cerr << count << std::endl; - - count++; - } - - std::cerr << "Operations: " << count << std::endl; - std::cerr << *tree; - std::cerr << "Buffer hits: " << file->getHits() << std::endl; - std::cerr << "Index ID: " << indexIdentifier << std::endl; - - bool ret = tree->isIndexValid(); - if (ret == false) std::cerr << "ERROR: Structure is invalid!" << std::endl; - else std::cerr << "The stucture seems O.K." << std::endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - std::cerr << "******ERROR******" << std::endl; - std::string s = e.what(); - std::cerr << s << std::endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/RTreeQuery.cc b/spatialindex-1.8.5/test/rtree/RTreeQuery.cc deleted file mode 100644 index 32dc07a..0000000 --- a/spatialindex-1.8.5/test/rtree/RTreeQuery.cc +++ /dev/null @@ -1,283 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -#include - -// include library header file. -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// findes the index and leaf IO for answering the query and prints -// the resulting data IDs to stdout. -class MyVisitor : public IVisitor -{ -public: - size_t m_indexIO; - size_t m_leafIO; - -public: - MyVisitor() : m_indexIO(0), m_leafIO(0) {} - - void visitNode(const INode& n) - { - if (n.isLeaf()) m_leafIO++; - else m_indexIO++; - } - - void visitData(const IData& d) - { - IShape* pS; - d.getShape(&pS); - // do something. - delete pS; - - // data should be an array of characters representing a Region as a string. - byte* pData = 0; - uint32_t cLen = 0; - d.getData(cLen, &pData); - // do something. - //string s = reinterpret_cast(pData); - //cout << s << endl; - delete[] pData; - - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& v) - { - cout << v[0]->getIdentifier() << " " << v[1]->getIdentifier() << endl; - } -}; - -// example of a Strategy pattern. -// traverses the tree by level. -class MyQueryStrategy : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - queue ids; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - IShape* ps; - entry.getShape(&ps); - Region* pr = dynamic_cast(ps); - - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl << endl << endl; - // print node MBRs gnuplot style! - - delete ps; - - const INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 1) - { - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push(n->getChildIdentifier(cChild)); - } - } - - if (! ids.empty()) - { - nextEntry = ids.front(); ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } - } -}; - -// example of a Strategy pattern. -// find the total indexed space managed by the index (the MBR of the root). -class MyQueryStrategy2 : public IQueryStrategy -{ -public: - Region m_indexedSpace; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - // the first time we are called, entry points to the root. - - // stop after the root. - hasNext = false; - - IShape* ps; - entry.getShape(&ps); - ps->getMBR(m_indexedSpace); - delete ps; - } -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 4) - { - cerr << "Usage: " << argv[0] << " query_file tree_file query_type [intersection | 10NN | selfjoin]." << endl; - return -1; - } - - uint32_t queryType = 0; - - if (strcmp(argv[3], "intersection") == 0) queryType = 0; - else if (strcmp(argv[3], "10NN") == 0) queryType = 1; - else if (strcmp(argv[3], "selfjoin") == 0) queryType = 2; - else - { - cerr << "Unknown query type." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open query file " << argv[1] << "." << endl; - return -1; - } - - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::loadDiskStorageManager(baseName); - // this will try to locate and open an already existing storage manager. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // If we need to open an existing tree stored in the storage manager, we only - // have to specify the index identifier as follows - ISpatialIndex* tree = RTree::loadRTree(*file, 1); - - size_t count = 0; - size_t indexIO = 0; - size_t leafIO = 0; - id_type id; - uint32_t op; - double x1, x2, y1, y2; - double plow[2], phigh[2]; - - while (fin) - { - fin >> op >> id >> x1 >> y1 >> x2 >> y2; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == QUERY) - { - plow[0] = x1; plow[1] = y1; - phigh[0] = x2; phigh[1] = y2; - - MyVisitor vis; - - if (queryType == 0) - { - Region r = Region(plow, phigh, 2); - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - else if (queryType == 1) - { - Point p = Point(plow, 2); - tree->nearestNeighborQuery(10, p, vis); - // this will find the 10 nearest neighbors. - } - else - { - Region r = Region(plow, phigh, 2); - tree->selfJoinQuery(r, vis); - } - - indexIO += vis.m_indexIO; - leafIO += vis.m_leafIO; - // example of the Visitor pattern usage, for calculating how many nodes - // were visited. - } - else - { - cerr << "This is not a query operation." << endl; - } - - if ((count % 1000) == 0) cerr << count << endl; - - count++; - } - - MyQueryStrategy2 qs; - tree->queryStrategy(qs); - - cerr << "Indexed space: " << qs.m_indexedSpace << endl; - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Index I/O: " << indexIO << endl; - cerr << "Leaf I/O: " << leafIO << endl; - cerr << "Buffer hits: " << file->getHits() << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail writting the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/rtree/test1/run b/spatialindex-1.8.5/test/rtree/test1/run deleted file mode 100755 index 350c2bc..0000000 --- a/spatialindex-1.8.5/test/rtree/test1/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 10000 100 > d -awk '{if ($1 != 2) print $0}' < d > data -awk '{if ($1 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new R-Tree -../RTreeLoad data tree 20 10NN - -echo Querying R-Tree -../RTreeQuery queries tree 10NN > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t 10NN > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/rtree/test2/run b/spatialindex-1.8.5/test/rtree/test2/run deleted file mode 100755 index 9e7ccf2..0000000 --- a/spatialindex-1.8.5/test/rtree/test2/run +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 10000 100 > mix - -echo Creating new R-Tree and Querying -../RTreeLoad mix tree 20 intersection > res - -echo Running exhaustive search -../Exhaustive mix intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi - diff --git a/spatialindex-1.8.5/test/rtree/test3/run b/spatialindex-1.8.5/test/rtree/test3/run deleted file mode 100755 index 3392dcb..0000000 --- a/spatialindex-1.8.5/test/rtree/test3/run +++ /dev/null @@ -1,30 +0,0 @@ -#! /bin/bash - -export PATH=$PATH:../../.. - -#echo Generating 10 million entries. This might take a while -#echo Generating dataset -../Generator 1000000 0 > d -awk '{if ($1 == 1) print $0}' < d > data -awk '{if ($1 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new R-Tree -../RTreeBulkLoad data tree 1000 0.9 - -echo Querying R-Tree -../RTreeQuery queries tree intersection > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t intersection > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then echo "Same results with exhaustive search. Everything seems fine." -else echo "PROBLEM! We got different results from exhaustive search!" -fi -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* diff --git a/spatialindex-1.8.5/test/rtree/test4/run b/spatialindex-1.8.5/test/rtree/test4/run deleted file mode 100755 index 8bef71b..0000000 --- a/spatialindex-1.8.5/test/rtree/test4/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator 10000 0 > d -awk '{if ($1 == 1) print $0}' < d > data -awk '{if ($1 == 2) print $0}' < d > queries -rm -rf d - -echo Creating new R-Tree -../RTreeLoad data tree 20 selfjoin - -echo Querying R-Tree -../RTreeQuery queries tree selfjoin > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t selfjoin > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/tprtree/Exhaustive.cc b/spatialindex-1.8.5/test/tprtree/Exhaustive.cc deleted file mode 100644 index 741fbe8..0000000 --- a/spatialindex-1.8.5/test/tprtree/Exhaustive.cc +++ /dev/null @@ -1,264 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -#include -#include -#include -#include -#include -#include - -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -#include - - -class Rectangle -{ -public: - Rectangle(double xlow, double xhigh, double ylow, double yhigh) - : m_xlow(xlow), m_xhigh(xhigh), m_ylow(ylow), m_yhigh(yhigh) {} - - size_t computeCode(double x, double y) - { - size_t c = 0; - if(y > m_yhigh) c |= TOP; - else if(y < m_ylow) c |= BOTTOM; - if( x > m_xhigh) c |= RIGHT; - else if(x < m_xlow) c |= LEFT; - return c; - } - - bool intersectsPoint(double x, double y) - { - if (m_xlow <= x && x <= m_xhigh && - m_ylow <= y && y <= m_yhigh) return true; - return false; - } - - bool intersectsSegment(double x0, double x1, double y0, double y1) - { - size_t C0, C1, C; - double x,y; - - C0 = computeCode(x0, y0); - C1 = computeCode(x1, y1); - - for(;;) - { - /* - * trivial accept: both ends inside rectangle - */ - if((C0 | C1) == 0) - { - return true; - } - - /* - * trivial reject: both ends on the external side - * of the rectanlge - */ - if((C0 & C1) != 0) - { - return false; - } - - /* - * normal case: clip end outside rectangle - */ - C = C0 ? C0 : C1; - if(C & TOP) - { - x = x0 + (x1 - x0) * (m_yhigh - y0) / (y1 - y0); - y = m_yhigh; - } - else if(C & BOTTOM) - { - x = x0 + (x1 - x0) * (m_ylow - y0) / (y1 - y0); - y = m_ylow; - } - else if(C & RIGHT) - { - x = m_xhigh; - y = y0 + (y1 - y0) * (m_xhigh - x0) / (x1 - x0); - } - else - { - x = m_xlow; - y = y0 + (y1 - y0) * (m_xlow - x0) / (x1 - x0); - } - - /* - * set new end point and iterate - */ - if(C == C0) - { - x0 = x; y0 = y; - C0 = computeCode(x0, y0); - } - else - { - x1 =x; y1 = y; - C1 = computeCode(x1, y1); - } - } - } - - static const size_t TOP = 0x1; - static const size_t BOTTOM = 0x2; - static const size_t RIGHT = 0x4; - static const size_t LEFT = 0x8; - - double m_xlow, m_xhigh, m_ylow, m_yhigh; -}; - -class MovingPoint -{ -public: - MovingPoint(double ax, double vx, double ay, double vy, double rt) - : m_ax(ax), m_vx(vx), m_ay(ay), m_vy(vy), m_rt(rt) {} - - double getX(double t) { return m_ax + m_vx * (t - m_rt); } - double getY(double t) { return m_ay + m_vy * (t - m_rt); } - - double m_ax, m_vx, m_ay, m_vy; - double m_rt; -}; - -class TimeRectangle -{ -public: - TimeRectangle(double xlow, double xhigh, double ylow, double yhigh, double tlow, double thigh) - : m_xlow(xlow), m_xhigh(xhigh), m_ylow(ylow), m_yhigh(yhigh), m_tlow(tlow), m_thigh(thigh) {} - - bool intersects(MovingPoint& mp) - { - double x0 = mp.getX(m_tlow); - double x1 = mp.getX(m_thigh); - double y0 = mp.getY(m_tlow); - double y1 = mp.getY(m_thigh); - //double t0 = m_tlow; - //double t1 = m_thigh; - - Rectangle rxy(m_xlow, m_xhigh, m_ylow, m_yhigh); - return rxy.intersectsSegment(x0, x1, y0, y1); - -/* - // not needed to check all planes since it is - // guaranteed that on the time dimension - // the line segment and the query cube have - // exactly the same length (thus, if they intersect - // they should intersect on the X-Y projection for sure). - - Rectangle rxy(m_xlow, m_xhigh, m_ylow, m_yhigh); - if (rxy.intersectsSegment(x0, x1, y0, y1)) - { - Rectangle rxt(m_xlow, m_xhigh, m_tlow, m_thigh); - if (rxt.intersectsSegment(x0, x1, t0, t1)) - { - Rectangle ryt(m_ylow, m_yhigh, m_tlow, m_thigh); - if (ryt.intersectsSegment(y0, y1, t0, t1)) return true; - } - } -*/ - - return false; - } - - bool intersectsStupid(MovingPoint& mp) - { - size_t t0 = static_cast(std::floor(m_tlow)); - size_t t1 = static_cast(std::floor(m_thigh)); - - Rectangle rxy(m_xlow, m_xhigh, m_ylow, m_yhigh); - - for (size_t T = t0; T <= t1; T++) - { - if (rxy.intersectsPoint(mp.getX(T), mp.getY(T))) return true; - } - return false; - } - - double m_xlow, m_xhigh, m_ylow, m_yhigh; - double m_tlow, m_thigh; -}; - -int main(int argc, char** argv) -{ - if (argc != 2) - { - cerr << "Usage: " << argv[0] << " data_file." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file" << argv[1] << "." << endl; - return -1; - } - - map data; - size_t id, op; - double ax, vx, ay, vy, ct, rt, unused; - - while (fin) - { - fin >> id >> op >> ct >> rt >> unused >> ax >> vx >> unused >> ay >> vy; - if (! fin.good()) continue; - - if (op == INSERT) - { - data.insert(pair(id, MovingPoint(ax, vx, ay, vy, ct))); - } - else if (op == DELETE) - { - data.erase(id); - } - else if (op == QUERY) - { - TimeRectangle query = TimeRectangle(ax, vx, ay, vy, ct, rt); - std::map::iterator it; - for (it = data.begin(); it != data.end(); it++) - { - //assert(query.intersects((*it).second) == query.intersectsStupid((*it).second)); - if (query.intersects((*it).second) == false && query.intersectsStupid((*it).second) == true) - { - cerr << "Something is wrong: " << ct << " " << (*it).first << endl; - return -1; - } - if (query.intersects((*it).second)) cout << (*it).first << endl; - } - } - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/tprtree/Generator.cc b/spatialindex-1.8.5/test/tprtree/Generator.cc deleted file mode 100644 index 80679b2..0000000 --- a/spatialindex-1.8.5/test/tprtree/Generator.cc +++ /dev/null @@ -1,105 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#include -#include -#include - -#include "RandomGenerator.h" - -int main(int argc, char** argv) -{ - size_t ds = 1000, sl = 100, mui = 20, id = UNIFORM; - double a = 0.01; - - for (int i = 1; i < argc; i++) - { - if (! strcmp(argv[i], "-ds")) - { - i++; - if (i >= argc) - { - cerr << "Missing dataset size." << endl; - return -1; - } - ds = atoi(argv[i]); - } - else if (! strcmp(argv[i], "-sl")) - { - i++; - if (i >= argc) - { - cerr << "Missing simulation length." << endl; - return -1; - } - sl = atoi(argv[i]); - } - else if (! strcmp(argv[i], "-a")) - { - i++; - if (i >= argc) - { - cerr << "Missing agility." << endl; - return -1; - } - a = atof(argv[i]); - } - else if (! strcmp(argv[i], "-mui")) - { - i++; - if (i >= argc) - { - cerr << "Missing update rate." << endl; - return -1; - } - mui = atoi(argv[i]); - } - else - { - cerr << "Usage: " << endl - << " -ds dataset size" << endl - << " -sl simulation length" << endl - << " -a agility" << endl - << " -sd speed distribution" << endl - << " -id initial distribution" << endl - << " -mui maximum update interval" << endl; - return -1; - } - } - - RandomGenerator g = RandomGenerator(ds, sl, mui, a); - g.m_initialDistribution = id; - g.m_maxX = 1.0; g.m_maxY = 1.0; - g.m_minQueryExtent = 0.05; g.m_maxQueryExtent = 0.1; - g.m_minSpeed = 0.0025; // 15 miles/hour = 0.25 miles/minute - g.m_maxSpeed = 0.0166; // 100 miles/hour = 1.66 miles/minute - g.m_speedMean = 0.005; // 30 miles/hour = 0.5 miles/minute - g.m_speedStandardDeviation = 0.0033; // 20 miles/hour = 0.33 miles/minute - - g.generate(); -} diff --git a/spatialindex-1.8.5/test/tprtree/Makefile.am b/spatialindex-1.8.5/test/tprtree/Makefile.am deleted file mode 100644 index da64516..0000000 --- a/spatialindex-1.8.5/test/tprtree/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -noinst_PROGRAMS = Generator Exhaustive TPRTreeLoad TPRTreeQuery -INCLUDES = -I../../include -Generator_SOURCES = RandomGenerator.cc Generator.cc RandomGenerator.h -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -TPRTreeLoad_SOURCES = TPRTreeLoad.cc -TPRTreeLoad_LDADD = ../../libspatialindex.la -TPRTreeQuery_SOURCES = TPRTreeQuery.cc -TPRTreeQuery_LDADD = ../../libspatialindex.la diff --git a/spatialindex-1.8.5/test/tprtree/Makefile.in b/spatialindex-1.8.5/test/tprtree/Makefile.in deleted file mode 100644 index b4e086c..0000000 --- a/spatialindex-1.8.5/test/tprtree/Makefile.in +++ /dev/null @@ -1,630 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = Generator$(EXEEXT) Exhaustive$(EXEEXT) \ - TPRTreeLoad$(EXEEXT) TPRTreeQuery$(EXEEXT) -subdir = test/tprtree -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_Exhaustive_OBJECTS = Exhaustive.$(OBJEXT) -Exhaustive_OBJECTS = $(am_Exhaustive_OBJECTS) -Exhaustive_DEPENDENCIES = ../../libspatialindex.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_Generator_OBJECTS = RandomGenerator.$(OBJEXT) Generator.$(OBJEXT) -Generator_OBJECTS = $(am_Generator_OBJECTS) -Generator_DEPENDENCIES = ../../libspatialindex.la -am_TPRTreeLoad_OBJECTS = TPRTreeLoad.$(OBJEXT) -TPRTreeLoad_OBJECTS = $(am_TPRTreeLoad_OBJECTS) -TPRTreeLoad_DEPENDENCIES = ../../libspatialindex.la -am_TPRTreeQuery_OBJECTS = TPRTreeQuery.$(OBJEXT) -TPRTreeQuery_OBJECTS = $(am_TPRTreeQuery_OBJECTS) -TPRTreeQuery_DEPENDENCIES = ../../libspatialindex.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(TPRTreeLoad_SOURCES) $(TPRTreeQuery_SOURCES) -DIST_SOURCES = $(Exhaustive_SOURCES) $(Generator_SOURCES) \ - $(TPRTreeLoad_SOURCES) $(TPRTreeQuery_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -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@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I../../include -Generator_SOURCES = RandomGenerator.cc Generator.cc RandomGenerator.h -Generator_LDADD = ../../libspatialindex.la -Exhaustive_SOURCES = Exhaustive.cc -Exhaustive_LDADD = ../../libspatialindex.la -TPRTreeLoad_SOURCES = TPRTreeLoad.cc -TPRTreeLoad_LDADD = ../../libspatialindex.la -TPRTreeQuery_SOURCES = TPRTreeQuery.cc -TPRTreeQuery_LDADD = ../../libspatialindex.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/tprtree/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/tprtree/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -Exhaustive$(EXEEXT): $(Exhaustive_OBJECTS) $(Exhaustive_DEPENDENCIES) $(EXTRA_Exhaustive_DEPENDENCIES) - @rm -f Exhaustive$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Exhaustive_OBJECTS) $(Exhaustive_LDADD) $(LIBS) - -Generator$(EXEEXT): $(Generator_OBJECTS) $(Generator_DEPENDENCIES) $(EXTRA_Generator_DEPENDENCIES) - @rm -f Generator$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(Generator_OBJECTS) $(Generator_LDADD) $(LIBS) - -TPRTreeLoad$(EXEEXT): $(TPRTreeLoad_OBJECTS) $(TPRTreeLoad_DEPENDENCIES) $(EXTRA_TPRTreeLoad_DEPENDENCIES) - @rm -f TPRTreeLoad$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(TPRTreeLoad_OBJECTS) $(TPRTreeLoad_LDADD) $(LIBS) - -TPRTreeQuery$(EXEEXT): $(TPRTreeQuery_OBJECTS) $(TPRTreeQuery_DEPENDENCIES) $(EXTRA_TPRTreeQuery_DEPENDENCIES) - @rm -f TPRTreeQuery$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(TPRTreeQuery_OBJECTS) $(TPRTreeQuery_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exhaustive.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RandomGenerator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TPRTreeLoad.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TPRTreeQuery.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/spatialindex-1.8.5/test/tprtree/RandomGenerator.cc b/spatialindex-1.8.5/test/tprtree/RandomGenerator.cc deleted file mode 100644 index d27436a..0000000 --- a/spatialindex-1.8.5/test/tprtree/RandomGenerator.cc +++ /dev/null @@ -1,183 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#include "RandomGenerator.h" - -RandomGenerator::MyMovingObject* RandomGenerator::createObject(int id, int st, double xmin, double xmax, double ymin, double ymax) -{ - double x, y; - x = m_random.nextUniformDouble(xmin, xmax); - y = m_random.nextUniformDouble(ymin, ymax); - - return createObject(id, st, x, y); -} - -RandomGenerator::MyMovingObject* RandomGenerator::createObject(int id, int st, double x, double y) -{ - MyMovingObject* o = new MyMovingObject(); - - o->m_id = id; - o->m_sx = x; - o->m_sy = y; - o->m_st = st; - o->m_kt = -1; - - double v = generateSpeed(); - if (m_random.flipCoin()) v *= -1.0; - - double angle = m_random.nextUniformDouble(-M_PI_2 , M_PI_2); - if (m_random.flipCoin()) angle *= -1.0; - - o->m_vx = cos(angle) * v; - o->m_vy = sin(angle) * v; - - cout << o->m_id << " " << INSERT << " " << st << " " << o->m_st << " 1 " << o->m_sx << " " << o->m_vx - << " 1 " << o->m_sy << " " << o->m_vy << endl; - - map::iterator itDataset = m_dataset.find(o->m_id); - if (itDataset != m_dataset.end()) m_dataset.erase(itDataset); - m_dataset.insert(pair(o->m_id, o)); - - int t1 = o->m_st + m_maximumUpdateInterval; - int t2; - - for (t2 = st; t2 <= m_simulationLength; t2++) - { - if (o->getX(t2) > m_maxX || o->getY(t2) > m_maxY || o->getX(t2) < 0.0 || o->getY(t2) < 0.0) break; - } - - o->m_outOfBounds = (t2 < t1) ? true : false; - int t = min(t1, t2); - - if (t == st) t++; - if (t < m_simulationLength) - { - m_updateArray[t].insert(o->m_id); - o->m_kt = t; - } - - return o; -} - -double RandomGenerator::generateSpeed() -{ - return m_random.nextUniformDouble(m_minSpeed, m_maxSpeed); -} - -void RandomGenerator::generate() -{ - for (map::iterator itDataset = m_dataset.begin(); itDataset != m_dataset.end(); itDataset++) - { - delete (*itDataset).second; - } - m_dataset.clear(); - - for (int cIndex = 0; cIndex < m_simulationLength; cIndex++) - { - m_updateArray[cIndex].clear(); - } - - int updatesPerTimeInstant = (int) ceil(((double) m_datasetSize) * m_agility); - - for (int cObject = 0; cObject < m_datasetSize; cObject++) - { - createObject(cObject, 0, 0.0, m_maxX, 0.0, m_maxY); - - if (cObject % 10000 == 0) cerr << cObject << endl; - } - - for (int Tnow = 1; Tnow < m_simulationLength; Tnow++) - { - cerr << "Time: " << Tnow; - - int cTotalUpdates = 0; - int cNeedToUpdate = updatesPerTimeInstant; - set updated; - set::iterator itUpdateArray = m_updateArray[Tnow].begin(); - - while (cNeedToUpdate > 0 || itUpdateArray != m_updateArray[Tnow].end()) - { - int id; - bool bKilled = false; - if (itUpdateArray != m_updateArray[Tnow].end()) - { - bKilled = true; - id = *itUpdateArray; - itUpdateArray++; - } - else - { - id = m_random.nextUniformLong(0, m_datasetSize); - set::iterator itUpdated = updated.find(id); - - while (itUpdated != updated.end()) - { - id = m_random.nextUniformLong(0, m_datasetSize); - itUpdated = updated.find(id); - } - } - updated.insert(id); - cNeedToUpdate--; - cTotalUpdates++; - - map::iterator itDataset = m_dataset.find(id); - assert(itDataset != m_dataset.end()); - MyMovingObject* o = (*itDataset).second; - m_dataset.erase(itDataset); - if (o->m_kt >= 0) m_updateArray[o->m_kt].erase(o->m_id); - - cout << o->m_id << " " << DELETE << " " << Tnow << " " << o->m_st << " 1 " << o->m_sx << " " << o->m_vx - << " 1 " << o->m_sy << " " << o->m_vy << endl; - - if (bKilled && o->m_outOfBounds) - { - createObject(o->m_id, Tnow, 0.0, m_maxX, 0.0, m_maxY); - } - else - { - createObject(o->m_id, Tnow, o->getX(Tnow), o->getY(Tnow)); - } - - delete o; - } - - for (int cQuery = 0; cQuery < m_queriesPerTimeInstant; cQuery++) - { - double x = m_random.nextUniformDouble(0.0, m_maxX); - double y = m_random.nextUniformDouble(0.0, m_maxY); - double dx = m_random.nextUniformDouble(m_minQueryExtent, m_maxQueryExtent); - double dy = m_random.nextUniformDouble(m_minQueryExtent, m_maxQueryExtent); - int dt = m_random.nextUniformLong(m_minQueryInterval, m_maxQueryInterval); - int t = m_random.nextUniformLong(Tnow, Tnow + m_horizon - dt); - - cout << "9999999 " << QUERY << " " << t << " " << t + dt << " 1 " << x - dx << " " << x + dx << " 1 " << y - dy << " " << y + dy << endl; - } - - cerr << ", Updates: " << cTotalUpdates << endl; - } -} diff --git a/spatialindex-1.8.5/test/tprtree/RandomGenerator.h b/spatialindex-1.8.5/test/tprtree/RandomGenerator.h deleted file mode 100644 index 424fcaf..0000000 --- a/spatialindex-1.8.5/test/tprtree/RandomGenerator.h +++ /dev/null @@ -1,151 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -#ifndef _random_generator_h -#define _random_generator_h - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -using namespace std; - -#define DELETE 0 -#define INSERT 1 -#define QUERY 2 - -#define UNIFORM 1 - -class RandomGenerator -{ -public: - RandomGenerator(int ds, int sl, int mui, double a) - : m_datasetSize(ds), - m_simulationLength(sl), - m_initialDistribution(UNIFORM), - m_maximumUpdateInterval(mui), - m_queriesPerTimeInstant(5), - m_minQueryExtent(5), - m_maxQueryExtent(10), - m_horizon(20), - m_maxQueryInterval(10), - m_minQueryInterval(2), - m_agility(a), - m_minSpeed(0.25), // 15 miles/hour = 0.25 miles/minute - m_maxSpeed(1.66), // 100 miles/hour = 1.66 miles/minute - m_speedMean(0.5), // 30 miles/hour = 0.5 miles/minute - m_speedStandardDeviation(0.33), // 20 miles/hour = 0.33 miles/minute - m_maxX(100.0), - m_maxY(100.0), - m_updateArray(0) - { - m_updateArray = new set[m_simulationLength]; - } - - virtual ~RandomGenerator() - { - for (map::iterator it = m_dataset.begin(); it != m_dataset.end(); it++) - { - delete (*it).second; - } - delete[] m_updateArray; - } - - class MyMovingObject - { - public: - double getX(int t) - { - return m_sx + m_vx * (t - m_st); - } - - double getY(int t) - { - return m_sy + m_vy * (t - m_st); - } - - public: - int m_id; - int m_st; - int m_kt; - double m_sx, m_sy; - double m_vx, m_vy; - bool m_outOfBounds; - }; - - virtual void generate(); - MyMovingObject* createObject(int id, int st, double xmin, double xmax, double ymin, double ymax); - MyMovingObject* createObject(int id, int st, double x, double y); - double generateSpeed(); - -public: - int m_datasetSize; - int m_simulationLength; - int m_initialDistribution; - int m_maximumUpdateInterval; - int m_queriesPerTimeInstant; - double m_minQueryExtent; - double m_maxQueryExtent; - int m_horizon; - int m_maxQueryInterval; - int m_minQueryInterval; - double m_agility; - double m_minSpeed; - double m_maxSpeed; - double m_speedMean; - double m_speedStandardDeviation; - double m_maxX; - double m_maxY; - - map m_dataset; - set* m_updateArray; - libsupermesh::Tools::Random m_random; -}; - -#endif diff --git a/spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc b/spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc deleted file mode 100644 index 958a516..0000000 --- a/spatialindex-1.8.5/test/tprtree/TPRTreeLoad.cc +++ /dev/null @@ -1,209 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - - -// NOTE: Please read README.txt before browsing this code. - -// include library header file. - -#include - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// see RTreeQuery for a more elaborate example. -class MyVisitor : public IVisitor -{ -public: - void visitNode(const INode& ) {} - - void visitData(const IData& d) - { - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& ) {} -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 4) - { - cerr << "Usage: " << argv[0] << " input_file tree_file capacity." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file " << argv[1] << "." << endl; - return -1; - } - - // Create a new storage manager with the provided base name and a 4K page size. - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::createNewDiskStorageManager(baseName, 4096); - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // Create a new, empty, TPRTree with dimensionality 2, minimum load 70%, horizon 20 time instants, using "file" as - // the StorageManager and the TPRSTAR splitting policy. - id_type indexIdentifier; - ISpatialIndex* tree = TPRTree::createNewTPRTree(*file, 0.7, atoi(argv[3]), atoi(argv[3]), 2, libsupermesh::SpatialIndex::TPRTree::TPRV_RSTAR, 20, indexIdentifier); - - size_t count = 0; - id_type id; - size_t op; - double ax, vx, ay, vy, ct, rt, unused; - double plow[2], phigh[2]; - double pvlow[2], pvhigh[2]; - - while (fin) - { - fin >> id >> op >> ct >> rt >> unused >> ax >> vx >> unused >> ay >> vy; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(ct, std::numeric_limits::max()); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - //ostringstream os; - //os << r; - //string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see RTree::Node::load and RTree::Node::store for - // an example of how to do that). - - //tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(rt, ct); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - if (tree->deleteData(r, id) == false) - { - cerr << "******ERROR******" << endl; - cerr << "Cannot delete id: " << id << " , count: " << count << endl; - return -1; - } - } - else if (op == QUERY) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = vx; phigh[1] = vy; - pvlow[0] = 0.0; pvlow[1] = 0.0; - pvhigh[0] = 0.0; pvhigh[1] = 0.0; - - libsupermesh::Tools::Interval ivT(ct, rt); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - MyVisitor vis; - - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Buffer hits: " << file->getHits() << endl; - cerr << "Index ID: " << indexIdentifier << endl; - - bool ret = tree->isIndexValid(); - if (ret == false) cerr << "ERROR: Structure is invalid!" << endl; - else cerr << "The stucture seems O.K." << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail trying to write the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc b/spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc deleted file mode 100644 index 2579609..0000000 --- a/spatialindex-1.8.5/test/tprtree/TPRTreeQuery.cc +++ /dev/null @@ -1,309 +0,0 @@ -/****************************************************************************** - * Project: libspatialindex - A C++ library for spatial indexing - * Author: Marios Hadjieleftheriou, mhadji@gmail.com - ****************************************************************************** - * Copyright (c) 2002, Marios Hadjieleftheriou - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -******************************************************************************/ - -/* -This is a modified version of libspatialindex for use with libsupermesh. -Code first added 2016-03-01. -*/ - -// NOTE: Please read README.txt before browsing this code. - -// include library header file. - -#include - -#include - -using namespace libsupermesh::SpatialIndex; -using namespace std; - -#define INSERT 1 -#define DELETE 0 -#define QUERY 2 - -// example of a Visitor pattern. -// findes the index and leaf IO for answering the query and prints -// the resulting data IDs to stdout. -class MyVisitor : public IVisitor -{ -public: - size_t m_indexIO; - size_t m_leafIO; - -public: - MyVisitor() : m_indexIO(0), m_leafIO(0) {} - - void visitNode(const INode& n) - { - if (n.isLeaf()) m_leafIO++; - else m_indexIO++; - } - - void visitData(const IData& d) - { - IShape* pS; - d.getShape(&pS); - // do something. - delete pS; - - // data should be an array of characters representing a Region as a string. - //byte* pData = 0; - //size_t cLen = 0; - //d.getData(cLen, &pData); - // do something. - //string s = reinterpret_cast(pData); - //cout << s << endl; - //delete[] pData; - - cout << d.getIdentifier() << endl; - // the ID of this data entry is an answer to the query. I will just print it to stdout. - } - - void visitData(std::vector& ) {} -}; - -// example of a Strategy pattern. -// traverses the tree by level. -class MyQueryStrategy : public libsupermesh::SpatialIndex::IQueryStrategy -{ -private: - queue ids; - -public: - void getNextEntry(const IEntry& entry, id_type& nextEntry, bool& hasNext) - { - IShape* ps; - entry.getShape(&ps); - MovingRegion* pr = dynamic_cast(ps); - - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pLow[1] << endl; - cout << pr->m_pHigh[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pHigh[1] << endl; - cout << pr->m_pLow[0] << " " << pr->m_pLow[1] << endl << endl << endl; - // print node MBRs gnuplot style! - - delete ps; - - const INode* n = dynamic_cast(&entry); - - // traverse only index nodes at levels 2 and higher. - if (n != 0 && n->getLevel() > 1) - { - for (uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++) - { - ids.push(n->getChildIdentifier(cChild)); - } - } - - if (! ids.empty()) - { - nextEntry = ids.front(); ids.pop(); - hasNext = true; - } - else - { - hasNext = false; - } - } -}; - -// example of a Strategy pattern. -// find the total indexed space managed by the index (the MBR of the root). -class MyQueryStrategy2 : public IQueryStrategy -{ -public: - Region m_indexedSpace; - -public: - void getNextEntry(const IEntry& entry, id_type&, bool& hasNext) - { - // the first time we are called, entry points to the root. - - // stop after the root. - hasNext = false; - - IShape* ps; - entry.getShape(&ps); - ps->getMBR(m_indexedSpace); - delete ps; - } -}; - -int main(int argc, char** argv) -{ - try - { - if (argc != 3) - { - cerr << "Usage: " << argv[0] << " input_file tree_file." << endl; - return -1; - } - - ifstream fin(argv[1]); - if (! fin) - { - cerr << "Cannot open data file " << argv[1] << "." << endl; - return -1; - } - - string baseName = argv[2]; - IStorageManager* diskfile = StorageManager::loadDiskStorageManager(baseName); - // this will try to locate and open an already existing storage manager. - - StorageManager::IBuffer* file = StorageManager::createNewRandomEvictionsBuffer(*diskfile, 10, false); - // applies a main memory random buffer on top of the persistent storage manager - // (LRU buffer, etc can be created the same way). - - // If we need to open an existing tree stored in the storage manager, we only - // have to specify the index identifier as follows - ISpatialIndex* tree = TPRTree::loadTPRTree(*file, 1); - - size_t count = 0; - id_type id; - size_t op; - double ax, vx, ay, vy, ct, rt, unused; - double plow[2], phigh[2]; - double pvlow[2], pvhigh[2]; - size_t indexIO = 0; - size_t leafIO = 0; - - while (fin) - { - fin >> id >> op >> ct >> rt >> unused >> ax >> vx >> unused >> ay >> vy; - if (! fin.good()) continue; // skip newlines, etc. - - if (op == INSERT) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(ct, std::numeric_limits::max()); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - //ostringstream os; - //os << r; - //string data = os.str(); - // associate some data with this region. I will use a string that represents the - // region itself, as an example. - // NOTE: It is not necessary to associate any data here. A null pointer can be used. In that - // case you should store the data externally. The index will provide the data IDs of - // the answers to any query, which can be used to access the actual data from the external - // storage (e.g. a hash table or a database table, etc.). - // Storing the data in the index is convinient and in case a clustered storage manager is - // provided (one that stores any node in consecutive pages) performance will improve substantially, - // since disk accesses will be mostly sequential. On the other hand, the index will need to - // manipulate the data, resulting in larger overhead. If you use a main memory storage manager, - // storing the data externally is highly recommended (clustering has no effect). - // A clustered storage manager is NOT provided yet. - // Also you will have to take care of converting you data to and from binary format, since only - // array of bytes can be inserted in the index (see RTree::Node::load and RTree::Node::store for - // an example of how to do that). - - //tree->insertData(data.size() + 1, reinterpret_cast(data.c_str()), r, id); - - tree->insertData(0, 0, r, id); - // example of passing zero size and a null pointer as the associated data. - } - else if (op == DELETE) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = ax; phigh[1] = ay; - pvlow[0] = vx; pvlow[1] = vy; - pvhigh[0] = vx; pvhigh[1] = vy; - libsupermesh::Tools::Interval ivT(rt, ct); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - - if (tree->deleteData(r, id) == false) - { - cerr << "******ERROR******" << endl; - cerr << "Cannot delete id: " << id << " , count: " << count << endl; - return -1; - } - } - else if (op == QUERY) - { - plow[0] = ax; plow[1] = ay; - phigh[0] = vx; phigh[1] = vy; - pvlow[0] = 0.0; pvlow[1] = 0.0; - pvhigh[0] = 0.0; pvhigh[1] = 0.0; - - libsupermesh::Tools::Interval ivT(ct, rt); - - MovingRegion r = MovingRegion(plow, phigh, pvlow, pvhigh, ivT, 2); - MyVisitor vis; - - tree->intersectsWithQuery(r, vis); - // this will find all data that intersect with the query range. - - indexIO += vis.m_indexIO; - leafIO += vis.m_leafIO; - // example of the Visitor pattern usage, for calculating how many nodes - // were visited. - } - - if ((count % 1000) == 0) - cerr << count << endl; - - count++; - } - - MyQueryStrategy2 qs; - tree->queryStrategy(qs); - - cerr << "Indexed space: " << qs.m_indexedSpace << endl; - cerr << "Operations: " << count << endl; - cerr << *tree; - cerr << "Index I/O: " << indexIO << endl; - cerr << "Leaf I/O: " << leafIO << endl; - cerr << "Buffer hits: " << file->getHits() << endl; - - delete tree; - delete file; - delete diskfile; - // delete the buffer first, then the storage manager - // (otherwise the the buffer will fail writting the dirty entries). - } - catch (libsupermesh::Tools::Exception& e) - { - cerr << "******ERROR******" << endl; - std::string s = e.what(); - cerr << s << endl; - return -1; - } - catch (...) - { - cerr << "******ERROR******" << endl; - cerr << "other exception" << endl; - return -1; - } - - return 0; -} diff --git a/spatialindex-1.8.5/test/tprtree/test1/run b/spatialindex-1.8.5/test/tprtree/test1/run deleted file mode 100755 index 613cd99..0000000 --- a/spatialindex-1.8.5/test/tprtree/test1/run +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator -ds 1000 -sl 100 > d -awk '{if ($2 != 2) print $0}' < d > data -awk '{if ($2 == 2 && $3 >= 100) print $0}' < d > queries -rm -rf d - -echo Creating new TPR-Tree -../TPRTreeLoad data tree 20 - -echo Querying TPR-Tree -../TPRTreeQuery queries tree > res -cat data queries > .t - -echo Running exhaustive search -../Exhaustive .t > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 .t tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi diff --git a/spatialindex-1.8.5/test/tprtree/test2/run b/spatialindex-1.8.5/test/tprtree/test2/run deleted file mode 100755 index f13ea2c..0000000 --- a/spatialindex-1.8.5/test/tprtree/test2/run +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash - -echo Generating dataset -../Generator -ds 1000 -sl 100 > mix - -echo Creating new TPR-Tree and Querying -../TPRTreeLoad mix tree 10 > res - -echo Running exhaustive search -../Exhaustive mix > res2 - -echo Comparing results -sort -n res > a -sort -n res2 > b -if diff a b -then -echo "Same results with exhaustive search. Everything seems fine." -echo Results: `wc -l a` -rm -rf a b res res2 tree.* -else -echo "PROBLEM! We got different results from exhaustive search!" -fi - diff --git a/src/R-Tree_Intersection_Finder_C++.cpp b/src/R-Tree_Intersection_Finder_C++.cpp index d5e2efa..a0bc7c3 100644 --- a/src/R-Tree_Intersection_Finder_C++.cpp +++ b/src/R-Tree_Intersection_Finder_C++.cpp @@ -115,15 +115,21 @@ #include "libsupermesh_configuration.h" #include "spatialindex/SpatialIndex.h" -#include "rtree/RTree.h" -#include "rtree/BulkLoader.h" +#include "spatialindex/RTree.h" +#include "spatialindex/tools/Tools.h" + +// FIXME: +// Previously had: +// #include "rtree/RTree.h" +// #include "rtree/BulkLoader.h" +// Now we need to use the spatialindex public interface! #include #include "R-Tree_Intersection_Finder_C++.h" using namespace libsupermesh; -using namespace libsupermesh::SpatialIndex; +using namespace SpatialIndex; // Modified version of code from rtree/gispyspatialindex.h // (GISPySpatialIndex), rtree/gispyspatialindex.cc (GISPySpatialIndex), and @@ -137,7 +143,10 @@ libsupermesh::RTree::RTree(const int &dim, const double *positions, : dim(dim), visitor(nelements) { this->memory = StorageManager::createNewMemoryStorageManager(); this->buffer = StorageManager::createNewRandomEvictionsBuffer(*this->memory, capacity, bWriteThrough); - + + // FIXME: + // Here is where parts of the private interface to spatialindex/rtree are used + /* // Modified version of code from createAndBulkLoadNewRTree in // src/rtree/RTree.cc in libspatialindex 1.8.5. Added 2016-02-24. id_type indexIdentifier = 0; // ?? @@ -152,6 +161,7 @@ libsupermesh::RTree::RTree(const int &dim, const double *positions, bl.bulkLoadUsingSTR(static_cast(this->tree), stream, bindex, bleaf, pageSize, numberOfPages); // End of modified code from createAndBulkLoadNewRTree in // src/rtree/RTree.cc in libspatialindex 1.8.5 + */ } // End of modified code from rtree/gispyspatialindex.h, // rtree/gispyspatialindex.cc, and rtree/wrapper.cc From b0417c8bf111c41acd8754c8a2ed030a5db19e17 Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Fri, 29 Sep 2023 14:05:46 +0100 Subject: [PATCH 05/10] Fix apt --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 646d16d..403f204 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,8 +24,8 @@ jobs: - name: Install spatialindex shell: bash run: | - sudo apt update - sudo apt install libspatialindex-dev + sudo apt-get -y update + sudo apt-get -y install libspatialindex-dev - name: CMake run: | From 6bc1f6fbbcd74be42aff1a7582393868334a3446 Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Wed, 1 Nov 2023 15:44:40 +0000 Subject: [PATCH 06/10] Allow building from modified Rtree Python package --- .github/workflows/build.yml | 68 ++++++++++++++++++++++++++++++++++--- CMakeLists.txt | 34 +++++++++++++++++-- 2 files changed, 95 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 403f204..ae65e9e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ on: jobs: build: - name: "Build libsupermesh" + name: "Build libsupermesh with Ubuntu spatialindex" # The type of runner that the job will run on runs-on: self-hosted # The docker container to use. @@ -17,7 +17,7 @@ jobs: image: firedrakeproject/firedrake-env:latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: mpi4py/setup-mpi@v1 with: mpi: openmpi @@ -36,7 +36,7 @@ jobs: -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \ -DCMAKE_Fortran_COMPILER=mpif90 \ -DCMAKE_Fortran_FLAGS=-fallow-argument-mismatch - + - name: Build run: | cd build @@ -47,5 +47,65 @@ jobs: cd build make test + build_rtree: + name: "Build libsupermesh with Rtree spatialindex" + # The type of runner that the job will run on + runs-on: self-hosted + # The docker container to use. + container: + image: firedrakeproject/firedrake-env:latest + + steps: + - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + with: + repository: JDBetteridge/rtree + ref: JDBetteridge/include_headers + path: rtree + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + - name: Install unzip + shell: bash + run: | + sudo apt-get -y update + sudo apt-get -y install unzip + - name: Install Rtree + # In future replace with Rtree wheel + shell: bash + run: | + cd .. + python -m venv test + source test/bin/activate + pip install build + cd libsupermesh/rtree + ./ci/install_libspatialindex.bash + python -m build --wheel + pip install $(ls dist/Rtree*.whl) - + - name: CMake + shell: bash + run: | + source ../test/bin/activate + cd build + cmake .. \ + -DLIBSUPERMESH_AUTO_COMPILER_FLAGS=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DMPI_C_COMPILER=$MPICH_DIR/mpicc \ + -DMPI_CXX_COMPILER=$MPICH_DIR/mpicxx \ + -DMPI_Fortran_COMPILER=$MPICH_DIR/mpif90 \ + -DCMAKE_C_COMPILER=$MPICH_DIR/mpicc \ + -DCMAKE_CXX_COMPILER=$MPICH_DIR/mpicxx \ + -DCMAKE_Fortran_COMPILER=$MPICH_DIR/mpif90 \ + -DCMAKE_Fortran_FLAGS=-fallow-argument-mismatch \ + -DMPIEXEC_EXECUTABLE=$MPICH_DIR/mpiexec + + - name: Build + run: | + cd build + make + + - name: Test + run: | + cd build + make test diff --git a/CMakeLists.txt b/CMakeLists.txt index f47ee43..9266b9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,12 +180,40 @@ endif() # Find the spatialindex library find_library(spatialindexlib NAMES spatialindex - REQUIRED - PATHS /usr/local/lib /usr/lib $ENV{VIRTUAL_ENV}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/rtree/lib - ) + PATHS "/usr/local/lib" + "/usr/lib" + "$ENV{VIRTUAL_ENV}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/Rtree.libs" + "$ENV{VIRTUAL_ENV}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/rtree/lib" + ) + +if((NOT spatialindexlib) AND (Python_FOUND)) + message(STATUS "Spatialindex not found, attempting to use the shared library provided by the Rtree Python package") + execute_process(COMMAND ${Python_EXECUTABLE} -c "import os, rtree; print(os.path.join(rtree.core.get_libraries(), rtree.core.get_library_name()), end='')" + OUTPUT_VARIABLE spatialindexlib + RESULT_VARIABLE PythonCommandReturnCode + ) + if(PythonCommandReturnCode) + # Forces build to fail if we still cannot find spatialindex + unset(spatialindexlib) + find_library(spatialindexlib NAMES spatialindex REQUIRED) + endif() +endif() + if(spatialindexlib) message(STATUS "Found libspatialindex shared library: " ${spatialindexlib}) set(link_libraries ${link_libraries} ${spatialindexlib}) + if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + # Check whether C++11 strings are in use, I only know how to do this on Linux + execute_process(COMMAND objdump -T ${spatialindexlib} + COMMAND grep -i setproperty + OUTPUT_VARIABLE setpropertystring + ) + message(STATUS "Set property object signature: " ${setpropertystring}) + if(NOT ${setpropertystring} MATCHES .*__cxx1112basic_string.*) + message(STATUS "libspatialindex shared library does not use C++11 strings. Adding -D_GLIBCXX_USE_CXX11_ABI=0 to CMAKE_CXX_FLAGS") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0") + endif() + endif() endif() # Find the spatialindex headers From 69c669da9ae5fef839f2681572c9c8eee9fd3a14 Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Wed, 17 Jan 2024 13:55:59 +0000 Subject: [PATCH 07/10] Update for changes in rtree branch --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9266b9d..45cb64c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,7 +188,7 @@ find_library(spatialindexlib if((NOT spatialindexlib) AND (Python_FOUND)) message(STATUS "Spatialindex not found, attempting to use the shared library provided by the Rtree Python package") - execute_process(COMMAND ${Python_EXECUTABLE} -c "import os, rtree; print(os.path.join(rtree.core.get_libraries(), rtree.core.get_library_name()), end='')" + execute_process(COMMAND ${Python_EXECUTABLE} -c "import rtree; print(rtree.core.rt._name, end='')" OUTPUT_VARIABLE spatialindexlib RESULT_VARIABLE PythonCommandReturnCode ) From e5012bc6078dc2d498a0104b9c8ba86ae9093c1c Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Mon, 22 Jan 2024 18:55:34 +0000 Subject: [PATCH 08/10] Update CI to use rtree from PyPI --- .github/workflows/build.yml | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ae65e9e..c2eb697 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,9 +18,11 @@ jobs: steps: - uses: actions/checkout@v4 + - uses: mpi4py/setup-mpi@v1 with: mpi: openmpi + - name: Install spatialindex shell: bash run: | @@ -30,10 +32,14 @@ jobs: - name: CMake run: | cd build - cmake .. -DLIBSUPERMESH_AUTO_COMPILER_FLAGS=OFF \ - -DBUILD_SHARED_LIBS=ON -DMPI_C_COMPILER=mpicc \ - -DMPI_CXX_COMPILER=mpicxx -DMPI_Fortran_COMPILER=mpif90 \ - -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \ + cmake .. \ + -DLIBSUPERMESH_AUTO_COMPILER_FLAGS=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DMPI_C_COMPILER=mpicc \ + -DMPI_CXX_COMPILER=mpicxx \ + -DMPI_Fortran_COMPILER=mpif90 \ + -DCMAKE_C_COMPILER=mpicc \ + -DCMAKE_CXX_COMPILER=mpicxx \ -DCMAKE_Fortran_COMPILER=mpif90 \ -DCMAKE_Fortran_FLAGS=-fallow-argument-mismatch @@ -57,31 +63,18 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/checkout@v4 - with: - repository: JDBetteridge/rtree - ref: JDBetteridge/include_headers - path: rtree + - uses: actions/setup-python@v4 with: python-version: '3.11' - - name: Install unzip - shell: bash - run: | - sudo apt-get -y update - sudo apt-get -y install unzip + - name: Install Rtree - # In future replace with Rtree wheel shell: bash run: | cd .. python -m venv test source test/bin/activate - pip install build - cd libsupermesh/rtree - ./ci/install_libspatialindex.bash - python -m build --wheel - pip install $(ls dist/Rtree*.whl) + pip install rtree>=1.2 - name: CMake shell: bash From 61636eb249099553d149682cec706289a8814c40 Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Thu, 25 Jan 2024 11:50:41 +0000 Subject: [PATCH 09/10] Goodbye LIBSUPERMESH_AUTO_COMPILER_FLAGS --- .github/workflows/build.yml | 6 +-- CMakeLists.txt | 85 +++++++++---------------------------- README.md | 2 +- 3 files changed, 22 insertions(+), 71 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2eb697..d80b6b4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,15 +33,13 @@ jobs: run: | cd build cmake .. \ - -DLIBSUPERMESH_AUTO_COMPILER_FLAGS=OFF \ -DBUILD_SHARED_LIBS=ON \ -DMPI_C_COMPILER=mpicc \ -DMPI_CXX_COMPILER=mpicxx \ -DMPI_Fortran_COMPILER=mpif90 \ -DCMAKE_C_COMPILER=mpicc \ -DCMAKE_CXX_COMPILER=mpicxx \ - -DCMAKE_Fortran_COMPILER=mpif90 \ - -DCMAKE_Fortran_FLAGS=-fallow-argument-mismatch + -DCMAKE_Fortran_COMPILER=mpif90 - name: Build run: | @@ -82,7 +80,6 @@ jobs: source ../test/bin/activate cd build cmake .. \ - -DLIBSUPERMESH_AUTO_COMPILER_FLAGS=OFF \ -DBUILD_SHARED_LIBS=ON \ -DMPI_C_COMPILER=$MPICH_DIR/mpicc \ -DMPI_CXX_COMPILER=$MPICH_DIR/mpicxx \ @@ -90,7 +87,6 @@ jobs: -DCMAKE_C_COMPILER=$MPICH_DIR/mpicc \ -DCMAKE_CXX_COMPILER=$MPICH_DIR/mpicxx \ -DCMAKE_Fortran_COMPILER=$MPICH_DIR/mpif90 \ - -DCMAKE_Fortran_FLAGS=-fallow-argument-mismatch \ -DMPIEXEC_EXECUTABLE=$MPICH_DIR/mpiexec - name: Build diff --git a/CMakeLists.txt b/CMakeLists.txt index 45cb64c..bdb7840 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,76 +73,31 @@ option(LIBSUPERMESH_ENABLE_TIMERS "Enable internal timers" OFF) option(LIBSUPERMESH_OVERLAP_COMPUTE_COMMS "Overlap computation and communication. Efficiency of this depends upon the specific MPI implementation." OFF) option(LIBSUPERMESH_DOUBLE_PRECISION "Build with double precision Fortran reals" ON) -option(LIBSUPERMESH_AUTO_COMPILER_FLAGS "Choose compiler flags automatically. This overrides any other compiler flags defined via CMake variables." ON) -if(LIBSUPERMESH_AUTO_COMPILER_FLAGS) - if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") - set(CMAKE_Fortran_FLAGS "-ffree-line-length-none -pipe -std=f2008") - if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL "10") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") - endif() - if(BUILD_SHARED_LIBS) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fPIC") - endif() - set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -Wall -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow -finit-integer=-66666 -finit-real=nan -fimplicit-none") - set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -march=native -ftree-vectorize -DNDEBUG") - elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Cray") - set(CMAKE_Fortran_FLAGS "-s -fpic") - set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g") - set(CMAKE_Fortran_FLAGS_RELEASE "-O2") - endif() - - if(CMAKE_C_COMPILER_ID MATCHES "GNU") - set(CMAKE_C_FLAGS "-pipe -std=c99") - if(BUILD_SHARED_LIBS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - endif() - set(CMAKE_C_FLAGS_DEBUG "-O0 -g -Wall") - set(CMAKE_C_FLAGS_RELEASE "-O3 -march=native -ftree-vectorize -DNDEBUG") - elseif(CMAKE_C_COMPILER_ID MATCHES "Cray") - set(CMAKE_C_FLAGS "-fpic") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g") - set(CMAKE_C_FLAGS_RELEASE "-O2") - endif() - - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(CMAKE_CXX_FLAGS "-pipe -std=c++11") - if(BUILD_SHARED_LIBS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") - endif() - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall") - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -ftree-vectorize -DNDEBUG") - elseif(CMAKE_CXX_COMPILER_ID MATCHES "Cray") - set(CMAKE_CXX_FLAGS "-fpic") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") - set(CMAKE_CXX_FLAGS_RELEASE "-O2") - endif() -else() - if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -std=f2008") - if(BUILD_SHARED_LIBS) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fPIC") - endif() - elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Cray") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -s -fpic") +if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -std=f2008") + if(BUILD_SHARED_LIBS) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fPIC") endif() +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Cray") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -s -fpic") +endif() - if(CMAKE_C_COMPILER_ID MATCHES "GNU") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") - if(BUILD_SHARED_LIBS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - endif() - elseif(CMAKE_C_COMPILER_ID MATCHES "Cray") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") +if(CMAKE_C_COMPILER_ID MATCHES "GNU") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") + if(BUILD_SHARED_LIBS) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") endif() +elseif(CMAKE_C_COMPILER_ID MATCHES "Cray") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") +endif() - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - if(BUILD_SHARED_LIBS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") - endif() - elseif(CMAKE_CXX_COMPILER_ID MATCHES "Cray") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic") +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + if(BUILD_SHARED_LIBS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") endif() +elseif(CMAKE_CXX_COMPILER_ID MATCHES "Cray") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic") endif() # Use the MPI compilers to compile diff --git a/README.md b/README.md index 59823d3..dcf15f5 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ libsupermesh parallel supermeshing library. ## Getting started ## -Required [spatialindex](https://github.com/libspatialindex/libspatialindex) to be installed. +Requires [spatialindex](https://github.com/libspatialindex/libspatialindex) to be installed. Documentation can be found in the libsupermesh manual. This can be built using: From f289933324ef2c342d154515056cf737c03305c5 Mon Sep 17 00:00:00 2001 From: Jack Betteridge Date: Thu, 25 Jan 2024 11:51:21 +0000 Subject: [PATCH 10/10] Use SpatialIndex namespacing --- src/R-Tree_Intersection_Finder_C++.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/R-Tree_Intersection_Finder_C++.cpp b/src/R-Tree_Intersection_Finder_C++.cpp index 09871c9..2b66c51 100644 --- a/src/R-Tree_Intersection_Finder_C++.cpp +++ b/src/R-Tree_Intersection_Finder_C++.cpp @@ -121,7 +121,6 @@ #include "R-Tree_Intersection_Finder_C++.h" using namespace libsupermesh; -using namespace SpatialIndex; // Modified version of code from rtree/gispyspatialindex.h // (GISPySpatialIndex), rtree/gispyspatialindex.cc (GISPySpatialIndex), and @@ -133,8 +132,8 @@ using namespace SpatialIndex; libsupermesh::RTree::RTree(const int &dim, const double *positions, const int &loc, const int &nelements, const int *enlist) : dim(dim), visitor(nelements) { - this->memory = StorageManager::createNewMemoryStorageManager(); - this->buffer = StorageManager::createNewRandomEvictionsBuffer(*this->memory, capacity, bWriteThrough); + this->memory = SpatialIndex::StorageManager::createNewMemoryStorageManager(); + this->buffer = SpatialIndex::StorageManager::createNewRandomEvictionsBuffer(*this->memory, capacity, bWriteThrough); // Properties as used in PropertySet version of createAndBulkLoadNewRTree in // src/rtree/RTree.cc, libspatialindex 1.8.5 @@ -167,6 +166,8 @@ libsupermesh::RTree::RTree(const int &dim, const double *positions, Tools::Variant pageSize; pageSize.m_varType = Tools::VT_ULONG; + // James R. Maddison note: this is as large as possible to attempt to avoid disk swapping. + // This value is later multiplied by the ExternalSortBufferTotalPages property, which must be at least 2, hence the divide. pageSize.m_val.ulVal = std::numeric_limits::max() / 2; properties.setProperty("ExternalSortBufferPageSize", pageSize); @@ -176,7 +177,7 @@ libsupermesh::RTree::RTree(const int &dim, const double *positions, properties.setProperty("ExternalSortBufferTotalPages", numberOfPages); MeshDataStream stream(dim, positions, loc, nelements, enlist); - id_type indexIdentifier = 0; + SpatialIndex::id_type indexIdentifier = 0; this->tree = SpatialIndex::RTree::createAndBulkLoadNewRTree( SpatialIndex::RTree::BLM_STR, stream, *this->buffer, properties, indexIdentifier); }