
TARGET   = lib/Bullet_Physics.a

SOURCES  = src/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp \
           src/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp \
           src/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp \
           src/src/BulletCollision/BroadphaseCollision/btDbvt.cpp \
           src/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp \
           src/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp \
           src/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp \
           src/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp \
           src/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp \
           src/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp \
           src/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp \
           src/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp \
           src/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp \
           src/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp \
           src/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp \
           src/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp \
           src/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btGhostObject.cpp \
           src/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp \
           src/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp \
           src/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp \
           src/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp \
           src/src/BulletCollision/CollisionDispatch/btUnionFind.cpp \
           src/src/BulletCollision/CollisionShapes/btBox2dShape.cpp \
           src/src/BulletCollision/CollisionShapes/btBoxShape.cpp \
           src/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp \
           src/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp \
           src/src/BulletCollision/CollisionShapes/btCollisionShape.cpp \
           src/src/BulletCollision/CollisionShapes/btCompoundShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConcaveShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConeShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp \
           src/src/BulletCollision/CollisionShapes/btConvexShape.cpp \
           src/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp \
           src/src/BulletCollision/CollisionShapes/btCylinderShape.cpp \
           src/src/BulletCollision/CollisionShapes/btEmptyShape.cpp \
           src/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp \
           src/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp \
           src/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp \
           src/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp \
           src/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp \
           src/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp \
           src/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp \
           src/src/BulletCollision/CollisionShapes/btShapeHull.cpp \
           src/src/BulletCollision/CollisionShapes/btSphereShape.cpp \
           src/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp \
           src/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp \
           src/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp \
           src/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp \
           src/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp \
           src/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp \
           src/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp \
           src/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp \
           src/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp \
           src/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp \
           src/src/BulletCollision/Gimpact/btContactProcessing.cpp \
           src/src/BulletCollision/Gimpact/btGImpactBvh.cpp \
           src/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp \
           src/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp \
           src/src/BulletCollision/Gimpact/btGImpactShape.cpp \
           src/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp \
           src/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp \
           src/src/BulletCollision/Gimpact/gim_box_set.cpp \
           src/src/BulletCollision/Gimpact/gim_contact.cpp \
           src/src/BulletCollision/Gimpact/gim_memory.cpp \
           src/src/BulletCollision/Gimpact/gim_tri_collision.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp \
           src/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp \
           src/src/BulletDynamics/Character/btKinematicCharacterController.cpp \
           src/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp \
           src/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp \
           src/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp \
           src/src/BulletDynamics/Dynamics/Bullet-C-API.cpp \
           src/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp \
           src/src/BulletDynamics/Dynamics/btRigidBody.cpp \
           src/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp \
           src/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp \
           src/src/BulletDynamics/Vehicle/btWheelInfo.cpp \
           src/src/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.cpp \
           src/src/BulletMultiThreaded/PosixThreadSupport.cpp \
           src/src/BulletMultiThreaded/SequentialThreadSupport.cpp \
           src/src/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp \
           src/src/BulletMultiThreaded/SpuCollisionTaskProcess.cpp \
           src/src/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp \
           src/src/BulletMultiThreaded/SpuFakeDma.cpp \
           src/src/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp \
           src/src/BulletMultiThreaded/SpuLibspe2Support.cpp \
           src/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp \
           src/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp \
           src/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp \
           src/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp \
           src/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp \
           src/src/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp \
           src/src/BulletMultiThreaded/SpuSampleTaskProcess.cpp \
           src/src/BulletMultiThreaded/Win32ThreadSupport.cpp \
           src/src/BulletMultiThreaded/btGpu3DGridBroadphase.cpp \
           src/src/BulletMultiThreaded/btParallelConstraintSolver.cpp \
           src/src/BulletMultiThreaded/btThreadSupportInterface.cpp \
           src/src/BulletSoftBody/btDefaultSoftBodySolver.cpp \
           src/src/BulletSoftBody/btSoftBody.cpp \
           src/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp \
           src/src/BulletSoftBody/btSoftBodyHelpers.cpp \
           src/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp \
           src/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp \
           src/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp \
           src/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp \
           src/src/LinearMath/btAlignedAllocator.cpp \
           src/src/LinearMath/btConvexHull.cpp \
           src/src/LinearMath/btConvexHullComputer.cpp \
           src/src/LinearMath/btGeometryUtil.cpp \
           src/src/LinearMath/btQuickprof.cpp \
           src/src/LinearMath/btSerializer.cpp \
           src/src/MiniCL/MiniCL.cpp \
           src/src/MiniCL/MiniCLTask/MiniCLTask.cpp \
           src/src/MiniCL/MiniCLTaskScheduler.cpp

OBJECTS  = $(SOURCES:.cpp=.o)

CXX      = gcc
AR       = ar
CXXFLAGS = -Wall -O6 -fomit-frame-pointer -m32
INCLUDE  = -I src/src

all: $(TARGET)

$(TARGET): $(OBJECTS)
	$(AR) cru $(TARGET) $(OBJECTS)
	cp src/src/*.h include
	cp src/src/BulletCollision/BroadphaseCollision/*.h include/BulletCollision/BroadphaseCollision
	cp src/src/BulletCollision/CollisionDispatch/*.h include/BulletCollision/CollisionDispatch
	cp src/src/BulletCollision/CollisionShapes/*.h include/BulletCollision/CollisionShapes
	cp src/src/BulletCollision/Gimpact/*.h include/BulletCollision/Gimpact
	cp src/src/BulletCollision/NarrowPhaseCollision/*.h include/BulletCollision/NarrowPhaseCollision
	cp src/src/BulletDynamics/Character/*.h include/BulletDynamics/Character
	cp src/src/BulletDynamics/ConstraintSolver/*.h include/BulletDynamics/ConstraintSolver
	cp src/src/BulletDynamics/Dynamics/*.h include/BulletDynamics/Dynamics
	cp src/src/BulletDynamics/Vehicle/*.h include/BulletDynamics/Vehicle
	cp src/src/BulletMultiThreaded/*.h include/BulletMultiThreaded
	cp src/src/BulletMultiThreaded/GpuSoftBodySolvers/CPU/*.h include/BulletMultiThreaded/GpuSoftBodySolvers/CPU
	cp src/src/BulletMultiThreaded/GpuSoftBodySolvers/DX11/*.h include/BulletMultiThreaded/GpuSoftBodySolvers/DX11
	cp src/src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/*.h include/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL
	cp src/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/*.h include/BulletMultiThreaded/SpuNarrowPhaseCollisionTask
	cp src/src/BulletMultiThreaded/SpuSampleTask/*.h include/BulletMultiThreaded/SpuSampleTask
	cp src/src/BulletSoftBody/*.h include/BulletSoftBody
	cp src/src/LinearMath/*.h include/LinearMath
	cp src/src/MiniCL/*.h include/MiniCL
	cp src/src/MiniCL/MiniCLTask/*.h include/MiniCL/MiniCLTask
	cp src/src/vectormath/*.h include/vectormath
	cp src/src/vectormath/scalar/*.h include/vectormath/scalar
	cp src/src/vectormath/sse/*.h include/vectormath/sse

.cpp.o:
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o $(<:.cpp=.o) -c $<

clean:
	rm -f $(OBJECTS) $(TARGET)
