forked from LeenkxTeam/LNXSDK
968 lines
45 KiB
CMake
968 lines
45 KiB
CMake
# Requires C++ 17
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
# Root
|
|
set(JOLT_PHYSICS_ROOT ${PHYSICS_REPO_ROOT}/Jolt)
|
|
|
|
# Source files
|
|
set(JOLT_PHYSICS_SRC_FILES
|
|
${JOLT_PHYSICS_ROOT}/AABBTree/AABBTreeBuilder.cpp
|
|
${JOLT_PHYSICS_ROOT}/AABBTree/AABBTreeBuilder.h
|
|
${JOLT_PHYSICS_ROOT}/AABBTree/AABBTreeToBuffer.h
|
|
${JOLT_PHYSICS_ROOT}/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h
|
|
${JOLT_PHYSICS_ROOT}/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h
|
|
${JOLT_PHYSICS_ROOT}/ConfigurationString.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/ComputeBuffer.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/ComputeQueue.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/ComputeSystem.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/ComputeSystem.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/ComputeShader.h
|
|
${JOLT_PHYSICS_ROOT}/Core/ARMNeon.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Array.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Atomics.h
|
|
${JOLT_PHYSICS_ROOT}/Core/BinaryHeap.h
|
|
${JOLT_PHYSICS_ROOT}/Core/ByteBuffer.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Color.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/Color.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Core.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Factory.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/Factory.h
|
|
${JOLT_PHYSICS_ROOT}/Core/FixedSizeFreeList.h
|
|
${JOLT_PHYSICS_ROOT}/Core/FixedSizeFreeList.inl
|
|
${JOLT_PHYSICS_ROOT}/Core/FPControlWord.h
|
|
${JOLT_PHYSICS_ROOT}/Core/FPException.h
|
|
${JOLT_PHYSICS_ROOT}/Core/FPFlushDenormals.h
|
|
${JOLT_PHYSICS_ROOT}/Core/HashCombine.h
|
|
${JOLT_PHYSICS_ROOT}/Core/HashTable.h
|
|
${JOLT_PHYSICS_ROOT}/Core/IncludeWindows.h
|
|
${JOLT_PHYSICS_ROOT}/Core/InsertionSort.h
|
|
${JOLT_PHYSICS_ROOT}/Core/IssueReporting.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/IssueReporting.h
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystem.h
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystem.inl
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystemSingleThreaded.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystemSingleThreaded.h
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystemThreadPool.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystemThreadPool.h
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystemWithBarrier.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/JobSystemWithBarrier.h
|
|
${JOLT_PHYSICS_ROOT}/Core/LinearCurve.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/LinearCurve.h
|
|
${JOLT_PHYSICS_ROOT}/Core/LockFreeHashMap.h
|
|
${JOLT_PHYSICS_ROOT}/Core/LockFreeHashMap.inl
|
|
${JOLT_PHYSICS_ROOT}/Core/Memory.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/Memory.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Mutex.h
|
|
${JOLT_PHYSICS_ROOT}/Core/MutexArray.h
|
|
${JOLT_PHYSICS_ROOT}/Core/NonCopyable.h
|
|
${JOLT_PHYSICS_ROOT}/Core/ObjectToIDMap.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Profiler.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/Profiler.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Profiler.inl
|
|
${JOLT_PHYSICS_ROOT}/Core/QuickSort.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Reference.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Result.h
|
|
${JOLT_PHYSICS_ROOT}/Core/RTTI.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/RTTI.h
|
|
${JOLT_PHYSICS_ROOT}/Core/ScopeExit.h
|
|
${JOLT_PHYSICS_ROOT}/Core/Semaphore.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/Semaphore.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StaticArray.h
|
|
${JOLT_PHYSICS_ROOT}/Core/STLAlignedAllocator.h
|
|
${JOLT_PHYSICS_ROOT}/Core/STLAllocator.h
|
|
${JOLT_PHYSICS_ROOT}/Core/STLLocalAllocator.h
|
|
${JOLT_PHYSICS_ROOT}/Core/STLTempAllocator.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StreamIn.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StreamOut.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StreamUtils.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StreamWrapper.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StridedPtr.h
|
|
${JOLT_PHYSICS_ROOT}/Core/StringTools.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/StringTools.h
|
|
${JOLT_PHYSICS_ROOT}/Core/TempAllocator.h
|
|
${JOLT_PHYSICS_ROOT}/Core/TickCounter.cpp
|
|
${JOLT_PHYSICS_ROOT}/Core/TickCounter.h
|
|
${JOLT_PHYSICS_ROOT}/Core/UnorderedMap.h
|
|
${JOLT_PHYSICS_ROOT}/Core/UnorderedMapFwd.h
|
|
${JOLT_PHYSICS_ROOT}/Core/UnorderedSet.h
|
|
${JOLT_PHYSICS_ROOT}/Core/UnorderedSetFwd.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/AABox.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/AABox4.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ClipPoly.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ClosestPoint.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ConvexHullBuilder.cpp
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ConvexHullBuilder.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ConvexHullBuilder2D.cpp
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ConvexHullBuilder2D.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/ConvexSupport.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/Ellipse.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/EPAConvexHullBuilder.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/EPAPenetrationDepth.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/GJKClosestPoint.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/IndexedTriangle.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/Indexify.cpp
|
|
${JOLT_PHYSICS_ROOT}/Geometry/Indexify.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/MortonCode.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/OrientedBox.cpp
|
|
${JOLT_PHYSICS_ROOT}/Geometry/OrientedBox.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/Plane.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/RayAABox.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/RayCapsule.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/RayCylinder.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/RaySphere.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/RayTriangle.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/Sphere.h
|
|
${JOLT_PHYSICS_ROOT}/Geometry/Triangle.h
|
|
${JOLT_PHYSICS_ROOT}/Jolt.cmake
|
|
${JOLT_PHYSICS_ROOT}/Jolt.h
|
|
${JOLT_PHYSICS_ROOT}/Math/BVec16.h
|
|
${JOLT_PHYSICS_ROOT}/Math/BVec16.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/DMat44.h
|
|
${JOLT_PHYSICS_ROOT}/Math/DMat44.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/Double3.h
|
|
${JOLT_PHYSICS_ROOT}/Math/DVec3.h
|
|
${JOLT_PHYSICS_ROOT}/Math/DVec3.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/DynMatrix.h
|
|
${JOLT_PHYSICS_ROOT}/Math/EigenValueSymmetric.h
|
|
${JOLT_PHYSICS_ROOT}/Math/FindRoot.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Float2.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Float3.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Float4.h
|
|
${JOLT_PHYSICS_ROOT}/Math/GaussianElimination.h
|
|
${JOLT_PHYSICS_ROOT}/Math/HalfFloat.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Mat44.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Mat44.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/Math.h
|
|
${JOLT_PHYSICS_ROOT}/Math/MathTypes.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Matrix.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Quat.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Quat.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/Real.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Swizzle.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Trigonometry.h
|
|
${JOLT_PHYSICS_ROOT}/Math/UVec4.h
|
|
${JOLT_PHYSICS_ROOT}/Math/UVec4.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/Vec3.cpp
|
|
${JOLT_PHYSICS_ROOT}/Math/Vec3.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Vec3.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/Vec4.h
|
|
${JOLT_PHYSICS_ROOT}/Math/Vec4.inl
|
|
${JOLT_PHYSICS_ROOT}/Math/Vector.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStream.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/SerializableAttribute.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/SerializableAttributeEnum.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/SerializableAttributeTyped.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/SerializableObject.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/SerializableObject.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/TypeDeclarations.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/AllowedDOFs.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/Body.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/Body.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/Body.inl
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyAccess.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyActivationListener.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyCreationSettings.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyCreationSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyFilter.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyID.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyInterface.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyInterface.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyLock.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyLockInterface.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyLockMulti.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyManager.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyManager.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyPair.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/BodyType.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MassProperties.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MassProperties.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MotionProperties.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MotionProperties.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MotionProperties.inl
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MotionQuality.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Body/MotionType.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/Character.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/Character.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/CharacterBase.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/CharacterBase.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/CharacterID.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/CharacterVirtual.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Character/CharacterVirtual.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/AABoxCast.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ActiveEdgeMode.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ActiveEdges.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BackFaceMode.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhase.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhase.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseLayer.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/BroadPhaseQuery.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/QuadTree.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/BroadPhase/QuadTree.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CastConvexVsTriangles.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CastConvexVsTriangles.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CastResult.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CastSphereVsTriangles.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CastSphereVsTriangles.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollectFacesMode.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideConvexVsTriangles.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideConvexVsTriangles.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollidePointResult.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideShapeVsShapePerLeaf.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideSoftBodyVertexIterator.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideSphereVsTriangles.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollideSphereVsTriangles.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollisionCollector.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollisionCollectorImpl.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollisionDispatch.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollisionDispatch.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollisionGroup.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/CollisionGroup.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ContactListener.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/EstimateCollisionResponse.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/EstimateCollisionResponse.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/GroupFilter.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/GroupFilter.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/GroupFilterTable.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/GroupFilterTable.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/InternalEdgeRemovingCollector.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ManifoldBetweenTwoFaces.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ManifoldBetweenTwoFaces.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/NarrowPhaseQuery.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/NarrowPhaseQuery.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/NarrowPhaseStats.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/NarrowPhaseStats.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ObjectLayer.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ObjectLayerPairFilterMask.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ObjectLayerPairFilterTable.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/PhysicsMaterial.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/PhysicsMaterial.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/PhysicsMaterialSimple.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/PhysicsMaterialSimple.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/RayCast.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/BoxShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/BoxShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CapsuleShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CapsuleShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CompoundShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CompoundShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CompoundShapeVisitors.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ConvexHullShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ConvexHullShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ConvexShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ConvexShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CylinderShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/CylinderShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/DecoratedShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/DecoratedShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/EmptyShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/EmptyShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/GetTrianglesContext.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/HeightFieldShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/HeightFieldShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/MeshShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/MeshShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/MutableCompoundShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/MutableCompoundShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/OffsetCenterOfMassShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/PlaneShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/PlaneShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/RotatedTranslatedShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/RotatedTranslatedShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ScaledShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ScaledShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/ScaleHelpers.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/Shape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/Shape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/SphereShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/SphereShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/StaticCompoundShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/StaticCompoundShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/SubShapeID.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/SubShapeIDPair.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TaperedCapsuleShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TaperedCapsuleShape.gliffy
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TaperedCapsuleShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TaperedCylinderShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TaperedCylinderShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TriangleShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/Shape/TriangleShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ShapeCast.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/ShapeFilter.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/SimShapeFilter.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/SimShapeFilterWrapper.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/SortReverseAndStore.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/TransformedShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Collision/TransformedShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/CalculateSolverSteps.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConeConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConeConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/Constraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/Constraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintManager.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintManager.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/AngleConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/AxisConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/GearConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/PointConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/SpringPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ContactConstraintManager.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/ContactConstraintManager.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/DistanceConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/DistanceConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/FixedConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/FixedConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/GearConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/GearConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/HingeConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/HingeConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/MotorSettings.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/MotorSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PathConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PathConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PathConstraintPath.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PathConstraintPath.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PathConstraintPathHermite.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PathConstraintPathHermite.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PointConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PointConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PulleyConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/PulleyConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/RackAndPinionConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/RackAndPinionConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SixDOFConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SixDOFConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SliderConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SliderConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SpringSettings.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SpringSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SwingTwistConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/SwingTwistConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/TwoBodyConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Constraints/TwoBodyConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/DeterminismLog.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/DeterminismLog.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/EActivation.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/EPhysicsUpdateError.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Hair/Hair.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Hair/Hair.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Hair/HairSettings.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Hair/HairSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Hair/HairShaders.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Hair/HairShaders.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/IslandBuilder.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/IslandBuilder.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/LargeIslandSplitter.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/LargeIslandSplitter.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsLock.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsScene.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsScene.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsStepListener.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsSystem.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsSystem.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsUpdateContext.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/PhysicsUpdateContext.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Ragdoll/Ragdoll.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Ragdoll/Ragdoll.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyContactListener.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyCreationSettings.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyCreationSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyManifold.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyMotionProperties.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyMotionProperties.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyShape.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyShape.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodySharedSettings.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodySharedSettings.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyUpdateContext.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/SoftBody/SoftBodyVertex.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/StateRecorder.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/StateRecorderImpl.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/StateRecorderImpl.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/MotorcycleController.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/MotorcycleController.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/TrackedVehicleController.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/TrackedVehicleController.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleAntiRollBar.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleAntiRollBar.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleCollisionTester.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleCollisionTester.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleConstraint.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleConstraint.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleController.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleController.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleDifferential.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleDifferential.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleEngine.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleEngine.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleTrack.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleTrack.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleTransmission.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/VehicleTransmission.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/Wheel.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/Wheel.h
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/WheeledVehicleController.cpp
|
|
${JOLT_PHYSICS_ROOT}/Physics/Vehicle/WheeledVehicleController.h
|
|
${JOLT_PHYSICS_ROOT}/RegisterTypes.cpp
|
|
${JOLT_PHYSICS_ROOT}/RegisterTypes.h
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRenderer.cpp
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRenderer.h
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRendererPlayback.cpp
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRendererPlayback.h
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRendererRecorder.cpp
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRendererRecorder.h
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRendererSimple.cpp
|
|
${JOLT_PHYSICS_ROOT}/Renderer/DebugRendererSimple.h
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/SkeletalAnimation.cpp
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/SkeletalAnimation.h
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/Skeleton.cpp
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/Skeleton.h
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/SkeletonMapper.cpp
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/SkeletonMapper.h
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/SkeletonPose.cpp
|
|
${JOLT_PHYSICS_ROOT}/Skeleton/SkeletonPose.h
|
|
${JOLT_PHYSICS_ROOT}/TriangleSplitter/TriangleSplitter.cpp
|
|
${JOLT_PHYSICS_ROOT}/TriangleSplitter/TriangleSplitter.h
|
|
${JOLT_PHYSICS_ROOT}/TriangleSplitter/TriangleSplitterBinning.cpp
|
|
${JOLT_PHYSICS_ROOT}/TriangleSplitter/TriangleSplitterBinning.h
|
|
${JOLT_PHYSICS_ROOT}/TriangleSplitter/TriangleSplitterMean.cpp
|
|
${JOLT_PHYSICS_ROOT}/TriangleSplitter/TriangleSplitterMean.h
|
|
)
|
|
|
|
if (ENABLE_OBJECT_STREAM)
|
|
set(JOLT_PHYSICS_SRC_FILES
|
|
${JOLT_PHYSICS_SRC_FILES}
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/GetPrimitiveTypeOfType.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStream.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamBinaryIn.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamBinaryIn.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamBinaryOut.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamBinaryOut.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamIn.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamIn.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamOut.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamOut.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamTextIn.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamTextIn.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamTextOut.cpp
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamTextOut.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/ObjectStreamTypes.h
|
|
${JOLT_PHYSICS_ROOT}/ObjectStream/TypeDeclarations.cpp
|
|
)
|
|
endif()
|
|
|
|
if (JPH_USE_DX12 OR JPH_USE_VK OR JPH_USE_MTL OR JPH_USE_CPU_COMPUTE)
|
|
# Compute shaders
|
|
set(JOLT_PHYSICS_SHADERS
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairApplyDeltaTransform.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairApplyGlobalPose.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairCalculateCollisionPlanes.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairCalculateRenderPositions.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairGridAccumulate.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairGridClear.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairGridNormalize.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairIntegrate.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairSkinRoots.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairSkinVertices.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairTeleport.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateRoots.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateStrands.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateVelocity.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateVelocityIntegrate.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/TestCompute.hlsl
|
|
${JOLT_PHYSICS_ROOT}/Shaders/TestCompute2.hlsl
|
|
)
|
|
|
|
set(JOLT_PHYSICS_SHADER_HEADERS
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairApplyDeltaTransformBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairApplyGlobalPose.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairApplyGlobalPoseBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairCalculateCollisionPlanesBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairCalculateRenderPositions.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairCalculateRenderPositionsBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairCommon.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairGridAccumulateBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairGridClearBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairGridNormalizeBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairIntegrate.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairIntegrateBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairSkinRootsBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairSkinVerticesBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairStructs.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairTeleportBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateRootsBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateStrandsBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateVelocity.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateVelocityBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairUpdateVelocityIntegrateBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/ShaderCore.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/ShaderMat44.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/ShaderMath.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/ShaderPlane.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/ShaderQuat.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/ShaderVec3.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/TestComputeBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/TestCompute2Bindings.h
|
|
)
|
|
endif()
|
|
|
|
# CPU compute support
|
|
if (JPH_USE_CPU_COMPUTE)
|
|
set(JOLT_PHYSICS_SRC_FILES
|
|
${JOLT_PHYSICS_SRC_FILES}
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeQueueCPU.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeQueueCPU.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeBufferCPU.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeBufferCPU.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeSystemCPU.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeSystemCPU.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ComputeShaderCPU.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/HLSLToCPP.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/ShaderWrapper.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/WrapShaderBegin.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/WrapShaderBindings.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/CPU/WrapShaderEnd.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairWrapper.cpp
|
|
${JOLT_PHYSICS_ROOT}/Shaders/HairWrapper.h
|
|
${JOLT_PHYSICS_ROOT}/Shaders/TestComputeWrapper.cpp
|
|
)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
# Add natvis file
|
|
set(JOLT_PHYSICS_SRC_FILES ${JOLT_PHYSICS_SRC_FILES} ${JOLT_PHYSICS_ROOT}/Jolt.natvis)
|
|
|
|
# Set properties to compile shaders as compute shaders
|
|
set_source_files_properties(${JOLT_PHYSICS_SHADERS} PROPERTIES VS_SHADER_FLAGS "/WX /T cs_5_0")
|
|
|
|
# DirectX support
|
|
if (JPH_USE_DX12)
|
|
# DirectX source files
|
|
set(JOLT_PHYSICS_SRC_FILES
|
|
${JOLT_PHYSICS_SRC_FILES}
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeQueueDX12.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeQueueDX12.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeBufferDX12.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeBufferDX12.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeSystemDX12.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeSystemDX12.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeSystemDX12Impl.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeSystemDX12Impl.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/ComputeShaderDX12.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/DX12/IncludeDX12.h
|
|
)
|
|
endif()
|
|
else()
|
|
set(JPH_USE_DX12 OFF)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
# Metal support
|
|
if (JPH_USE_MTL)
|
|
# Metal source files
|
|
set(JOLT_PHYSICS_SRC_FILES
|
|
${JOLT_PHYSICS_SRC_FILES}
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeBufferMTL.mm
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeBufferMTL.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeQueueMTL.mm
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeQueueMTL.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeShaderMTL.mm
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeShaderMTL.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeSystemMTL.mm
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeSystemMTL.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeSystemMTLImpl.mm
|
|
${JOLT_PHYSICS_ROOT}/Compute/MTL/ComputeSystemMTLImpl.h
|
|
)
|
|
|
|
find_program(DXC_COMPILER NAMES dxc)
|
|
find_program(SPIRV_CROSS_COMPILER NAMES spirv-cross)
|
|
if (NOT DXC_COMPILER)
|
|
MESSAGE("Application 'dxc' not found. Can't compile compute shaders. Some functionality will be unavailable. You can install it by e.g. installing the Vulkan SDK.")
|
|
elseif (NOT SPIRV_CROSS_COMPILER)
|
|
MESSAGE("Application 'spirv-cross' not found. Can't compile compute shaders. Some functionality will be unavailable. You can install it by e.g. installing the Vulkan SDK.")
|
|
else()
|
|
# Determine target for shader compiler
|
|
if (IOS)
|
|
set(METAL_SDK_TARGET "iphonesimulator")
|
|
else()
|
|
set(METAL_SDK_TARGET "macosx")
|
|
endif()
|
|
|
|
# Compile Metal shaders
|
|
foreach(SHADER ${JOLT_PHYSICS_SHADERS})
|
|
cmake_path(GET SHADER STEM SHADER_STEM) # Filename without extension
|
|
set(SPV_SHADER "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_STEM}.spv")
|
|
set(MTL_SHADER "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_STEM}.metal")
|
|
set(AIR_SHADER "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_STEM}.air")
|
|
add_custom_command(OUTPUT ${AIR_SHADER}
|
|
COMMAND ${DXC_COMPILER} -E main -T cs_6_0 -I Jolt/Shaders -WX -O3 -all_resources_bound ${SHADER} -spirv -fvk-use-dx-layout -fspv-entrypoint-name=${SHADER_STEM} -Fo ${SPV_SHADER}
|
|
COMMAND ${SPIRV_CROSS_COMPILER} ${SPV_SHADER} --msl --output ${MTL_SHADER}
|
|
COMMAND xcrun -sdk ${METAL_SDK_TARGET} metal -c ${MTL_SHADER} -o ${AIR_SHADER}
|
|
DEPENDS ${SHADER} ${JOLT_PHYSICS_SHADER_HEADERS} # Currently don't have a way to detect header dependencies, so making dependent on all
|
|
COMMENT "Compiling Metal ${SHADER}")
|
|
list(APPEND JOLT_PHYSICS_MTL_SHADERS ${AIR_SHADER})
|
|
endforeach()
|
|
|
|
# Link Metal shaders
|
|
set(JOLT_PHYSICS_METAL_LIB ${JOLT_PHYSICS_ROOT}/Shaders/Jolt.metallib)
|
|
add_custom_command(OUTPUT ${JOLT_PHYSICS_METAL_LIB}
|
|
COMMAND xcrun -sdk ${METAL_SDK_TARGET} metallib -o ${JOLT_PHYSICS_METAL_LIB} ${JOLT_PHYSICS_MTL_SHADERS}
|
|
DEPENDS ${JOLT_PHYSICS_MTL_SHADERS}
|
|
COMMENT "Linking shaders")
|
|
|
|
# Group intermediate files
|
|
source_group(Intermediate FILES ${JOLT_PHYSICS_MTL_SHADERS} ${JOLT_PHYSICS_METAL_LIB})
|
|
endif()
|
|
endif()
|
|
|
|
# Ignore PCH files for .mm files
|
|
foreach(SRC_FILE ${JOLT_PHYSICS_SRC_FILES})
|
|
if (SRC_FILE MATCHES "\.mm")
|
|
set_source_files_properties(${SRC_FILE} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
|
|
endif()
|
|
endforeach()
|
|
else()
|
|
set(JPH_USE_MTL OFF)
|
|
endif()
|
|
|
|
# Vulkan support
|
|
if (JPH_USE_VK)
|
|
find_package(Vulkan)
|
|
if (Vulkan_FOUND)
|
|
# Vulkan source files
|
|
set(JOLT_PHYSICS_SRC_FILES
|
|
${JOLT_PHYSICS_SRC_FILES}
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/BufferVK.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeBufferVK.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeBufferVK.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeQueueVK.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeQueueVK.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeShaderVK.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeShaderVK.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeSystemVK.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeSystemVK.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeSystemVKImpl.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeSystemVKImpl.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeSystemVKWithAllocator.cpp
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/ComputeSystemVKWithAllocator.h
|
|
${JOLT_PHYSICS_ROOT}/Compute/VK/IncludeVK.h
|
|
)
|
|
|
|
# TODO: For some reason it errors on finding dxc when we specify the dxc component to find_vulkan (and update cmake version)
|
|
# For now, just set it manually
|
|
string(REPLACE "glslc" "dxc" Vulkan_dxc_EXECUTABLE ${Vulkan_GLSLC_EXECUTABLE})
|
|
|
|
# Compile Vulkan shaders
|
|
foreach(SHADER ${JOLT_PHYSICS_SHADERS})
|
|
string(REPLACE ".hlsl" ".spv" SPV_SHADER ${SHADER})
|
|
add_custom_command(OUTPUT ${SPV_SHADER}
|
|
# We use dxc instead of: ${Vulkan_GLSLC_EXECUTABLE} -fshader-stage=compute ${SHADER} -o ${SPV_SHADER}
|
|
# The glslc compiler has the following issues:
|
|
# - All buffers bind to slot 0. We don't want to manually specify registers so this requires going into the SPIRV code and patching it.
|
|
# - It automatically aligns float3 to 16 byte boundaries which wastes a lot of memory in structs. We only seem to be able to override this alignment when compiling a GLSL shader and not with HLSL.
|
|
COMMAND ${Vulkan_dxc_EXECUTABLE} -E main -T cs_6_0 -I Jolt/Shaders -WX -O3 -all_resources_bound ${SHADER} -spirv -fvk-use-dx-layout -Fo ${SPV_SHADER}
|
|
DEPENDS ${SHADER} ${JOLT_PHYSICS_SHADER_HEADERS} # Currently don't have a way to detect header dependencies, so making dependent on all
|
|
COMMENT "Compiling Vulkan ${SHADER}")
|
|
list(APPEND JOLT_PHYSICS_SPV_SHADERS ${SPV_SHADER})
|
|
endforeach()
|
|
|
|
# Group intermediate files
|
|
source_group(Intermediate FILES ${JOLT_PHYSICS_SPV_SHADERS})
|
|
else()
|
|
set(JPH_USE_VK OFF)
|
|
endif()
|
|
endif()
|
|
|
|
# Group source files
|
|
source_group(TREE ${JOLT_PHYSICS_ROOT} FILES ${JOLT_PHYSICS_SRC_FILES} ${JOLT_PHYSICS_SHADERS} ${JOLT_PHYSICS_SHADER_HEADERS})
|
|
|
|
# Create Jolt lib
|
|
add_library(Jolt ${JOLT_PHYSICS_SRC_FILES} ${JOLT_PHYSICS_SHADERS} ${JOLT_PHYSICS_SHADER_HEADERS} ${JOLT_PHYSICS_SPV_SHADERS} ${JOLT_PHYSICS_METAL_LIB})
|
|
add_library(Jolt::Jolt ALIAS Jolt)
|
|
|
|
if (BUILD_SHARED_LIBS)
|
|
# Set default visibility to hidden
|
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
|
|
|
if (GENERATE_DEBUG_SYMBOLS)
|
|
if (MSVC)
|
|
# MSVC specific option to enable PDB generation
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG:FASTLINK")
|
|
else()
|
|
# Clang/GCC option to enable debug symbol generation
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -g")
|
|
endif()
|
|
endif()
|
|
|
|
# Set linker flags for other build types to be the same as release
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASEASAN "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASEUBSAN "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASETSAN "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASECOVERAGE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
set(CMAKE_SHARED_LINKER_FLAGS_DISTRIBUTION "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
|
|
# Public define to instruct user code to import Jolt symbols (rather than use static linking)
|
|
target_compile_definitions(Jolt PUBLIC JPH_SHARED_LIBRARY)
|
|
|
|
# Private define to instruct the library to export symbols for shared linking
|
|
target_compile_definitions(Jolt PRIVATE JPH_BUILD_SHARED_LIBRARY)
|
|
endif()
|
|
|
|
# Use repository as include directory when building, install directory when installing
|
|
target_include_directories(Jolt PUBLIC
|
|
$<BUILD_INTERFACE:${PHYSICS_REPO_ROOT}>
|
|
$<INSTALL_INTERFACE:include/>)
|
|
|
|
# Code coverage doesn't work when using precompiled headers
|
|
if (CMAKE_GENERATOR STREQUAL "Ninja Multi-Config" AND MSVC)
|
|
# The Ninja Multi-Config generator errors out when selectively disabling precompiled headers for certain configurations.
|
|
# See: https://github.com/jrouwe/JoltPhysics/issues/1211
|
|
target_precompile_headers(Jolt PRIVATE "${JOLT_PHYSICS_ROOT}/Jolt.h")
|
|
else()
|
|
target_precompile_headers(Jolt PRIVATE "$<$<NOT:$<CONFIG:ReleaseCoverage>>:${JOLT_PHYSICS_ROOT}/Jolt.h>")
|
|
endif()
|
|
|
|
# Set the NDEBUG define for release builds
|
|
target_compile_definitions(Jolt PUBLIC "$<$<CONFIG:Release,Distribution,ReleaseASAN,ReleaseUBSAN,ReleaseTSAN,ReleaseCoverage>:NDEBUG>")
|
|
|
|
# ASAN and TSAN should use the default allocators
|
|
target_compile_definitions(Jolt PUBLIC "$<$<CONFIG:ReleaseASAN,ReleaseTSAN>:JPH_DISABLE_TEMP_ALLOCATOR;JPH_DISABLE_CUSTOM_ALLOCATOR>")
|
|
|
|
# Setting floating point exceptions
|
|
if (FLOATING_POINT_EXCEPTIONS_ENABLED AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
target_compile_definitions(Jolt PUBLIC "$<$<CONFIG:Debug,Release>:JPH_FLOATING_POINT_EXCEPTIONS_ENABLED>")
|
|
endif()
|
|
|
|
# Setting the disable custom allocator flag
|
|
if (DISABLE_CUSTOM_ALLOCATOR)
|
|
target_compile_definitions(Jolt PUBLIC JPH_DISABLE_CUSTOM_ALLOCATOR)
|
|
endif()
|
|
|
|
# Setting enable asserts flag
|
|
if (USE_ASSERTS)
|
|
target_compile_definitions(Jolt PUBLIC JPH_ENABLE_ASSERTS)
|
|
endif()
|
|
|
|
# Setting double precision flag
|
|
if (DOUBLE_PRECISION)
|
|
target_compile_definitions(Jolt PUBLIC JPH_DOUBLE_PRECISION)
|
|
endif()
|
|
|
|
# Setting to attempt cross platform determinism
|
|
if (CROSS_PLATFORM_DETERMINISTIC)
|
|
target_compile_definitions(Jolt PUBLIC JPH_CROSS_PLATFORM_DETERMINISTIC)
|
|
endif()
|
|
|
|
# Setting to determine number of bits in ObjectLayer
|
|
if (OBJECT_LAYER_BITS)
|
|
target_compile_definitions(Jolt PUBLIC JPH_OBJECT_LAYER_BITS=${OBJECT_LAYER_BITS})
|
|
endif()
|
|
|
|
if (USE_STD_VECTOR)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_STD_VECTOR)
|
|
endif()
|
|
|
|
# Setting to periodically trace broadphase stats to help determine if the broadphase layer configuration is optimal
|
|
if (TRACK_BROADPHASE_STATS)
|
|
target_compile_definitions(Jolt PUBLIC JPH_TRACK_BROADPHASE_STATS)
|
|
endif()
|
|
|
|
# Setting to periodically trace narrowphase stats to help determine which collision queries could be optimized
|
|
if (TRACK_NARROWPHASE_STATS)
|
|
target_compile_definitions(Jolt PUBLIC JPH_TRACK_NARROWPHASE_STATS)
|
|
endif()
|
|
|
|
# Setting to track simulation timings per body
|
|
if (JPH_TRACK_SIMULATION_STATS)
|
|
target_compile_definitions(Jolt PUBLIC JPH_TRACK_SIMULATION_STATS)
|
|
endif()
|
|
|
|
# Compile against DirectX 12
|
|
if (JPH_USE_DX12)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_DX12)
|
|
target_link_libraries(Jolt LINK_PUBLIC dxgi.lib d3d12.lib d3dcompiler.lib dxguid.lib)
|
|
|
|
# Use DXC compiler to compile shaders, when off falls back to FXC
|
|
if (JPH_USE_DXC)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_DXC)
|
|
target_link_libraries(Jolt LINK_PUBLIC dxcompiler.lib)
|
|
endif()
|
|
endif()
|
|
|
|
# Compile against Vulkan
|
|
if (JPH_USE_VK)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_VK)
|
|
|
|
target_include_directories(Jolt PUBLIC ${Vulkan_INCLUDE_DIRS})
|
|
target_link_libraries(Jolt LINK_PUBLIC ${Vulkan_LIBRARIES})
|
|
endif()
|
|
|
|
# Compile against Metal
|
|
if (JPH_USE_MTL)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_MTL)
|
|
|
|
target_link_libraries(Jolt LINK_PUBLIC "-framework Foundation -framework Metal -framework MetalKit")
|
|
endif()
|
|
|
|
# Compile CPU compute support
|
|
if (JPH_USE_CPU_COMPUTE)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_CPU_COMPUTE)
|
|
endif()
|
|
|
|
# Enable the debug renderer
|
|
if (DEBUG_RENDERER_IN_DISTRIBUTION)
|
|
target_compile_definitions(Jolt PUBLIC "JPH_DEBUG_RENDERER")
|
|
elseif (DEBUG_RENDERER_IN_DEBUG_AND_RELEASE)
|
|
target_compile_definitions(Jolt PUBLIC "$<$<CONFIG:Debug,Release,ReleaseASAN,ReleaseUBSAN,ReleaseTSAN>:JPH_DEBUG_RENDERER>")
|
|
endif()
|
|
|
|
# Enable the profiler
|
|
if (JPH_USE_EXTERNAL_PROFILE)
|
|
set(JOLT_PROFILE_DEFINE JPH_EXTERNAL_PROFILE)
|
|
else()
|
|
set(JOLT_PROFILE_DEFINE JPH_PROFILE_ENABLED)
|
|
endif()
|
|
if (PROFILER_IN_DISTRIBUTION)
|
|
target_compile_definitions(Jolt PUBLIC "${JOLT_PROFILE_DEFINE}")
|
|
elseif (PROFILER_IN_DEBUG_AND_RELEASE)
|
|
target_compile_definitions(Jolt PUBLIC "$<$<CONFIG:Debug,Release,ReleaseASAN,ReleaseUBSAN,ReleaseTSAN>:${JOLT_PROFILE_DEFINE}>")
|
|
endif()
|
|
|
|
# Compile the ObjectStream class and RTTI attribute information
|
|
if (ENABLE_OBJECT_STREAM)
|
|
target_compile_definitions(Jolt PUBLIC JPH_OBJECT_STREAM)
|
|
endif()
|
|
|
|
# Emit the instruction set definitions to ensure that child projects use the same settings even if they override the used instruction sets (a mismatch causes link errors)
|
|
function(EMIT_X86_INSTRUCTION_SET_DEFINITIONS)
|
|
if (USE_AVX512)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_AVX512)
|
|
endif()
|
|
if (USE_AVX2)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_AVX2)
|
|
endif()
|
|
if (USE_AVX)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_AVX)
|
|
endif()
|
|
if (USE_SSE4_1)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_SSE4_1)
|
|
endif()
|
|
if (USE_SSE4_2)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_SSE4_2)
|
|
endif()
|
|
if (USE_LZCNT)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_LZCNT)
|
|
endif()
|
|
if (USE_TZCNT)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_TZCNT)
|
|
endif()
|
|
if (USE_F16C)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_F16C)
|
|
endif()
|
|
if (USE_FMADD AND NOT CROSS_PLATFORM_DETERMINISTIC)
|
|
target_compile_definitions(Jolt PUBLIC JPH_USE_FMADD)
|
|
endif()
|
|
endfunction()
|
|
|
|
# Add the compiler commandline flags to select the right instruction sets
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86" OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
if (USE_AVX512)
|
|
target_compile_options(Jolt PUBLIC /arch:AVX512)
|
|
elseif (USE_AVX2)
|
|
target_compile_options(Jolt PUBLIC /arch:AVX2)
|
|
elseif (USE_AVX)
|
|
target_compile_options(Jolt PUBLIC /arch:AVX)
|
|
endif()
|
|
EMIT_X86_INSTRUCTION_SET_DEFINITIONS()
|
|
endif()
|
|
else()
|
|
if (XCODE)
|
|
# XCode builds for multiple architectures, we can't set global flags
|
|
elseif (CROSS_COMPILE_ARM OR CMAKE_OSX_ARCHITECTURES MATCHES "arm64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")
|
|
# ARM64 uses no special commandline flags
|
|
elseif (EMSCRIPTEN)
|
|
if (USE_WASM_SIMD)
|
|
# Jolt currently doesn't implement the WASM specific SIMD intrinsics so uses the SSE 4.2 intrinsics
|
|
# See: https://emscripten.org/docs/porting/simd.html#webassembly-simd-intrinsics
|
|
# Note that this does not require the browser to actually support SSE 4.2 it merely means that it can translate those instructions to WASM SIMD instructions
|
|
target_compile_options(Jolt PUBLIC -msimd128 -msse4.2)
|
|
endif()
|
|
if (JPH_USE_WASM64)
|
|
target_compile_options(Jolt PUBLIC -sMEMORY64)
|
|
target_link_options(Jolt PUBLIC -sMEMORY64)
|
|
endif()
|
|
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386")
|
|
# x86 and x86_64
|
|
# On 32-bit builds we need to default to using SSE instructions, the x87 FPU instructions have higher intermediate precision
|
|
# which will cause problems in the collision detection code (the effect is similar to leaving FMA on, search for
|
|
# JPH_PRECISE_MATH_ON for the locations where this is a problem).
|
|
|
|
if (USE_AVX512)
|
|
target_compile_options(Jolt PUBLIC -mavx512f -mavx512vl -mavx512dq -mavx2 -mbmi -mpopcnt -mlzcnt -mf16c)
|
|
elseif (USE_AVX2)
|
|
target_compile_options(Jolt PUBLIC -mavx2 -mbmi -mpopcnt -mlzcnt -mf16c)
|
|
elseif (USE_AVX)
|
|
target_compile_options(Jolt PUBLIC -mavx -mpopcnt)
|
|
elseif (USE_SSE4_2)
|
|
target_compile_options(Jolt PUBLIC -msse4.2 -mpopcnt)
|
|
elseif (USE_SSE4_1)
|
|
target_compile_options(Jolt PUBLIC -msse4.1)
|
|
else()
|
|
target_compile_options(Jolt PUBLIC -msse2)
|
|
endif()
|
|
if (USE_LZCNT)
|
|
target_compile_options(Jolt PUBLIC -mlzcnt)
|
|
endif()
|
|
if (USE_TZCNT)
|
|
target_compile_options(Jolt PUBLIC -mbmi)
|
|
endif()
|
|
if (USE_F16C)
|
|
target_compile_options(Jolt PUBLIC -mf16c)
|
|
endif()
|
|
if (USE_FMADD AND NOT CROSS_PLATFORM_DETERMINISTIC)
|
|
target_compile_options(Jolt PUBLIC -mfma)
|
|
endif()
|
|
|
|
if (NOT MSVC)
|
|
target_compile_options(Jolt PUBLIC -mfpmath=sse)
|
|
endif()
|
|
|
|
EMIT_X86_INSTRUCTION_SET_DEFINITIONS()
|
|
endif()
|
|
endif()
|
|
|
|
# On Unix flavors we need the pthread library
|
|
if (NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") AND NOT EMSCRIPTEN)
|
|
target_compile_options(Jolt PUBLIC -pthread)
|
|
target_link_options(Jolt PUBLIC -pthread)
|
|
endif()
|
|
|
|
if (EMSCRIPTEN)
|
|
# We need more than the default 64KB stack and 16MB memory
|
|
# In your application, specify at least -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728
|
|
# Also disable warning: running limited binaryen optimizations because DWARF info requested (or indirectly required)
|
|
target_link_options(Jolt PUBLIC -Wno-limited-postlink-optimizations)
|
|
endif()
|