Repository: csiro-robotics/ohm Branch: master Commit: 4e2e76945e55 Files: 551 Total size: 3.8 MB Directory structure: gitextract_waem9xm7/ ├── .clang-format ├── .clang-tidy ├── .gitignore ├── 3rdparty/ │ └── 3es-core/ │ └── 3esservermacros.h ├── CMakeLists.txt ├── LICENSE ├── OpenCL.md ├── clearance-performance-notes.md ├── clu/ │ ├── 3rdparty/ │ │ └── CL/ │ │ └── opencl.hpp │ ├── CMakeLists.txt │ ├── clu.cpp │ ├── clu.h │ ├── cluBuffer.h │ ├── cluConfig.in.h │ ├── cluConstraint.cpp │ ├── cluConstraint.h │ ├── cluKernel.cpp │ ├── cluKernel.h │ ├── cluProgram.cpp │ └── cluProgram.h ├── cmake/ │ ├── ClangTidy.cmake │ ├── FindLASZIP.cmake │ ├── FindLIBLAS.cmake │ ├── FindOctomap.cmake │ ├── FindTBB.cmake │ ├── Findglm.cmake │ ├── LeakTrack.cmake │ ├── OhmCuda.cmake │ ├── OhmGTest.cmake │ ├── TextFileResource.cmake │ ├── TextFileResource.py │ ├── compilerSetup.cmake │ ├── doxyfile.in │ ├── doxygen.cmake │ ├── ohm-config.cmake │ ├── ohm-packages.cmake │ ├── tidy/ │ │ ├── clang-tidy-names.yaml │ │ └── wrap-clang-tidy.py │ └── utils.cmake ├── docs/ │ ├── docglossary.md │ ├── docmain.h │ ├── docusage.md │ ├── docutils.md │ ├── docvoxellayers.md │ └── gpu/ │ ├── docgpualgorithm.md │ └── docgpudetail.md ├── gputil/ │ ├── CMakeLists.txt │ ├── cl/ │ │ ├── gpuApiExceptionCode.cpp │ │ ├── gpuBuffer.cpp │ │ ├── gpuBufferDetail.h │ │ ├── gpuDevice.cpp │ │ ├── gpuDeviceDetail.h │ │ ├── gpuEvent.cpp │ │ ├── gpuEventDetail.h │ │ ├── gpuKernel.cpp │ │ ├── gpuKernel2.h │ │ ├── gpuKernelDetail.h │ │ ├── gpuPinnedBuffer.cpp │ │ ├── gpuPlatform2.h │ │ ├── gpuProgram.cpp │ │ ├── gpuProgramDetail.h │ │ ├── gpuQueue.cpp │ │ └── gpuQueueDetail.h │ ├── cuda/ │ │ ├── cutil_atomic.h │ │ ├── cutil_decl.h │ │ ├── cutil_importcl.h │ │ ├── cutil_math.h │ │ ├── gpuApiExceptionCode.cpp │ │ ├── gpuBuffer.cpp │ │ ├── gpuBufferDetail.h │ │ ├── gpuDevice.cpp │ │ ├── gpuDeviceDetail.h │ │ ├── gpuDirtyRegion │ │ ├── gpuEvent.cpp │ │ ├── gpuEventDetail.h │ │ ├── gpuKernel.cpp │ │ ├── gpuKernel2.h │ │ ├── gpuKernelDetail.h │ │ ├── gpuMemRegion.cpp │ │ ├── gpuMemRegion.h │ │ ├── gpuPinnedBuffer.cpp │ │ ├── gpuPlatform2.h │ │ ├── gpuProgram.cpp │ │ ├── gpuProgramDetail.h │ │ ├── gpuQueue.cpp │ │ ├── gpuQueueDetail.h │ │ └── ref.h │ ├── gpuApiException.cpp │ ├── gpuApiException.h │ ├── gpuBuffer.h │ ├── gpuConfig.in.h │ ├── gpuDevice.h │ ├── gpuDeviceInfo.h │ ├── gpuEvent.h │ ├── gpuEventList.cpp │ ├── gpuEventList.h │ ├── gpuException.cpp │ ├── gpuException.h │ ├── gpuKernel.h │ ├── gpuPinMode.h │ ├── gpuPinnedBuffer.h │ ├── gpuPlatform.h │ ├── gpuProgram.h │ ├── gpuQueue.h │ ├── gpuThrow.cpp │ ├── gpuThrow.h │ ├── gpuVersion.h │ └── gpu_ext.h ├── logutil/ │ ├── CMakeLists.txt │ ├── LogUtil.cpp │ ├── LogUtil.h │ ├── LogUtilConfig.in.h │ ├── Logger.cpp │ ├── Logger.h │ └── LoggerDetail.h ├── ohm/ │ ├── Aabb.h │ ├── CMakeLists.txt │ ├── CalculateSegmentKeys.cpp │ ├── CalculateSegmentKeys.h │ ├── ClearingPattern.cpp │ ├── ClearingPattern.h │ ├── CompareMaps.cpp │ ├── CompareMaps.h │ ├── CopyUtil.cpp │ ├── CopyUtil.h │ ├── CovarianceVoxel.cpp │ ├── CovarianceVoxel.h │ ├── CovarianceVoxelCompute.h │ ├── DataType.cpp │ ├── DataType.h │ ├── DebugDraw.cpp │ ├── DebugDraw.h │ ├── DebugIDs.h │ ├── DefaultLayer.cpp │ ├── DefaultLayer.h │ ├── Density.cpp │ ├── Density.h │ ├── Key.cpp │ ├── Key.h │ ├── KeyHash.cpp │ ├── KeyHash.h │ ├── KeyList.cpp │ ├── KeyList.h │ ├── KeyRange.cpp │ ├── KeyRange.h │ ├── KeyStream.h │ ├── LineKeysQuery.cpp │ ├── LineKeysQuery.h │ ├── LineQuery.cpp │ ├── LineQuery.h │ ├── LineWalk.h │ ├── LineWalkCompute.h │ ├── MapChunk.cpp │ ├── MapChunk.h │ ├── MapChunkFlag.h │ ├── MapCoord.h │ ├── MapFlag.cpp │ ├── MapFlag.h │ ├── MapInfo.cpp │ ├── MapInfo.h │ ├── MapLayer.cpp │ ├── MapLayer.h │ ├── MapLayout.cpp │ ├── MapLayout.h │ ├── MapLayoutMatch.h │ ├── MapProbability.h │ ├── MapRegion.cpp │ ├── MapRegion.h │ ├── MapRegionCache.cpp │ ├── MapRegionCache.h │ ├── MapSerialise.cpp │ ├── MapSerialise.h │ ├── Mapper.cpp │ ├── Mapper.h │ ├── MappingProcess.cpp │ ├── MappingProcess.h │ ├── Mutex.cpp │ ├── Mutex.h │ ├── NdtMap.cpp │ ├── NdtMap.h │ ├── NdtMode.cpp │ ├── NdtMode.h │ ├── NearestNeighbours.cpp │ ├── NearestNeighbours.h │ ├── OccupancyMap.cpp │ ├── OccupancyMap.h │ ├── OccupancyType.cpp │ ├── OccupancyType.h │ ├── OccupancyUtil.cpp │ ├── OccupancyUtil.h │ ├── OhmConfig.in.h │ ├── Query.cpp │ ├── Query.h │ ├── QueryFlag.h │ ├── RayFilter.cpp │ ├── RayFilter.h │ ├── RayFlag.h │ ├── RayMapper.cpp │ ├── RayMapper.h │ ├── RayMapperNdt.cpp │ ├── RayMapperNdt.h │ ├── RayMapperOccupancy.cpp │ ├── RayMapperOccupancy.h │ ├── RayMapperSecondarySample.cpp │ ├── RayMapperSecondarySample.h │ ├── RayMapperTrace.cpp │ ├── RayMapperTrace.h │ ├── RayMapperTsdf.cpp │ ├── RayMapperTsdf.h │ ├── RayPattern.cpp │ ├── RayPattern.h │ ├── RayPatternConical.cpp │ ├── RayPatternConical.h │ ├── RaysQuery.cpp │ ├── RaysQuery.h │ ├── Stream.cpp │ ├── Stream.h │ ├── Trace.cpp │ ├── Trace.h │ ├── Voxel.cpp │ ├── Voxel.h │ ├── VoxelBlock.cpp │ ├── VoxelBlock.h │ ├── VoxelBlockCompressionQueue.cpp │ ├── VoxelBlockCompressionQueue.h │ ├── VoxelBuffer.cpp │ ├── VoxelBuffer.h │ ├── VoxelData.h │ ├── VoxelIncident.h │ ├── VoxelIncidentCompute.h │ ├── VoxelLayout.cpp │ ├── VoxelLayout.h │ ├── VoxelMean.h │ ├── VoxelMeanCompute.h │ ├── VoxelOccupancy.h │ ├── VoxelOccupancyCompute.h │ ├── VoxelSecondarySample.h │ ├── VoxelTouchTime.h │ ├── VoxelTouchTimeCompute.h │ ├── VoxelTsdf.cpp │ ├── VoxelTsdf.h │ ├── VoxelTsdfCompute.h │ ├── private/ │ │ ├── ClearingPatternDetail.h │ │ ├── LineKeysQueryDetail.h │ │ ├── LineQueryDetail.h │ │ ├── MapLayerDetail.h │ │ ├── MapLayoutDetail.h │ │ ├── MapperDetail.h │ │ ├── NdtMapDetail.h │ │ ├── NearestNeighboursDetail.h │ │ ├── OccupancyMapDetail.cpp │ │ ├── OccupancyMapDetail.h │ │ ├── OccupancyQueryAlg.h │ │ ├── QueryDetail.h │ │ ├── RayPatternDetail.h │ │ ├── RaysQueryDetail.h │ │ ├── SerialiseUtil.h │ │ ├── VoxelAlgorithms.cpp │ │ ├── VoxelAlgorithms.h │ │ ├── VoxelBlockCompressionQueueDetail.h │ │ └── VoxelLayoutDetail.h │ └── serialise/ │ ├── MapSerialiseV0.1.cpp │ ├── MapSerialiseV0.1.h │ ├── MapSerialiseV0.2.cpp │ ├── MapSerialiseV0.2.h │ ├── MapSerialiseV0.4.cpp │ ├── MapSerialiseV0.4.h │ ├── MapSerialiseV0.5.cpp │ ├── MapSerialiseV0.5.h │ ├── MapSerialiseV0.cpp │ └── MapSerialiseV0.h ├── ohm.natvis ├── ohmapp/ │ ├── CMakeLists.txt │ ├── DataSource.cpp │ ├── DataSource.h │ ├── MapHarness.cpp │ ├── MapHarness.h │ ├── OhmAppConfig.in.h │ ├── OhmAppCpu.cpp │ ├── OhmAppCpu.h │ ├── OhmAppGpu.cpp │ ├── OhmAppGpu.h │ ├── OhmAppGpuConfig.in.h │ ├── SlamIOSource.cpp │ ├── SlamIOSource.h │ └── ohmappmain.inl ├── ohmgpu/ │ ├── CMakeLists.txt │ ├── ClearanceProcess.cpp │ ├── ClearanceProcess.h │ ├── GpuCache.cpp │ ├── GpuCache.h │ ├── GpuCachePostSyncHandler.h │ ├── GpuCacheStats.h │ ├── GpuKey.h │ ├── GpuLayerCache.cpp │ ├── GpuLayerCache.h │ ├── GpuLayerCacheParams.cpp │ ├── GpuLayerCacheParams.h │ ├── GpuMap.cpp │ ├── GpuMap.h │ ├── GpuNdtMap.cpp │ ├── GpuNdtMap.h │ ├── GpuTransformSamples.cpp │ ├── GpuTransformSamples.h │ ├── GpuTsdfMap.cpp │ ├── GpuTsdfMap.h │ ├── LineKeysQueryGpu.cpp │ ├── LineKeysQueryGpu.h │ ├── LineQueryGpu.cpp │ ├── LineQueryGpu.h │ ├── OhmGpu.cpp │ ├── OhmGpu.h │ ├── OhmGpuConfig.in.h │ ├── RayItem.h │ ├── RaysQueryGpu.cpp │ ├── RaysQueryGpu.h │ ├── gpu/ │ │ ├── AdjustNdt.cl │ │ ├── AdjustOccupancy.cl │ │ ├── CovarianceHitNdt.cl │ │ ├── CovarianceHitNdt.cu │ │ ├── CovarianceHitNdt_h.cl │ │ ├── LineKeys.cl │ │ ├── LineKeys.cu │ │ ├── LineWalk.cl │ │ ├── LineWalkMarkers.cl │ │ ├── RaysQuery.cl │ │ ├── RaysQuery.cu │ │ ├── RaysQueryResult.h │ │ ├── RegionUpdate.cl │ │ ├── RegionUpdate.cu │ │ ├── RegionUpdateNdt.cu │ │ ├── Regions.cl │ │ ├── RoiRangeFill.cl │ │ ├── RoiRangeFill.cu │ │ ├── TransformSamples.cl │ │ ├── TransformSamples.cu │ │ ├── Traversal.cl │ │ ├── TsdfUpdate.cl │ │ ├── TsdfUpdate.cu │ │ ├── VoxelIncident.cl │ │ └── VoxelMean.cl │ └── private/ │ ├── ClearanceProcessDetail.cpp │ ├── ClearanceProcessDetail.h │ ├── GpuMapDetail.cpp │ ├── GpuMapDetail.h │ ├── GpuNdtMapDetail.h │ ├── GpuProgramRef.cpp │ ├── GpuProgramRef.h │ ├── GpuTransformSamplesDetail.h │ ├── GpuTsdfMapDetail.h │ ├── LineKeysQueryDetailGpu.h │ ├── LineQueryDetailGpu.h │ ├── RaysQueryDetailGpu.cpp │ ├── RaysQueryDetailGpu.h │ ├── RoiRangeFill.cpp │ └── RoiRangeFill.h ├── ohmheightmap/ │ ├── 3rdparty/ │ │ └── delaunator.hpp │ ├── CMakeLists.txt │ ├── Heightmap.cpp │ ├── Heightmap.h │ ├── HeightmapMesh.cpp │ ├── HeightmapMesh.h │ ├── HeightmapMode.cpp │ ├── HeightmapMode.h │ ├── HeightmapSerialise.cpp │ ├── HeightmapSerialise.h │ ├── HeightmapUtil.cpp │ ├── HeightmapUtil.h │ ├── HeightmapVoxel.cpp │ ├── HeightmapVoxel.h │ ├── HeightmapVoxelType.h │ ├── OhmHeightmapConfig.in.h │ ├── PlaneFillLayeredWalker.cpp │ ├── PlaneFillLayeredWalker.h │ ├── PlaneFillWalker.cpp │ ├── PlaneFillWalker.h │ ├── PlaneWalkVisitMode.h │ ├── PlaneWalker.cpp │ ├── PlaneWalker.h │ ├── TriangleEdge.h │ ├── TriangleNeighbours.h │ ├── UpAxis.h │ └── private/ │ ├── HeightmapDetail.cpp │ ├── HeightmapDetail.h │ ├── HeightmapOperations.cpp │ └── HeightmapOperations.h ├── ohmheightmapimage/ │ ├── CMakeLists.txt │ ├── HeightmapImage.cpp │ ├── HeightmapImage.h │ └── OhmHeightmapImageConfig.in.h ├── ohmtools/ │ ├── CMakeLists.txt │ ├── OhmCloud.cpp │ ├── OhmCloud.h │ ├── OhmGen.cpp │ ├── OhmGen.h │ └── OhmToolsConfig.in.h ├── ohmutil/ │ ├── 3rdparty/ │ │ ├── cxxopts/ │ │ │ └── cxxopts.hpp │ │ └── ska/ │ │ ├── bytell_hash_map.hpp │ │ ├── flat_hash_map.hpp │ │ ├── ska_sort.hpp │ │ └── unordered_map.hpp │ ├── CMakeLists.txt │ ├── Colour.cpp │ ├── Colour.h │ ├── GlmStream.h │ ├── OhmUtilConfig.in.h │ ├── Options.h │ ├── PlyMesh.cpp │ ├── PlyMesh.h │ ├── PlyPointStream.cpp │ ├── PlyPointStream.h │ ├── Profile.cpp │ ├── Profile.h │ ├── ProfileMarker.cpp │ ├── ProfileMarker.h │ ├── ProgressMonitor.cpp │ ├── ProgressMonitor.h │ ├── SafeIO.cpp │ ├── SafeIO.h │ ├── ScopedTimeDisplay.cpp │ ├── ScopedTimeDisplay.h │ ├── VectorHash.h │ └── p2p.h ├── package.xml ├── readme.md ├── scripts/ │ ├── ohm-parse-timing.py │ ├── ohm-timing-run.py │ └── setup.cfg ├── slamio/ │ ├── CMakeLists.txt │ ├── DataChannel.h │ ├── PointCloudReader.cpp │ ├── PointCloudReader.h │ ├── PointCloudReaderPdal.cpp │ ├── PointCloudReaderPdal.h │ ├── PointCloudReaderPly.cpp │ ├── PointCloudReaderPly.h │ ├── PointCloudReaderTraj.cpp │ ├── PointCloudReaderTraj.h │ ├── PointCloudReaderXyz.cpp │ ├── PointCloudReaderXyz.h │ ├── Points.cpp │ ├── Points.h │ ├── SlamCloudLoader.cpp │ ├── SlamCloudLoader.h │ ├── SlamIO.cpp │ ├── SlamIO.h │ ├── SlamIOConfig.in.h │ ├── pdal/ │ │ ├── PointStream.cpp │ │ └── PointStream.h │ └── rply/ │ ├── LICENSE │ ├── rply.c │ ├── rply.h │ └── rplyfile.h ├── tests/ │ ├── CMakeLists.txt │ ├── data/ │ │ ├── CMakeLists.txt │ │ ├── readme.md │ │ ├── test-map.0.1.0.ohm │ │ ├── test-map.0.2.0.ohm │ │ ├── test-map.0.3.0.ohm │ │ ├── test-map.0.4.0.ohm │ │ └── test-map.0.ohm │ ├── gputiltest/ │ │ ├── CMakeLists.txt │ │ ├── GpuBufferTest.cpp │ │ ├── GpuDeviceTest.cpp │ │ ├── KernelTest.cpp │ │ ├── TestMain.cpp │ │ ├── cuda/ │ │ │ └── matrix_kernel.cu │ │ └── matrix.cl │ ├── ohmtest/ │ │ ├── CMakeLists.txt │ │ ├── CompressionTests.cpp │ │ ├── CopyTests.cpp │ │ ├── IncidentsTests.cpp │ │ ├── KeyTests.cpp │ │ ├── LayoutTests.cpp │ │ ├── LineQueryTests.cpp │ │ ├── LineWalkTests.cpp │ │ ├── MapTests.cpp │ │ ├── MathsTests.cpp │ │ ├── NdtTests.cpp │ │ ├── OhmConfig.in.h │ │ ├── OhmTestConfig.in.h │ │ ├── RayPatternTests.cpp │ │ ├── RayValidation.cpp │ │ ├── RayValidation.h │ │ ├── RaysQueryTests.cpp │ │ ├── SecondarySampleTests.cpp │ │ ├── SerialisationTests.cpp │ │ ├── TestMain.cpp │ │ ├── TouchTimeTests.cpp │ │ ├── TraversalTests.cpp │ │ ├── TsdfTests.cpp │ │ └── VoxelMeanTests.cpp │ ├── ohmtestcommon/ │ │ ├── CMakeLists.txt │ │ ├── CovarianceTestUtil.cpp │ │ ├── CovarianceTestUtil.h │ │ ├── OhmTestUtil.cpp │ │ ├── OhmTestUtil.h │ │ ├── RayPatternTestUtil.h │ │ ├── TraversalTest.cpp │ │ ├── TraversalTest.h │ │ ├── WalkSegmentKeysLegacy.cpp │ │ └── WalkSegmentKeysLegacy.h │ ├── ohmtestgpu/ │ │ ├── CMakeLists.txt │ │ ├── GpuCopyTests.cpp │ │ ├── GpuIncidentsTests.cpp │ │ ├── GpuLineKeysTests.cpp │ │ ├── GpuLineQueryTests.cpp │ │ ├── GpuMapTest.cpp │ │ ├── GpuMapperTests.cpp │ │ ├── GpuNdtTests.cpp │ │ ├── GpuRangesTests.cpp │ │ ├── GpuRayPatternTests.cpp │ │ ├── GpuRaysQueryTests.cpp │ │ ├── GpuSerialisationTests.cpp │ │ ├── GpuTestMain.cpp │ │ ├── GpuTests.cpp │ │ ├── GpuTouchTimeTests.cpp │ │ ├── GpuTraversalTests.cpp │ │ ├── GpuTsdfTests.cpp │ │ └── GpuVoxelMeanTests.cpp │ ├── ohmtestheightmap/ │ │ ├── CMakeLists.txt │ │ └── HeightmapTests.cpp │ └── slamiotest/ │ ├── CMakeLists.txt │ ├── Loader.cpp │ └── SlamCloudLoader.cpp ├── todo.md ├── utils/ │ ├── CMakeLists.txt │ ├── ohm2ply/ │ │ ├── CMakeLists.txt │ │ └── ohm2ply.cpp │ ├── ohmcmp/ │ │ ├── CMakeLists.txt │ │ └── ohmcmp.cpp │ ├── ohmfilter/ │ │ ├── CMakeLists.txt │ │ └── ohmfilter.cpp │ ├── ohmheightmap/ │ │ ├── CMakeLists.txt │ │ └── ohmheightmap.cpp │ ├── ohmhm2img/ │ │ ├── CMakeLists.txt │ │ └── ohmhm2img.cpp │ ├── ohminfo/ │ │ ├── CMakeLists.txt │ │ └── ohminfo.cpp │ ├── ohmpop/ │ │ ├── CMakeLists.txt │ │ ├── OhmPopConfig.in.h │ │ ├── ohmpopmaincpu.cpp │ │ └── ohmpopmaingpu.cpp │ ├── ohmprob/ │ │ ├── CMakeLists.txt │ │ └── ohmprob.cpp │ ├── ohmquery/ │ │ ├── CMakeLists.txt │ │ ├── OhmQueryConfig.in.h │ │ └── ohmquery.cpp │ └── ohmsubmap/ │ ├── CMakeLists.txt │ └── ohmsubmap.cpp └── vcpkg.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .clang-format ================================================ # Expected version: clang-format-10 Language: Cpp BasedOnStyle: Google AccessModifierOffset: -2 AlignAfterOpenBracket: Align AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AlignConsecutiveMacros: true AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: true AllowAllArgumentsOnNextLine: false AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: Never AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: InlineOnly AllowShortIfStatementsOnASingleLine: Never AllowShortLambdasOnASingleLine: All AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes BinPackArguments: true BinPackParameters: true BreakBeforeBraces: Custom BraceWrapping: AfterCaseLabel: true AfterClass: true AfterControlStatement: true AfterEnum: true AfterFunction: true AfterNamespace: true AfterStruct: true AfterUnion: true # AfterExternBlock: false BeforeCatch: true BeforeElse: true IndentBraces: false SplitEmptyFunction: false SplitEmptyRecord: true SplitEmptyNamespace: false BreakBeforeBinaryOperators: None BreakBeforeInheritanceComma: false BreakBeforeTernaryOperators: false BreakConstructorInitializers: BeforeComma BreakInheritanceList: BeforeComma BreakStringLiterals: true ColumnLimit: 120 CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 2 ContinuationIndentWidth: 2 Cpp11BracedListStyle: false DerivePointerAlignment: false FixNamespaceComments: true IncludeBlocks: Preserve # IncludeCategories: # - Regex: '^"(llvm|llvm-c|clang|clang-c)/' # Priority: 2 # - Regex: '^(<|"(gtest|gmock|isl|json)/)' # Priority: 3 # - Regex: '.*' # Priority: 1 # IncludeCategories: TODO # IncludeMainReges: TODO IndentCaseLabels: false IndentGotoLabels: false # IndentPPDirectives: None IndentWidth: 2 IndentWrappedFunctionNames: true KeepEmptyLinesAtTheStartOfBlocks: false # MacroBlockBegin: # MacroBlockEnd: MaxEmptyLinesToKeep: 2 NamespaceIndentation: None # PenaltyBreakAssignment: # PenaltyBreakBeforeFirstCallParameter: # PenaltyBreakComment: # PenaltyBreakFirstLessLess: # PenaltyBreakString: # PenaltyExcessCharacter: # PenaltyReturnTypeOnItsOwnLine: PointerAlignment: Right ReflowComments: true SortIncludes: true SortUsingDeclarations: true SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceBeforeSquareBrackets: false SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 2 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInConditionalStatement: false SpacesInContainerLiterals: true SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Auto TabWidth: 2 UseCRLF: false UseTab: Never ================================================ FILE: .clang-tidy ================================================ # Run clang tidy general analysis, excluding variable naming checks. --- Checks: > clang-diagnostic-*, clang-analyzer-*, boost-use-to-string, bugprone-*, cert-dcl58-cpp, cert-env33-c, cert-err34-c, cert-err52-cpp, cert-err58-cpp, cert-mem57-cpp, cert-oop57-cpp, cert-oop58-cpp, cppcoreguildelines-*, -cppcoreguidelines-macro-usage, -cppcoreguidelines-pro-bounds-pointer-arithmatic, google-*, -google-runtime-references, llvm-include-order, llvm-namespace-comment, misc-*, -misc-no-recursion, -misc-non-private-member-variables-in-classes, -misc-unused-parameters, modernize-*, -modernize-use-trailing-return-type, performance-*, readability-*, -readability-implicit-bool-conversion, -readability-uppercase-literal-suffix, hicpp-signed-bitwise WarningsAsErrors: '' HeaderFilterRegex: '.*' AnalyzeTemporaryDtors: false FormatStyle: none User: csiro CheckOptions: - key: bugprone-argument-comment.StrictMode value: '1' - key: bugprone-misplaced-widening-cast.CheckImplicitCasts value: '1' - key: performance-move-constructor-init.IncludeStyle value: 'llvm' - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor value: '1' - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions value: '1' - key: google-runtime-int.TypeSuffix value: '_t' - key: modernize-use-default-member-init.UseAssignment value: '1' # --------------------------------------------------------------------------- # Classes and structs # Class names - key: readability-identifier-naming.ClassCase value: CamelCase # Structs - key: readability-identifier-naming.StructCase value: CamelCase # static const class members - key: readability-identifier-naming.ClassConstantCase value: CamelCase - key: readability-identifier-naming.ClassConstantPrefix value: 'k' # static class members (non-const) - key: readability-identifier-naming.ClassMemberCase value: lower_case # Class members which are const, but not static - omitted to control by access scope (public, private, etc) # - key: readability-identifier-naming.ConstantMemberCase # value: lower_case # Class member functions - any access modifier (public, private, etc) - key: readability-identifier-naming.ClassMethodCase value: camelBack # Class member variable catchall - key: readability-identifier-naming.MemberCase value: lower_case # Private class member variables - key: readability-identifier-naming.PrivateMemberCase value: lower_case - key: readability-identifier-naming.PrivateMemberSuffix value: '_' # Protected member variables - key: readability-identifier-naming.ProtectedMemberCase value: lower_case - key: readability-identifier-naming.ProtectedMemberSuffix value: '_' # --------------------------------------------------------------------------- # Enum declaration name case - key: readability-identifier-naming.EnumCase value: CamelCase # Enum value declarations (the stuff inside the enum) - key: readability-identifier-naming.EnumConstantCase value: CamelCase - key: readability-identifier-naming.EnumConstantPrefix value: 'k' # --------------------------------------------------------------------------- # Templates - key: readability-identifier-naming.TemplateParameterCase value: CamelCase # - key: readability-identifier-naming.TemplateTemplateParameterCase # value: CamelCase # - key: readability-identifier-naming.TypeTemplateParameterCase # value: CamelCase # - key: readability-identifier-naming.ValueTemplateParameterCase # value: CamelCase # --------------------------------------------------------------------------- # General and global # constexpr variable assignments - key: readability-identifier-naming.ConstexprVariableCase value: CamelCase - key: readability-identifier-naming.ConstexprVariablePrefix value: 'k' # Namespaces - key: readability-identifier-naming.NamespaceCase value: lower_case # General function parameter names - key: readability-identifier-naming.ParameterCase value: lower_case # Union names - key: readability-identifier-naming.UnionCase value: CamelCase # General variable declarations - key: readability-identifier-naming.VariableCase value: lower_case # Typedef names - key: readability-identifier-naming.TypedefCase value: CamelCase # Names for type aliases: using Name = OtherThing; # Includes aliases declared in classes. - key: readability-identifier-naming.TypeAliasCase value: CamelCase # Free function case - key: readability-identifier-naming.FunctionCase value: camelBack # Global/free constant variable case. Includes anynomous namespaces. - key: readability-identifier-naming.GlobalConstantCase value: CamelCase - key: readability-identifier-naming.GlobalConstantPrefix value: 'k' # Variables in the global scope. - key: readability-identifier-naming.GlobalVariableCase value: lower_case - key: readability-identifier-naming.GlobalVariablePrefix value: 'g_' # Constants declared within local function scopes. Same as normal variables. - key: readability-identifier-naming.LocalConstantCase value: lower_case - key: readability-identifier-naming.LocalConstantPrefix value: '' # Local variable - key: readability-identifier-naming.LocalVariableCase value: lower_case # Magic number ignore list - key: readability-magic-numbers.IgnoredIntegerValues value: 0;1;2;3;4;5;6;7;8;9;10;100;1000;16;32;64;128;255;512;1024;2048;4096;8192;16384;32768;32768 - key: readability-magic-numbers.IgnorePowersOf2IntegerValues value: true - key: readability-magic-numbers.IgnoredFloatingPointValues value: 0.25;0.5;0.75;1.0;2.0;3.0;10.0;100.0;1000.0;0.1;0.001;0.0001;;-1.0;-2.0;-3.0; ... ================================================ FILE: .gitignore ================================================ .vscode/ .vs/ build*/ # Visual Studio output directory for CMake projects. out/ vcpkg_installed/ ================================================ FILE: 3rdparty/3es-core/3esservermacros.h ================================================ // 3rd Eye Scene macros // This file disables all 3rd Eye Scene macros. To be used when the library is not available. #ifndef _3ESSERVERMACROS_H #define _3ESSERVERMACROS_H namespace tes { inline void noopohm() {} } // namespace tes #define TES_STMT(statement) tes::noopohm() #define TES_IF(condition) if (false) #define TES_RGB(r, g, b) tes::noopohm() #define TES_RGBA(r, g, b, a) tes::noopohm() #define TES_COLOUR(name) tes::noopohm() #define TES_COLOUR_I(index) tes::noopohm() #define TES_COLOUR_A(name, a) tes::noopohm() #define TES_BUFFER(...) tes::noopohm() #define TES_CATEGORY(server, ...) tes::noopohm() #define TES_SERVER_DECL(server) tes::noopohm() #define TES_SETTINGS(server, ...) tes::noopohm() #define TES_SERVER_INFO(server, ...) tes::noopohm() #define TES_SERVER_INFO_TIME(server, ...) tes::noopohm() #define TES_SERVER_CREATE(server, ...) tes::noopohm() #define TES_SERVER_START(server, ...) tes::noopohm() #define TES_SERVER_START_WAIT(server, ...) tes::noopohm() #define TES_SET_CONNECTION_CALLBACK(...) tes::noopohm() #define TES_SERVER_UPDATE(server, ...) tes::noopohm() #define TES_SERVER_STOP(server) tes::noopohm() #define TES_LOCAL_FILE_STREAM(server, ...) tes::noopohm() #define TES_ACTIVE(server) false #define TES_SET_ACTIVE(server, ...) tes::noopohm() #define TES_FEATURE(feature) false #define TES_FEATURE_FLAG(feature) 0 #define TES_FEATURES(featureFlags) tes::noopohm() #define TES_IF_FEATURES(featureFlags, ...) tes::noopohm() #define TES_REFERENCE_RESOURCE(server, ...) tes::noopohm() #define TES_RELEASE_RESOURCE(server, ...) tes::noopohm() #define TES_MESH_PLACEHOLDER(id) tes::noopohm() #define TES_ARROW(server, ...) tes::noopohm() #define TES_ARROW_T(server, ...) tes::noopohm() #define TES_ARROW_W(server, ...) tes::noopohm() #define TES_BOX_AABB(server, ...) tes::noopohm() #define TES_BOX_AABB_T(server, ...) tes::noopohm() #define TES_BOX_AABB_W(server, ...) tes::noopohm() #define TES_BOX(server, ...) tes::noopohm() #define TES_BOX_T(server, ...) tes::noopohm() #define TES_BOX_W(server, ...) tes::noopohm() #define TES_CAPSULE(server, ...) tes::noopohm() #define TES_CAPSULE_T(server, ...) tes::noopohm() #define TES_CAPSULE_W(server, ...) tes::noopohm() #define TES_CONE(server, ...) tes::noopohm() #define TES_CONE_T(server, ...) tes::noopohm() #define TES_CONE_W(server, ...) tes::noopohm() #define TES_CYLINDER(server, ...) tes::noopohm() #define TES_CYLINDER_T(server, ...) tes::noopohm() #define TES_CYLINDER_W(server, ...) tes::noopohm() #define TES_LINES(server, ...) tes::noopohm() #define TES_LINES_E(server, ...) tes::noopohm() #define TES_LINE(server, ...) tes::noopohm() #define TES_MESHSET(server, ...) tes::noopohm() #define TES_PLANE(server, ...) tes::noopohm() #define TES_PLANE_T(server, ...) tes::noopohm() #define TES_PLANE_W(server, ...) tes::noopohm() #define TES_POINTCLOUDSHAPE(server, ...) tes::noopohm() #define TES_POINTS(server, ...) tes::noopohm() #define TES_POINTS_C(server, ...) tes::noopohm() #define TES_POINTS_E(server, ...) tes::noopohm() #define TES_POSE(server, ...) tes::noopohm() #define TES_POSE_T(server, ...) tes::noopohm() #define TES_POSE_W(server, ...) tes::noopohm() #define TES_SPHERE(server, ...) tes::noopohm() #define TES_SPHERE_T(server, ...) tes::noopohm() #define TES_SPHERE_W(server, ...) tes::noopohm() #define TES_STAR(server, ...) tes::noopohm() #define TES_STAR_T(server, ...) tes::noopohm() #define TES_STAR_W(server, ...) tes::noopohm() #define TES_TEXT2D_SCREEN(server, ...) tes::noopohm() #define TES_TEXT2D_WORLD(server, ...) tes::noopohm() #define TES_TEXT3D(server, ...) tes::noopohm() #define TES_TEXT3D_FACING(server, ...) tes::noopohm() #define TES_TRIANGLES(server, ...) tes::noopohm() #define TES_TRIANGLES_E(server, ...) tes::noopohm() #define TES_TRIANGLES_N(server, ...) tes::noopohm() #define TES_TRIANGLES_NE(server, ...) tes::noopohm() #define TES_TRIANGLES_W(server, ...) tes::noopohm() #define TES_TRIANGLES_WE(server, ...) tes::noopohm() #define TES_TRIANGLES_T(server, ...) tes::noopohm() #define TES_TRIANGLES_TE(server, ...) tes::noopohm() #define TES_TRIANGLE(server, ...) tes::noopohm() #define TES_TRIANGLE_W(server, ...) tes::noopohm() #define TES_TRIANGLE_T(server, ...) tes::noopohm() #define TES_VOXELS(server, ...) tes::noopohm() #define TES_ARROW_END(server, ...) tes::noopohm() #define TES_BOX_END(server, ...) tes::noopohm() #define TES_CAPSULE_END(server, ...) tes::noopohm() #define TES_CONE_END(server, ...) tes::noopohm() #define TES_CYLINDER_END(server, ...) tes::noopohm() #define TES_LINES_END(server, ...) tes::noopohm() #define TES_MESHSET_END(server, ...) tes::noopohm() #define TES_PLANE_END(server, ...) tes::noopohm() #define TES_POINTCLOUDSHAPE_END(server, ...) tes::noopohm() #define TES_POINTS_END(server, ...) tes::noopohm() #define TES_POSE_END(server, ...) tes::noopohm() #define TES_VOXELS_END(server, ...) tes::noopohm() #define TES_SPHERE_END(server, ...) tes::noopohm() #define TES_STAR_END(server, ...) tes::noopohm() #define TES_TEXT2D_END(server, ...) tes::noopohm() #define TES_TEXT3D_END(server, ...) tes::noopohm() #define TES_TRIANGLES_END(server, ...) tes::noopohm() #define TES_TRIANGLE_END(server, ...) tes::noopohm() #define TES_VOXELS_END(server, ...) tes::noopohm() #define TES_POS_UPDATE(server, ...) tes::noopohm() #define TES_ROT_UPDATE(server, ...) tes::noopohm() #define TES_SCALE_UPDATE(server, ...) tes::noopohm() #define TES_COLOUR_UPDATE(server, ...) tes::noopohm() #define TES_COLOR_UPDATE(server, ...) tes::noopohm() #define TES_POSROT_UPDATE(server, ...) tes::noopohm() #define TES_POSSCALE_UPDATE(server, ...) tes::noopohm() #define TES_ROTSCALE_UPDATE(server, ...) tes::noopohm() #define TES_PRS_UPDATE(server, ...) tes::noopohm() #define TES_PRC_UPDATE(server, ...) tes::noopohm() #define TES_PSC_UPDATE(server, ...) tes::noopohm() #define TES_RSC_UPDATE(server, ...) tes::noopohm() #define TES_PRSC_UPDATE(server, ...) tes::noopohm() #endif // _3ESSERVERMACROS_H ================================================ FILE: CMakeLists.txt ================================================ cmake_minimum_required(VERSION 3.10) project(ohm) # Set CMAKE_CXX_STANDARD to the minimum if not externally set - e.g., from command line. # We'll set it in such a way that it remains it the Cache and stays set. if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14 CACHE INTERNAL "C++ standard") endif(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) # Ensure -fPIC is added. set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Read version from package.xml file(READ package.xml ohm_VERSION) string(REGEX MATCH "\\(.*)\\" ohm_VERSION ${ohm_VERSION}) string(REGEX REPLACE "\\(.*)\\" "\\1" ohm_VERSION ${ohm_VERSION}) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(utils) # Work out if we are using VCPKG. set(OHM_VCPKG FALSE) if(CMAKE_TOOLCHAIN_FILE MATCHES ".*vcpkg\.cmake;?.*") set(OHM_VCPKG TRUE) endif(CMAKE_TOOLCHAIN_FILE MATCHES ".*vcpkg\.cmake;?.*") # Setup core ohm build options. # Default to building shared libs. set(OHM_BUILD_SHARED_DEFAULT OFF) if(DEFINED BUILD_SHARED_LIBS) # But use BUILD_SHARED_LIBS as the default if it's specified (like from the command line). set(OHM_BUILD_SHARED_DEFAULT ${BUILD_SHARED_LIBS}) endif(DEFINED BUILD_SHARED_LIBS) option(OHM_BUILD_SHARED "Build shared ohm libraries?" ${OHM_BUILD_SHARED_DEFAULT}) # For details on OHM_BUILD_SHARED_SUPPRESS_WARNINGS, see usage in compilerSetup.cmake option(OHM_BUILD_SHARED_SUPPRESS_WARNINGS "Suppress warnings relating the DLL export symbols when building shared? Disables MSC warnings C4251 and C4275" ON) option(OHM_PROFILE "Enable timing information messages for some queries." Off) option(OHM_TES_DEBUG "Enable visual debugging code?" Off) option(OHM_VALIDATION "Enable various validation tests in the occupancy map code. Has some performance impact." Off) # OHM_FEATURE_CUDA is found in OhmCuda.cmake option(OHM_LEAK_TRACK "Enable memory leak tracking?" OFF) # Build options; what extensions are we going to build. These options are authoritative and flow down from here. # For CUDA and OpenCL, we only need one, and we prefer CUDA based on what we find. However, vcpkg can guarantee we'll # find one, so it because a dependent option. option(OHM_BUILD_DOXYGEN "Build doxygen documentation?" Off) ohm_feature(EIGEN "Use Eigen for more significant linear algebra algorithms (e.g., eigen decomposition)?" FIND Eigen3) ohm_feature(HEIGHTMAP "Build heightmap library?") ohm_feature(HEIGHTMAP_IMAGE "Build heightmap image conversion?" FIND OpenGL GLEW glfw3) ohm_feature(PDAL "Build with PDAL reader support?" FIND pdal) ohm_feature(THREADS "Enable CPU threading (using Thread Building Blocks)?" FIND tbb) ohm_feature(TEST "Build unit tests?" FIND GTest) # include CUDA config here to prime OHM_FEATURE_CUDA as we prefer CUDA over OpenCL. # OHM_FEATURE_CUDA is in OhmCuda.cmake include(OhmCuda) set(OHM_FEATURE_OPENCL_DEFAULT ON) if(OHM_FEATURE_CUDA) set(OHM_FEATURE_OPENCL_DEFAULT OFF) endif(OHM_FEATURE_CUDA) ohm_feature(OPENCL "Build with OpenCL support?" FIND OpenCL DEFAULT OHM_FEATURE_OPENCL_DEFAULT) # # Windows vcpkg does not provide CUDA. # add_vcpkg_feature_if("cuda" "OHM_CUDA AND NOT WIN32") # Migrate ohm specific setting for building shared libraries to the CMake global option. set(BUILD_SHARED_LIBS ${OHM_BUILD_SHARED}) if(BUILD_SHARED_LIBS) message(STATUS "Building shared ohm libraries.") endif(BUILD_SHARED_LIBS) # Setup clang-tidy include(ClangTidy) # Allow the use of folders to group targets in supporting environments. # For example Visual Studio solution folders. set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_DEBUG_POSTFIX _d) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") foreach(CONF Debug;Release;MinSizeRel;RelWithDebInfo) string(TOUPPER ${CONF} CONFU) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFU} "${CMAKE_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFU} "${CMAKE_BINARY_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFU} "${CMAKE_BINARY_DIR}/bin") endforeach(CONF) # Add memory leak tracking support. include(LeakTrack) # Configure installation prefixes. # set(OHM_PREFIX_PACKAGE lib/cmake/${CMAKE_PROJECT_NAME}) set(OHM_PREFIX_PACKAGE share/${CMAKE_PROJECT_NAME}/cmake) # For catkin interoperation # Prefix for include directories. set(OHM_PREFIX_INCLUDE include/ohm) # General, required library # We use our own FindGLM to cater for differences between Ubuntu 18.04 and 20.04. # From 20.04 on, we can just just find_config(glm CONFIG REQUIRED) find_package(glm MODULE REQUIRED) if(OHM_FEATURE_OPENCL) find_package(OpenCL) endif(OHM_FEATURE_OPENCL) if(OpenCL_FOUND) option(OHM_EMBED_GPU_CODE "Embed GPU code into the executable (OpenCL)? Otherwise GPU code files are loaded from disk (better for development)." ON) set(OHM_OPENCL_SDK_VER 1.2 CACHE STRING "Select the OpenCL runtime API to use.") set_property(CACHE OHM_OPENCL_SDK_VER PROPERTY STRINGS 1.2 2.0 2.1 2.2 3.0) set(OHM_OPENCL_STD 2.0 CACHE STRING "Select the default OpenCL standard to compile GPU code against. Also runtime configurable. [max] uses the reported device allowing for 2.x requires features.") set_property(CACHE OHM_OPENCL_STD PROPERTY STRINGS 1.2 2.0 3.0 max) endif(OpenCL_FOUND) # Identify any extensions required to compile with OpenCL 2.0 std. set(OHM_OPENCL_2_FEATURES "" CACHE STRING "Features required for OpenCL 2.x. Fallback to 1.2 otherwise.") # Look for CUDA to setup CUDA build options and work out which CMake CUDA paradigm we'll use. if(OHM_FEATURE_CUDA) if(NOT OHM_USE_DEPRECATED_CMAKE_CUDA) find_package(CUDAToolkit REQUIRED) else(NOT OHM_USE_DEPRECATED_CMAKE_CUDA) # Need to find CUDA for deprecated project configuration find_package(CUDA REQUIRED) endif(NOT OHM_USE_DEPRECATED_CMAKE_CUDA) endif(OHM_FEATURE_CUDA) if(OHM_FEATURE_EIGEN) find_package(Eigen3 CONFIG REQUIRED) endif(OHM_FEATURE_EIGEN) # Manage compiler warnings. # Use CMAKE_MODULE_PATH and include(warnings) if warnings.cmake is moved. include(compilerSetup) # Now setup CUDA after knowing if we are building shared libraries or not. cuda_setup() # Setup default memory leak tracking suppressions and options (GCC/Clang AddressSanitizer). set(OHM_LEAK_SUPPRESS_OCL_INIT # OpenCL memory allocation overrides "__interceptor_malloc" "__interceptor_calloc" # Intel OpenCL leaks "libigdrcl" "llvm::FPPassManager::runOnFunction" "llvm::SmallVectorBase" "libigc" "basic_string, std::allocator >::_M_mutate" ) set(OHM_LEAK_SUPPRESS_TBB_INIT "libtbb" ) set(OHM_LEAK_SUPPRESS_CUDA_INIT ) set(OHM_ASAN_OPTIONS_CUDA_INIT "protect_shadow_gap=0") set(OHM_LEAK_SUPPRESS_OCL "${OHM_LEAK_SUPPRESS_OCL_INIT}" CACHE STRING "Memory leak suppression list for OpenCL") set(OHM_LEAK_SUPPRESS_TBB "${OHM_LEAK_SUPPRESS_TBB_INIT}" CACHE STRING "Memory leak suppression list for Intel Threading Building Blocks") set(OHM_LEAK_SUPPRESS_CUDA "${OHM_LEAK_SUPPRESS_CUDA_INIT}" CACHE STRING "Memory leak suppression list for CUDA") set(OHM_ASAN_OPTIONS_CUDA "${OHM_ASAN_OPTIONS_CUDA_INIT}" CACHE STRING "Address Sanitizer options for CUDA") # Configure OHM_GPU as a value for configure_file set(OHM_GPU_OPENCL 1) set(OHM_GPU_CUDA 2) set(OHM_GPU 0) # Configure use of 3rd-Eye-Scene visual debugging (use for development only) if(OHM_TES_DEBUG) find_package(3es) else(OHM_TES_DEBUG) # Include path to 3esservermarcos.h which effectively disables all 3es macros. set(3ES_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/3rdparty/3es-core") endif(OHM_TES_DEBUG) add_subdirectory(logutil) if(OHM_FEATURE_OPENCL) add_subdirectory(clu) endif(OHM_FEATURE_OPENCL) if(OHM_FEATURE_CUDA OR OHM_FEATURE_OPENCL) add_subdirectory(gputil) endif(OHM_FEATURE_CUDA OR OHM_FEATURE_OPENCL) add_subdirectory(ohmutil) add_subdirectory(slamio) add_subdirectory(ohm) if(OHM_FEATURE_CUDA OR OHM_FEATURE_OPENCL) add_subdirectory(ohmgpu) endif(OHM_FEATURE_CUDA OR OHM_FEATURE_OPENCL) if(OHM_FEATURE_HEIGHTMAP) add_subdirectory(ohmheightmap) endif(OHM_FEATURE_HEIGHTMAP) if(OHM_FEATURE_HEIGHTMAP_IMAGE) # Experimental add_subdirectory(ohmheightmapimage) endif(OHM_FEATURE_HEIGHTMAP_IMAGE) add_subdirectory(ohmtools) add_subdirectory(ohmapp) add_subdirectory(utils) if(OHM_FEATURE_TEST) enable_testing() add_subdirectory(tests) endif(OHM_FEATURE_TEST) clang_tidy_global() export(EXPORT ${CMAKE_PROJECT_NAME}-config-targets FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-config-targets.cmake" NAMESPACE ohm:: ) install(EXPORT ${CMAKE_PROJECT_NAME}-config-targets FILE ${CMAKE_PROJECT_NAME}-config-targets.cmake NAMESPACE ohm:: DESTINATION ${OHM_PREFIX_PACKAGE} ) # Setup import scripts. include(CMakePackageConfigHelpers) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-version.cmake" VERSION ${ohm_VERSION} COMPATIBILITY AnyNewerVersion ) # Installation of the package configuration file. configure_file(cmake/${CMAKE_PROJECT_NAME}-packages.cmake "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-packages.cmake") configure_file(cmake/${CMAKE_PROJECT_NAME}-config.cmake "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-config.cmake" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-packages.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-version.cmake" DESTINATION ${OHM_PREFIX_PACKAGE} COMPONENT Devel) # Install MSVC runtime libraries. This will also affect the CPack installation. include(InstallRequiredSystemLibraries) # Doxygen setup. if(OHM_BUILD_DOXYGEN) # Include Doxygen helper functions. This also finds the Doxygen package. include(doxygen) set(DOXYGEN_DIRS gputil ohm ohmtools ohmutil slamio ) set(DOXYGE_EXCLUDE_DIRS clu/3rdparty gputil/cl gputil/cuda ohm/cl ohm/gpu ohm/private ohmgpu/private ohmutil/3rdparty slamio/miniply slamio/pdal ) if(OHM_FEATURE_CUDA OR OHM_FEATURE_OPENCL) list(APPEND DOXYGEN_DIRS ohmgpu) endif(OHM_FEATURE_CUDA OR OHM_FEATURE_OPENCL) if(OHM_FEATURE_OPENCL) list(APPEND DOXYGEN_DIRS clu) endif(OHM_FEATURE_OPENCL) list(APPEND DOXYGEN_DIRS docs) if(DOXYGEN_FOUND) # Create a target to build the documentation. # Here we also setup various documentation variables passed through to the doxyfile configuration. # Each named argument below describes the Doxygen variable it sets. doxygen_create( # DOXYFILE cmake/doxyfile.in # Doxyfile to configure. PROJECT ${CMAKE_PROJECT_NAME} # PROJECT_NAME VERSION ${ohm_VERSION} # PROJECT_NUMBER OUTPUT_DIR html # HTML_OUPTUT # CSS