AcademySoftwareFoundation / openvdb

OpenVDB - Sparse volume data structure and tools
http://www.openvdb.org/
Mozilla Public License 2.0
2.62k stars 647 forks source link

[BUILD] Build will fail on some 32-bit platforms, since configure does not check for a need for `libatomic` linking #1801

Open barracuda156 opened 5 months ago

barracuda156 commented 5 months ago

Environment

Operating System: macOS 10.6 / ppc Version / Commit SHA: 11.0.0 Other: gcc 13.2.0

Describe the bug

Linking fails due to missing -latomic. libatomic is not invoked because configure does not check for such a need.

To Reproduce

Steps to reproduce the behavior: Build on a platform which needs libatomic for 8-byte atomics.

Expected behavior

CMake should check for hardware support for 8-byte atomics, and if that is not detected, pass -latomic flag.

Additional context

[ 78%] Linking CXX shared library libopenvdb.dylib
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_openvdb/openvdb/work/build/openvdb/openvdb && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/openvdb_shared.dir/link.txt --verbose=ON
/opt/local/bin/g++-mp-13 -pipe -I/opt/local/libexec/boost/1.76/include -Os -DNDEBUG -I/opt/local/libexec/boost/1.76/include -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names -L/opt/local/libexec/boost/1.76/lib -L/opt/local/lib -Wl,-headerpad_max_install_names -compatibility_version 11.0.0 -current_version 11.0.0 -o libopenvdb.11.0.0.dylib -install_name @rpath/libopenvdb.11.0.dylib CMakeFiles/openvdb_shared.dir/instantiations/VolumeToSpheres.cc.o CMakeFiles/openvdb_shared.dir/instantiations/VolumeToMesh.cc.o CMakeFiles/openvdb_shared.dir/instantiations/VolumeAdvect.cc.o CMakeFiles/openvdb_shared.dir/instantiations/VelocityFields.cc.o CMakeFiles/openvdb_shared.dir/instantiations/VectorTransformer.cc.o CMakeFiles/openvdb_shared.dir/instantiations/ValueTransformer.cc.o CMakeFiles/openvdb_shared.dir/instantiations/TopologyToLevelSet.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Statistics.cc.o CMakeFiles/openvdb_shared.dir/instantiations/SignedFloodFill.cc.o CMakeFiles/openvdb_shared.dir/instantiations/RayTracer.cc.o CMakeFiles/openvdb_shared.dir/instantiations/RayIntersector.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Prune.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PotentialFlow.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PoissonSolver.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PointsToMask.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PointScatter.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PointPartitioner.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PointIndexGrid.cc.o CMakeFiles/openvdb_shared.dir/instantiations/PointAdvect.cc.o CMakeFiles/openvdb_shared.dir/instantiations/ParticlesToLevelSet.cc.o CMakeFiles/openvdb_shared.dir/instantiations/ParticleAtlas.cc.o CMakeFiles/openvdb_shared.dir/instantiations/NodeVisitor.cc.o CMakeFiles/openvdb_shared.dir/instantiations/MultiResGrid.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Morphology.cc.o CMakeFiles/openvdb_shared.dir/instantiations/MeshToVolume.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Merge.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Mask.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetUtil.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetTracker.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetSphere.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetRebuild.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetPlatonic.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetMorph.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetMeasure.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetFracture.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetFilter.cc.o CMakeFiles/openvdb_shared.dir/instantiations/LevelSetAdvect.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Interpolation.cc.o CMakeFiles/openvdb_shared.dir/instantiations/GridTransformer.cc.o CMakeFiles/openvdb_shared.dir/instantiations/GridOperators.cc.o CMakeFiles/openvdb_shared.dir/instantiations/FindActiveValues.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Filter.cc.o CMakeFiles/openvdb_shared.dir/instantiations/FastSweeping.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Diagnostics.cc.o CMakeFiles/openvdb_shared.dir/instantiations/DenseSparseTools.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Dense.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Count.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Composite.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Clip.cc.o CMakeFiles/openvdb_shared.dir/instantiations/ChangeBackground.cc.o CMakeFiles/openvdb_shared.dir/instantiations/Activate.cc.o CMakeFiles/openvdb_shared.dir/Grid.cc.o CMakeFiles/openvdb_shared.dir/io/Archive.cc.o CMakeFiles/openvdb_shared.dir/io/Compression.cc.o CMakeFiles/openvdb_shared.dir/io/DelayedLoadMetadata.cc.o CMakeFiles/openvdb_shared.dir/io/File.cc.o CMakeFiles/openvdb_shared.dir/io/GridDescriptor.cc.o CMakeFiles/openvdb_shared.dir/io/Queue.cc.o CMakeFiles/openvdb_shared.dir/io/Stream.cc.o CMakeFiles/openvdb_shared.dir/io/TempFile.cc.o CMakeFiles/openvdb_shared.dir/math/Half.cc.o CMakeFiles/openvdb_shared.dir/math/Maps.cc.o CMakeFiles/openvdb_shared.dir/math/Proximity.cc.o CMakeFiles/openvdb_shared.dir/math/QuantizedUnitVec.cc.o CMakeFiles/openvdb_shared.dir/math/Transform.cc.o CMakeFiles/openvdb_shared.dir/Metadata.cc.o CMakeFiles/openvdb_shared.dir/MetaMap.cc.o CMakeFiles/openvdb_shared.dir/openvdb.cc.o CMakeFiles/openvdb_shared.dir/Platform.cc.o CMakeFiles/openvdb_shared.dir/points/AttributeArray.cc.o CMakeFiles/openvdb_shared.dir/points/AttributeArrayString.cc.o CMakeFiles/openvdb_shared.dir/points/AttributeGroup.cc.o CMakeFiles/openvdb_shared.dir/points/AttributeSet.cc.o CMakeFiles/openvdb_shared.dir/points/StreamCompression.cc.o CMakeFiles/openvdb_shared.dir/points/points.cc.o CMakeFiles/openvdb_shared.dir/util/Formats.cc.o   -L/opt/local/libexec/onetbb/lib  -Wl,-rpath,/opt/local/libexec/onetbb/lib /opt/local/lib/libImath-3_1.29.10.0.dylib /opt/local/libexec/onetbb/lib/libtbb.dylib /opt/local/lib/libblosc.dylib /opt/local/lib/libz.dylib /opt/local/libexec/boost/1.76/lib/libboost_iostreams-mt.dylib -lm /opt/local/libexec/boost/1.76/lib/libboost_regex-mt.dylib
Undefined symbols:
  "___atomic_load_8", referenced from:
      __ZN3tbb6detail2d115task_group_baseD2Ev in TopologyToLevelSet.cc.o
      __ZN3tbb6detail2d115task_group_baseD2Ev in MeshToVolume.cc.o
      __ZN3tbb6detail2d115task_group_baseD2Ev in FastSweeping.cc.o
      __ZN3tbb6detail2d115task_group_baseD2Ev in Composite.cc.o
      __ZNK7openvdb5v11_02io10MappedFile12createBufferEv in Archive.cc.o
      __ZNK7openvdb5v11_02io10MappedFile12createBufferEv in Archive.cc.o
  "___atomic_store_8", referenced from:
      __ZN7openvdb5v11_02io10MappedFileC4ERKSsb in Archive.cc.o
      __ZNK7openvdb5v11_02io10MappedFile12createBufferEv in Archive.cc.o
  "___atomic_fetch_add_8", referenced from:
      __ZN3tbb6detail2d112wait_context7releaseEj in VolumeToSpheres.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in VolumeToMesh.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in VolumeAdvect.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in VectorTransformer.cc.o
      __ZN3tbb6detail2d112wait_context13add_referenceEx in TopologyToLevelSet.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in SignedFloodFill.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in RayTracer.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in Prune.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in PotentialFlow.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in PoissonSolver.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in MultiResGrid.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in Morphology.cc.o
      __ZN3tbb6detail2d112wait_context13add_referenceEx in MeshToVolume.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in Merge.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in Mask.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in LevelSetUtil.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in LevelSetTracker.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in LevelSetSphere.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in LevelSetRebuild.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in LevelSetMorph.cc.o
      __ZN3tbb6detail2d112wait_context13add_referenceEx in LevelSetMeasure.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in LevelSetFracture.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in LevelSetFilter.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in LevelSetAdvect.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in GridTransformer.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in GridOperators.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in FindActiveValues.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in Filter.cc.o
      __ZN3tbb6detail2d112wait_context13add_referenceEx in FastSweeping.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in Diagnostics.cc.o
      __ZN3tbb6detail2d112wait_context13add_referenceEx in Composite.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in Clip.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in ChangeBackground.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in Activate.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in Archive.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in openvdb.cc.o
      __ZN3tbb6detail2d19fold_treeINS1_9tree_nodeEEEvPNS1_4nodeERKNS1_14execution_dataE in AttributeArrayString.cc.o
      __ZN3tbb6detail2d112wait_context7releaseEj in points.cc.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make[2]: *** [openvdb/openvdb/libopenvdb.11.0.0.dylib] Error 1