bullet3/setup.py

676 lines
34 KiB
Python

from setuptools import find_packages
from sys import platform as _platform
import sys
import glob
import os
from distutils.core import setup
from distutils.extension import Extension
from distutils.util import get_platform
from glob import glob
# monkey-patch for parallel compilation
import multiprocessing
import multiprocessing.pool
def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None):
# those lines are copied from distutils.ccompiler.CCompiler directly
macros, objects, extra_postargs, pp_opts, build = self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs)
cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
# parallel code
N = 2*multiprocessing.cpu_count()# number of parallel compilations
def _single_compile(obj):
try: src, ext = build[obj]
except KeyError: return
newcc_args = cc_args
if _platform == "darwin":
if src.endswith('.cpp'):
newcc_args = cc_args + ["-stdlib=libc++"]
self._compile(obj, src, ext, newcc_args, extra_postargs, pp_opts)
# convert to list, imap is evaluated on-demand
pool = multiprocessing.pool.ThreadPool(N)
list(pool.imap(_single_compile,objects))
return objects
import distutils.ccompiler
distutils.ccompiler.CCompiler.compile=parallelCCompile
#see http://stackoverflow.com/a/8719066/295157
import os
platform = get_platform()
print(platform)
CXX_FLAGS = ''
CXX_FLAGS += '-DGWEN_COMPILE_STATIC '
CXX_FLAGS += '-DBT_USE_DOUBLE_PRECISION '
CXX_FLAGS += '-DBT_ENABLE_ENET '
CXX_FLAGS += '-DBT_ENABLE_CLSOCKET '
CXX_FLAGS += '-DB3_DUMP_PYTHON_VERSION '
CXX_FLAGS += '-DEGL_ADD_PYTHON_INIT '
CXX_FLAGS += '-DB3_ENABLE_FILEIO_PLUGIN '
CXX_FLAGS += '-DB3_USE_ZIPFILE_FILEIO '
CXX_FLAGS += '-DBT_THREADSAFE=1 '
CXX_FLAGS += '-DSTATIC_LINK_SPD_PLUGIN '
CXX_FLAGS += '-DPX_PHYSX_STATIC_LIB '
CXX_FLAGS += '-DBT_ENABLE_PHYSX '
CXX_FLAGS += '-DPX_FOUNDATION_DLL=0 '
CXX_FLAGS += '-DPX_COOKING '
CXX_FLAGS += '-DNDEBUG '
CXX_FLAGS += '-DDISABLE_CUDA_PHYSX '
EGL_CXX_FLAGS = ''
# libraries += [current_python]
libraries = []
include_dirs = ["examples",
"src/PhysX/physx/source/common/include",
"src/PhysX/physx/source/common/src",
"src/PhysX/physx/source/fastxml/include",
"src/PhysX/physx/source/filebuf/include",
"src/PhysX/physx/source/foundation/include",
"src/PhysX/physx/source/geomutils/include",
"src/PhysX/physx/source/geomutils/src",
"src/PhysX/physx/source/geomutils/src/ccd",
"src/PhysX/physx/source/geomutils/src/common",
"src/PhysX/physx/source/geomutils/src/contact",
"src/PhysX/physx/source/geomutils/src/convex",
"src/PhysX/physx/source/geomutils/src/distance",
"src/PhysX/physx/source/geomutils/src/gjk",
"src/PhysX/physx/source/geomutils/src/hf",
"src/PhysX/physx/source/geomutils/src/intersection",
"src/PhysX/physx/source/geomutils/src/mesh",
"src/PhysX/physx/source/geomutils/src/pcm",
"src/PhysX/physx/source/geomutils/src/sweep",
"src/PhysX/physx/source/lowlevel/api/include",
"src/PhysX/physx/source/lowlevel/common/include",
"src/PhysX/physx/source/lowlevel/common/include/collision",
"src/PhysX/physx/source/lowlevel/common/include/pipeline",
"src/PhysX/physx/source/lowlevel/common/include/utils",
"src/PhysX/physx/source/lowlevel/software/include",
"src/PhysX/physx/source/lowlevelaabb/include",
"src/PhysX/physx/source/lowleveldynamics/include",
"src/PhysX/physx/source/physx/src",
"src/PhysX/physx/source/physx/src/buffering",
"src/PhysX/physx/source/physx/src/device",
"src/PhysX/physx/source/physxcooking/src",
"src/PhysX/physx/source/physxcooking/src/convex",
"src/PhysX/physx/source/physxcooking/src/mesh",
"src/PhysX/physx/source/physxextensions/src",
"src/PhysX/physx/source/physxextensions/src/serialization/Binary",
"src/PhysX/physx/source/physxextensions/src/serialization/File",
"src/PhysX/physx/source/physxextensions/src/serialization/Xml",
"src/PhysX/physx/source/physxmetadata/core/include",
"src/PhysX/physx/source/physxmetadata/extensions/include",
"src/PhysX/physx/source/physxvehicle/src",
"src/PhysX/physx/source/physxvehicle/src/physxmetadata/include",
"src/PhysX/physx/source/pvd/include",
"src/PhysX/physx/source/scenequery/include",
"src/PhysX/physx/source/simulationcontroller/include",
"src/PhysX/physx/source/simulationcontroller/src",
"src/PhysX/physx/include",
"src/PhysX/physx/include/characterkinematic",
"src/PhysX/physx/include/common",
"src/PhysX/physx/include/cooking",
"src/PhysX/physx/include/extensions",
"src/PhysX/physx/include/geometry",
"src/PhysX/physx/include/geomutils",
"src/PhysX/physx/include/vehicle",
"src/PhysX/pxshared/include",
]
try:
import numpy
NP_DIRS = [numpy.get_include()]
except:
print("numpy is disabled. getCameraImage maybe slower.")
else:
print("numpy is enabled.")
CXX_FLAGS += '-DPYBULLET_USE_NUMPY '
for d in NP_DIRS:
print("numpy_include_dirs = %s" % d)
include_dirs += NP_DIRS
sources = ["examples/pybullet/pybullet.c"]\
+["examples/SharedMemory/physx/PhysXC_API.cpp"]\
+["examples/SharedMemory/physx/PhysXServerCommandProcessor.cpp"]\
+["examples/SharedMemory/physx/PhysXUrdfImporter.cpp"]\
+["examples/SharedMemory/physx/URDF2PhysX.cpp"]\
+["src/btLinearMathAll.cpp"]\
+["src/PhysXGeomUtilsAll.cpp"]\
+["examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp"]\
+["examples/SharedMemory/plugins/eglPlugin/eglRendererPlugin.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuFeatureCode.cpp"]\
+["src/PhysX/physx/source/geomutils/src/GuSweepMTD.cpp"]\
+["src/PhysX/physx/source/geomutils/src/GuSweepSharedTests.cpp"]\
+["src/PhysX/physx/source/geomutils/src/GuSweepTests.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactBoxBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactCapsuleBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactCapsuleCapsule.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactCapsuleConvex.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactCapsuleMesh.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactConvexConvex.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactConvexMesh.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactPlaneBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactPlaneCapsule.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactPlaneConvex.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactPolygonPolygon.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactSphereBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactSphereCapsule.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactSphereMesh.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactSpherePlane.cpp"]\
+["src/PhysX/physx/source/geomutils/src/contact/GuContactSphereSphere.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_BoxOverlap.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_CapsuleSweep.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_CapsuleSweepAA.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_OBBSweep.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_Raycast.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_SphereOverlap.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_SphereSweep.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuMeshQuery.cpp"]\
+["src/PhysX/physx/source/geomutils/src/hf/GuHeightField.cpp"]\
+["src/PhysX/physx/source/geomutils/src/hf/GuHeightFieldUtil.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4Build.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV4_AABBSweep.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuMidphaseBV4.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuMidphaseRTree.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepBoxBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepBoxSphere.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepBoxTriangle_FeatureBased.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepBoxTriangle_SAT.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepCapsuleBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepCapsuleCapsule.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepCapsuleTriangle.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepSphereCapsule.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepSphereSphere.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepSphereTriangle.cpp"]\
+["src/PhysX/physx/source/geomutils/src/sweep/GuSweepTriangleUtils.cpp"]\
+["src/PhysX/physx/source/geomutils/src/pcm/GuPCMTriangleContactGen.cpp"]\
+["src/PhysX/physx/source/geomutils/src/pcm/GuPersistentContactManifold.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV32.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuBV32Build.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuOverlapTestsMesh.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuRTree.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuRTreeQueries.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuSweepsMesh.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuTriangleMesh.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuTriangleMeshBV4.cpp"]\
+["src/PhysX/physx/source/geomutils/src/mesh/GuTriangleMeshRTree.cpp"]\
+["src/PhysX/physx/source/geomutils/src/pcm/GuPCMContactBoxBox.cpp"]\
+["src/PhysX/physx/source/geomutils/src/pcm/GuPCMContactBoxConvex.cpp"]\
+["src/PhysX/physx/source/fastxml/src/PsFastXml.cpp"]\
+["src/PhysX/physx/source/immediatemode/src/NpImmediateMode.cpp"]\
+["src/PhysX/physx/source/physxmetadata/core/src/PxAutoGeneratedMetaDataObjects.cpp"]\
+["src/PhysX/physx/source/physxmetadata/core/src/PxMetaDataObjects.cpp"]\
+["src/PhysX/physx/source/physxmetadata/extensions/src/PxExtensionAutoGeneratedMetaDataObjects.cpp"]\
+["src/PhysX/physx/source/task/src/TaskManager.cpp"]\
+["src/PhysXVehicleAll.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdProfileZoneClient.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdUserRenderer.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdImpl.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdMemClient.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdObjectModelMetaData.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdObjectRegistrar.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxProfileEventImpl.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvd.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdDataStream.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdDefaultFileTransport.cpp"]\
+["src/PhysX/physx/source/pvd/src/PxPvdDefaultSocketTransport.cpp"]\
+["src/PhysX/physx/source/physxcooking/src/convex/ConvexHullBuilder.cpp"]\
+["src/PhysX/physx/source/physxcooking/src/convex/QuickHullConvexHullLib.cpp"]\
+["src/PhysX/physx/source/physxcooking/src/mesh/TriangleMeshBuilder.cpp"]\
+["src/PhysXCharacterAll.cpp"]\
+["src/PhysXCommonAll.cpp"]\
+["src/PhysXCookingAll.cpp"]\
+["src/PhysXExtensionAll.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/ExtDefaultErrorCallback.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/SnSerialization.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX_Align.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX_Convert.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX_Error.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX_MetaData.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX_Output.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnConvX_Union.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Binary/SnSerializationContext.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Xml/SnRepXUpgrader.cpp"]\
+["src/PhysX/physx/source/physxextensions/src/serialization/Xml/SnXmlSerialization.cpp"]\
+["src/PhysXFoundationAll.cpp"]\
+["src/PhysXLowLevelAll.cpp"]\
+["src/PhysXNpSrcAll.cpp"]\
+["src/PhysXSceneQueryAll.cpp"]\
+["src/PhysXSimulationControllerAll.cpp"]\
+["src/PhysX/physx/source/simulationcontroller/src/ScShapeSim.cpp"]\
+["src/PhysX/physx/source/lowleveldynamics/src/DyTGSContactPrep.cpp"]\
+["src/PhysX/physx/source/lowleveldynamics/src/DyTGSContactPrepBlock.cpp"]\
+["src/PhysX/physx/source/lowleveldynamics/src/DyTGSDynamics.cpp"]\
+["src/PhysX/physx/source/lowleveldynamics/src/DyTGSPartition.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpAABBManager.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpBroadPhase.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpBroadPhaseABP.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpBroadPhaseMBP.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpBroadPhaseSap.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpBroadPhaseSapAux.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpBroadPhaseShared.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpMBPTasks.cpp"]\
+["src/PhysX/physx/source/lowlevelaabb/src/BpSAPTasks.cpp"]\
+["src/btBulletCollisionAll.cpp"]\
+["src/btBulletDynamicsAll.cpp"]\
+["examples/ExampleBrowser/InProcessExampleBrowser.cpp"]\
+["examples/TinyRenderer/geometry.cpp"]\
+["examples/TinyRenderer/model.cpp"]\
+["examples/TinyRenderer/tgaimage.cpp"]\
+["examples/TinyRenderer/our_gl.cpp"]\
+["examples/TinyRenderer/TinyRenderer.cpp"]\
+["examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp"]\
+["examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp"]\
+["examples/SharedMemory/plugins/fileIOPlugin/fileIOPlugin.cpp"]\
+["examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp"]\
+["examples/SharedMemory/IKTrajectoryHelper.cpp"]\
+["examples/SharedMemory/InProcessMemory.cpp"]\
+["examples/SharedMemory/PhysicsClient.cpp"]\
+["examples/SharedMemory/PhysicsServer.cpp"]\
+["examples/SharedMemory/PhysicsServerExample.cpp"]\
+["examples/SharedMemory/PhysicsServerExampleBullet2.cpp"]\
+["examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp"]\
+["examples/SharedMemory/PhysicsServerSharedMemory.cpp"]\
+["examples/SharedMemory/PhysicsDirect.cpp"]\
+["examples/SharedMemory/PhysicsDirectC_API.cpp"]\
+["examples/SharedMemory/PhysicsServerCommandProcessor.cpp"]\
+["examples/SharedMemory/PhysicsClientSharedMemory.cpp"]\
+["examples/SharedMemory/PhysicsClientSharedMemory_C_API.cpp"]\
+["examples/SharedMemory/PhysicsClientC_API.cpp"]\
+["examples/SharedMemory/Win32SharedMemory.cpp"]\
+["examples/SharedMemory/PosixSharedMemory.cpp"]\
+["examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp"]\
+["examples/SharedMemory/plugins/tinyRendererPlugin/tinyRendererPlugin.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/BulletConversion.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/KinTree.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/MathUtil.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/RBDModel.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/RBDUtil.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/Shape.cpp"]\
+["examples/SharedMemory/plugins/stablePDPlugin/SpAlg.cpp"]\
+["examples/SharedMemory/PhysicsClientUDP.cpp"]\
+["examples/SharedMemory/PhysicsClientUDP_C_API.cpp"]\
+["examples/SharedMemory/PhysicsClientTCP.cpp"]\
+["examples/SharedMemory/PhysicsClientTCP_C_API.cpp"]\
+["examples/SharedMemory/b3PluginManager.cpp"]\
+["examples/Utils/b3ResourcePath.cpp"]\
+["examples/Utils/RobotLoggingUtil.cpp"]\
+["examples/Utils/ChromeTraceUtil.cpp"]\
+["examples/Utils/b3Clock.cpp"]\
+["examples/Utils/b3Quickprof.cpp"]\
+["examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp"]\
+["examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp"]\
+["examples/ThirdPartyLibs/stb_image/stb_image.cpp"]\
+["examples/ThirdPartyLibs/stb_image/stb_image_write.cpp"]\
+["examples/ThirdPartyLibs/minizip/ioapi.c"]\
+["examples/ThirdPartyLibs/minizip/unzip.c"]\
+["examples/ThirdPartyLibs/minizip/zip.c"]\
+["examples/ThirdPartyLibs/zlib/adler32.c"]\
+["examples/ThirdPartyLibs/zlib/compress.c"]\
+["examples/ThirdPartyLibs/zlib/crc32.c"]\
+["examples/ThirdPartyLibs/zlib/deflate.c"]\
+["examples/ThirdPartyLibs/zlib/gzclose.c"]\
+["examples/ThirdPartyLibs/zlib/gzlib.c"]\
+["examples/ThirdPartyLibs/zlib/gzread.c"]\
+["examples/ThirdPartyLibs/zlib/gzwrite.c"]\
+["examples/ThirdPartyLibs/zlib/infback.c"]\
+["examples/ThirdPartyLibs/zlib/inffast.c"]\
+["examples/ThirdPartyLibs/zlib/inflate.c"]\
+["examples/ThirdPartyLibs/zlib/inftrees.c"]\
+["examples/ThirdPartyLibs/zlib/trees.c"]\
+["examples/ThirdPartyLibs/zlib/uncompr.c"]\
+["examples/ThirdPartyLibs/zlib/zutil.c"]\
+["examples/Importers/ImportColladaDemo/LoadMeshFromCollada.cpp"]\
+["examples/Importers/ImportObjDemo/LoadMeshFromObj.cpp"]\
+["examples/Importers/ImportObjDemo/Wavefront2GLInstanceGraphicsShape.cpp"]\
+["examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp"]\
+["examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp"]\
+["examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp"]\
+["examples/Importers/ImportURDFDemo/URDF2Bullet.cpp"]\
+["examples/Importers/ImportURDFDemo/UrdfParser.cpp"]\
+["examples/Importers/ImportURDFDemo/urdfStringSplit.cpp"]\
+["examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp"]\
+["examples/MultiThreading/b3PosixThreadSupport.cpp"]\
+["examples/MultiThreading/b3Win32ThreadSupport.cpp"]\
+["examples/MultiThreading/b3ThreadSupportInterface.cpp"]\
+["examples/ThirdPartyLibs/enet/callbacks.c"]\
+["examples/ThirdPartyLibs/enet/compress.c"]\
+["examples/ThirdPartyLibs/enet/host.c"]\
+["examples/ThirdPartyLibs/enet/list.c"]\
+["examples/ThirdPartyLibs/enet/packet.c"]\
+["examples/ThirdPartyLibs/enet/peer.c"]\
+["examples/ThirdPartyLibs/enet/protocol.c"]\
+["examples/ExampleBrowser/OpenGLGuiHelper.cpp"]\
+["examples/ExampleBrowser/OpenGLExampleBrowser.cpp"]\
+["examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp"]\
+["examples/ExampleBrowser/GL_ShapeDrawer.cpp"]\
+["examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp"]\
+["examples/OpenGLWindow/GLInstancingRenderer.cpp"]\
+["examples/OpenGLWindow/SimpleOpenGL3App.cpp"]\
+["examples/OpenGLWindow/GLPrimitiveRenderer.cpp"]\
+["examples/OpenGLWindow/TwFonts.cpp"]\
+["examples/OpenGLWindow/GLRenderToTexture.cpp"]\
+["examples/OpenGLWindow/LoadShader.cpp"]\
+["examples/OpenGLWindow/OpenSans.cpp"]\
+["examples/OpenGLWindow/SimpleCamera.cpp"]\
+["examples/OpenGLWindow/fontstash.cpp"]\
+["examples/OpenGLWindow/SimpleOpenGL2App.cpp"]\
+["examples/OpenGLWindow/opengl_fontstashcallbacks.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GraphingTexture.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GwenProfileWindow.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/gwenUserInterface.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GwenTextureWindow.cpp"]\
+["src/Bullet3Common/b3AlignedAllocator.cpp"]\
+["src/Bullet3Common/b3Logging.cpp"]\
+["src/Bullet3Common/b3Vector3.cpp"]\
+["examples/ThirdPartyLibs/clsocket/src/ActiveSocket.cpp"]\
+["examples/ThirdPartyLibs/clsocket/src/PassiveSocket.cpp"]\
+["examples/ThirdPartyLibs/clsocket/src/SimpleSocket.cpp"]\
+["Extras/Serialize/BulletFileLoader/bChunk.cpp"]\
+["Extras/Serialize/BulletFileLoader/bDNA.cpp"]\
+["Extras/Serialize/BulletFileLoader/bFile.cpp"]\
+["Extras/Serialize/BulletFileLoader/btBulletFile.cpp"]\
+["Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.cpp"]\
+["Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp"]\
+["Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp"]\
+["Extras/InverseDynamics/CloneTreeCreator.cpp"]\
+["Extras/InverseDynamics/IDRandomUtil.cpp"]\
+["Extras/InverseDynamics/MultiBodyTreeDebugGraph.cpp"]\
+["Extras/InverseDynamics/User2InternalIndex.cpp"]\
+["Extras/InverseDynamics/CoilCreator.cpp"]\
+["Extras/InverseDynamics/MultiBodyNameMap.cpp"]\
+["Extras/InverseDynamics/RandomTreeCreator.cpp"]\
+["Extras/InverseDynamics/btMultiBodyTreeCreator.cpp"]\
+["Extras/InverseDynamics/DillCreator.cpp"]\
+["Extras/InverseDynamics/MultiBodyTreeCreator.cpp"]\
+["Extras/InverseDynamics/SimpleTreeCreator.cpp"]\
+["Extras/InverseDynamics/invdyn_bullet_comparison.cpp"]\
+["src/BulletSoftBody/btDefaultSoftBodySolver.cpp"]\
+["src/BulletSoftBody/btSoftBodyHelpers.cpp"]\
+["src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp"]\
+["src/BulletSoftBody/btSoftBody.cpp"]\
+["src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp"]\
+["src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp"]\
+["src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp"]\
+["src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp"]\
+["src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp"]\
+["src/BulletInverseDynamics/IDMath.cpp"]\
+["src/BulletInverseDynamics/MultiBodyTree.cpp"]\
+["src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp"]\
+["src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Jacobian.cpp"]\
+["examples/ThirdPartyLibs/BussIK/LinearR2.cpp"]\
+["examples/ThirdPartyLibs/BussIK/LinearR3.cpp"]\
+["examples/ThirdPartyLibs/BussIK/LinearR4.cpp"]\
+["examples/ThirdPartyLibs/BussIK/MatrixRmn.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Misc.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Node.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Tree.cpp"]\
+["examples/ThirdPartyLibs/BussIK/VectorRn.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Anim.cpp"]\
+["examples/ThirdPartyLibs/Gwen/DragAndDrop.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Hook.cpp"]\
+["examples/ThirdPartyLibs/Gwen/ToolTip.cpp"]\
+["examples/ThirdPartyLibs/Gwen/events.cpp"]\
+["examples/ThirdPartyLibs/Gwen/BaseRender.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Gwen.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Skin.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Utility.cpp"]\
+["examples/ThirdPartyLibs/Gwen/inputhandler.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Base.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Button.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Canvas.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/CheckBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ColorControls.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ColorPicker.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ComboBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/CrossSplitter.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/DockBase.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/DockedTabControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dragger.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/GroupBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/HSVColorPicker.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/HorizontalScrollBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ImagePanel.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/HorizontalSlider.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Label.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/LabelClickable.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ListBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/MenuItem.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Menu.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/MenuStrip.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/NumericUpDown.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/PanelListPanel.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ProgressBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Properties.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/RadioButton.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/RadioButtonController.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ResizableControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Resizer.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/RichLabel.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollBarBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollBarButton.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Slider.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/SplitterBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TabButton.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TabControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TabStrip.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Text.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TextBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TextBoxNumeric.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TreeControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TreeNode.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/VerticalScrollBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/VerticalSlider.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/WindowControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dialog/FileOpen.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dialog/FileSave.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dialog/Query.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Platforms/Null.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Platforms/Windows.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Renderers/OpenGL_DebugFont.cpp"]
egl_renderer_sources = ["examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp"]\
+["examples/SharedMemory/plugins/eglPlugin/eglRendererPlugin.cpp"]\
+["examples/Importers/ImportColladaDemo/LoadMeshFromCollada.cpp"]\
+["examples/Importers/ImportObjDemo/LoadMeshFromObj.cpp"]\
+["examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp"]\
+["examples/Importers/ImportObjDemo/Wavefront2GLInstanceGraphicsShape.cpp"]\
+["examples/TinyRenderer/geometry.cpp"]\
+["examples/TinyRenderer/model.cpp"]\
+["examples/TinyRenderer/tgaimage.cpp"]\
+["examples/TinyRenderer/our_gl.cpp"]\
+["examples/TinyRenderer/TinyRenderer.cpp"]\
+["examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp"]\
+["examples/ThirdPartyLibs/stb_image/stb_image.cpp"]\
+["examples/ThirdPartyLibs/stb_image/stb_image_write.cpp"]\
+["examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp"]\
+["examples/OpenGLWindow/SimpleCamera.cpp"]\
+["examples/Utils/b3Clock.cpp"]\
+["examples/Utils/b3ResourcePath.cpp"]\
+["src/BulletCollision/CollisionShapes/btShapeHull.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexHullShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btBoxShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btSphereShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btCollisionShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp"]\
+["src/Bullet3Common/b3Logging.cpp"]\
+["src/LinearMath/btAlignedAllocator.cpp"]\
+["src/LinearMath/btConvexHull.cpp"]\
+["src/LinearMath/btConvexHullComputer.cpp"] \
+["src/LinearMath/btGeometryUtil.cpp"]\
+["src/LinearMath/btQuickprof.cpp"] \
+["src/LinearMath/btThreads.cpp"] \
+["src/Bullet3Common/b3AlignedAllocator.cpp"] \
+["examples/ThirdPartyLibs/glad/gl.c"]\
+["examples/OpenGLWindow/GLInstancingRenderer.cpp"]\
+["examples/OpenGLWindow/GLRenderToTexture.cpp"] \
+["examples/OpenGLWindow/LoadShader.cpp"]
if 'BT_USE_EGL' in CXX_FLAGS:
sources += ['examples/ThirdPartyLibs/glad/egl.c']
sources += ['examples/OpenGLWindow/EGLOpenGLWindow.cpp']
if _platform == "linux" or _platform == "linux2":
libraries = ['dl','pthread']
CXX_FLAGS += '-D_LINUX '
CXX_FLAGS += '-DGLEW_STATIC '
CXX_FLAGS += '-DGLEW_INIT_OPENGL11_FUNCTIONS=1 '
CXX_FLAGS += '-DGLEW_DYNAMIC_LOAD_ALL_GLX_FUNCTIONS=1 '
CXX_FLAGS += '-DDYNAMIC_LOAD_X11_FUNCTIONS '
CXX_FLAGS += '-DHAS_SOCKLEN_T '
CXX_FLAGS += '-fno-inline-functions-called-once '
EGL_CXX_FLAGS += '-DBT_USE_EGL '
EGL_CXX_FLAGS += '-fPIC ' # for plugins
sources = sources + ["examples/ThirdPartyLibs/enet/unix.c"]\
+["examples/OpenGLWindow/X11OpenGLWindow.cpp"]\
+["examples/ThirdPartyLibs/glad/gl.c"]\
+["src/PhysXFoundationUnix.cpp"]\
+["examples/ThirdPartyLibs/glad/glx.c"]
include_dirs += ["examples/ThirdPartyLibs/optionalX11"]
if 'BT_USE_EGL' in EGL_CXX_FLAGS:
egl_renderer_sources = egl_renderer_sources\
+["examples/OpenGLWindow/EGLOpenGLWindow.cpp"]\
+['examples/ThirdPartyLibs/glad/egl.c']
else:
egl_renderer_sources = egl_renderer_sources\
+["examples/OpenGLWindow/X11OpenGLWindow.cpp"]\
+["examples/ThirdPartyLibs/glad/glx.c"]
elif _platform == "win32":
print("win32!")
libraries = ['Ws2_32','Winmm','User32','Opengl32','kernel32','glu32','Gdi32','Comdlg32']
CXX_FLAGS += '-DWIN32 '
CXX_FLAGS += '-DGLEW_STATIC '
sources = sources + ["examples/ThirdPartyLibs/enet/win32.c"]\
+["examples/OpenGLWindow/Win32Window.cpp"]\
+["examples/OpenGLWindow/Win32OpenGLWindow.cpp"]\
+["examples/ThirdPartyLibs/glad/gl.c"]
sources = sources + +["src/PhysX/physx/source/physx/src/windows/NpWindowsDelayLoadHook.cpp"]\
+["src/PhysX/physx/source/common/src/windows/CmWindowsDelayLoadHook.cpp"]\
+["PhysX/physx/source/common/src/windows/CmWindowsModuleUpdateLoader.cpp"]\
+["src/PhysXFoundationWindows.cpp"]\
+["src/PhysX/physx/source/physx/src/device/windows/PhysXIndicatorWindows.cpp"]
elif _platform == "darwin":
print("darwin!")
os.environ['LDFLAGS'] = '-framework Cocoa -stdlib=libc++ -framework OpenGL'
CXX_FLAGS += '-DB3_NO_PYTHON_FRAMEWORK '
CXX_FLAGS += '-DHAS_SOCKLEN_T '
CXX_FLAGS += '-D_DARWIN '
# CXX_FLAGS += '-framework Cocoa '
sources = sources + ["examples/ThirdPartyLibs/enet/unix.c"]\
+["src/PhysXFoundationUnix.cpp"]\
+["examples/OpenGLWindow/MacOpenGLWindow.cpp"]\
+["examples/ThirdPartyLibs/glad/gl.c"]\
+["examples/OpenGLWindow/MacOpenGLWindowObjC.m"]
else:
print("bsd!")
libraries = ['GL','GLEW','pthread']
os.environ['LDFLAGS'] = '-L/usr/X11R6/lib'
CXX_FLAGS += '-D_BSD '
CXX_FLAGS += '-I/usr/X11R6/include '
CXX_FLAGS += '-DHAS_SOCKLEN_T '
CXX_FLAGS += '-fno-inline-functions-called-once'
sources = ["examples/ThirdPartyLibs/enet/unix.c"]\
+["src/PhysXFoundationUnix.cpp"]\
+["examples/OpenGLWindow/X11OpenGLWindow.cpp"]\
+["examples/ThirdPartyLibs/glad/gl.c"]\
+ sources
setup_py_dir = os.path.dirname(os.path.realpath(__file__))
need_files = []
datadir = "examples/pybullet/gym/pybullet_data"
hh = setup_py_dir + "/" + datadir
for root, dirs, files in os.walk(hh):
for fn in files:
ext = os.path.splitext(fn)[1][1:]
if ext and ext in 'yaml index meta data-00000-of-00001 png gif jpg urdf sdf obj txt mtl dae off stl STL xml '.split():
fn = root + "/" + fn
need_files.append(fn[1+len(hh):])
print("found resource files: %i" % len(need_files))
for n in need_files: print("-- %s" % n)
print("packages")
print(find_packages('examples/pybullet/gym'))
print("-----")
extensions = []
pybullet_ext = Extension("pybullet",
sources = sources,
libraries = libraries,
extra_compile_args=CXX_FLAGS.split(),
include_dirs = include_dirs + ["src","examples/ThirdPartyLibs","examples/ThirdPartyLibs/glad", "examples/ThirdPartyLibs/enet/include","examples/ThirdPartyLibs/clsocket/src"]
)
extensions.append(pybullet_ext)
if 'BT_USE_EGL' in EGL_CXX_FLAGS:
eglRender = Extension("eglRenderer",
sources = egl_renderer_sources,
libraries = libraries,
extra_compile_args=(CXX_FLAGS+EGL_CXX_FLAGS ).split(),
include_dirs = include_dirs + ["src","examples", "examples/ThirdPartyLibs","examples/ThirdPartyLibs/glad", "examples/ThirdPartyLibs/enet/include","examples/ThirdPartyLibs/clsocket/src"])
extensions.append(eglRender)
setup(
name = 'pybullet',
version='2.4.3',
description='Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning',
long_description='pybullet is an easy to use Python module for physics simulation, robotics and deep reinforcement learning based on the Bullet Physics SDK. With pybullet you can load articulated bodies from URDF, SDF and other file formats. pybullet provides forward dynamics simulation, inverse dynamics computation, forward and inverse kinematics and collision detection and ray intersection queries. Aside from physics simulation, pybullet supports to rendering, with a CPU renderer and OpenGL visualization and support for virtual reality headsets.',
url='https://github.com/bulletphysics/bullet3',
author='Erwin Coumans, Yunfei Bai, Jasmine Hsu',
author_email='erwincoumans@google.com',
license='zlib',
platforms='any',
keywords=['game development', 'virtual reality', 'physics simulation', 'robotics', 'collision detection', 'opengl'],
ext_modules = extensions,
classifiers=['Development Status :: 5 - Production/Stable',
'License :: OSI Approved :: zlib/libpng License',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: Linux',
'Operating System :: MacOS',
'Intended Audience :: Science/Research',
"Programming Language :: Python",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Games/Entertainment :: Simulation',
'Topic :: Scientific/Engineering :: Artificial Intelligence',
'Framework :: Robot Framework'],
package_dir = { '': 'examples/pybullet/gym'},
packages=[x for x in find_packages('examples/pybullet/gym')],
package_data = { 'pybullet_data': need_files }
)