2017-04-03 06:00:06 +00:00
from setuptools import find_packages
from sys import platform as _platform
import sys
2018-09-11 20:24:35 +00:00
import glob
2019-01-28 18:02:53 +00:00
import os
2017-04-03 06:00:06 +00:00
from distutils . core import setup
from distutils . extension import Extension
from distutils . util import get_platform
2018-09-11 20:24:35 +00:00
from glob import glob
2018-09-11 06:18:34 +00:00
# monkey-patch for parallel compilation
import multiprocessing
import multiprocessing . pool
2019-01-28 18:02:53 +00:00
2019-04-27 14:31:15 +00:00
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
try :
# On Unix-like platforms attempt to obtain the total memory in the
# machine and limit the number of parallel jobs to the number of Gbs
# of RAM (to avoid killing smaller platforms like the Pi)
mem = os . sysconf ( ' SC_PHYS_PAGES ' ) * os . sysconf ( ' SC_PAGE_SIZE ' ) # bytes
except ( AttributeError , ValueError ) :
# Couldn't query RAM; don't limit parallelism (it's probably a well
# equipped Windows / Mac OS X box)
pass
else :
mem = max ( 1 , int ( round ( mem / 1024 * * 3 ) ) ) # convert to Gb
N = min ( mem , N )
def _single_compile ( obj ) :
2019-02-20 21:52:29 +00:00
try :
2019-04-27 14:31:15 +00:00
src , ext = build [ obj ]
except KeyError :
return
newcc_args = cc_args
if _platform == " darwin " :
if src . endswith ( ' .cpp ' ) :
2019-09-30 21:08:22 +00:00
newcc_args = cc_args + [ " -mmacosx-version-min=10.7 " , " -stdlib=libc++ " ]
2019-04-27 14:31:15 +00:00
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
2018-09-11 06:18:34 +00:00
import distutils . ccompiler
2019-04-27 14:31:15 +00:00
distutils . ccompiler . CCompiler . compile = parallelCCompile
2018-09-11 06:18:34 +00:00
2017-04-03 06:00:06 +00:00
#see http://stackoverflow.com/a/8719066/295157
import os
platform = get_platform ( )
print ( platform )
CXX_FLAGS = ' '
CXX_FLAGS + = ' -DGWEN_COMPILE_STATIC '
2017-04-04 15:11:18 +00:00
CXX_FLAGS + = ' -DBT_USE_DOUBLE_PRECISION '
CXX_FLAGS + = ' -DBT_ENABLE_ENET '
CXX_FLAGS + = ' -DBT_ENABLE_CLSOCKET '
2017-04-13 19:46:16 +00:00
CXX_FLAGS + = ' -DB3_DUMP_PYTHON_VERSION '
2018-09-21 16:55:57 +00:00
CXX_FLAGS + = ' -DEGL_ADD_PYTHON_INIT '
2018-10-12 00:44:54 +00:00
CXX_FLAGS + = ' -DB3_ENABLE_FILEIO_PLUGIN '
CXX_FLAGS + = ' -DB3_USE_ZIPFILE_FILEIO '
2018-10-27 01:37:28 +00:00
CXX_FLAGS + = ' -DBT_THREADSAFE=1 '
2019-01-23 18:42:59 +00:00
CXX_FLAGS + = ' -DSTATIC_LINK_SPD_PLUGIN '
2018-09-11 20:24:35 +00:00
EGL_CXX_FLAGS = ' '
2017-04-03 06:00:06 +00:00
# libraries += [current_python]
2017-04-04 05:39:33 +00:00
libraries = [ ]
2017-04-13 19:46:16 +00:00
include_dirs = [ ]
try :
2019-04-27 14:31:15 +00:00
import numpy
NP_DIRS = [ numpy . get_include ( ) ]
2017-04-13 19:46:16 +00:00
except :
2019-04-27 14:31:15 +00:00
print ( " numpy is disabled. getCameraImage maybe slower. " )
2017-04-13 19:46:16 +00:00
else :
2019-04-27 14:31:15 +00:00
print ( " numpy is enabled. " )
CXX_FLAGS + = ' -DPYBULLET_USE_NUMPY '
for d in NP_DIRS :
print ( " numpy_include_dirs = %s " % d )
include_dirs + = NP_DIRS
2017-04-03 06:00:06 +00:00
sources = [ " examples/pybullet/pybullet.c " ] \
2019-01-24 18:32:15 +00:00
+ [ " src/btLinearMathAll.cpp " ] \
+ [ " src/btBulletCollisionAll.cpp " ] \
+ [ " src/btBulletDynamicsAll.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " 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 " ] \
2018-06-05 22:59:01 +00:00
+ [ " examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp " ] \
2018-07-27 13:48:24 +00:00
+ [ " examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp " ] \
2018-10-12 00:44:54 +00:00
+ [ " examples/SharedMemory/plugins/fileIOPlugin/fileIOPlugin.cpp " ] \
2018-06-05 22:59:01 +00:00
+ [ " examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " examples/SharedMemory/IKTrajectoryHelper.cpp " ] \
+ [ " examples/SharedMemory/InProcessMemory.cpp " ] \
+ [ " examples/SharedMemory/PhysicsClient.cpp " ] \
+ [ " examples/SharedMemory/PhysicsServer.cpp " ] \
2019-06-14 21:34:56 +00:00
+ [ " examples/SharedMemory/GraphicsClientExample.cpp " ] \
+ [ " examples/SharedMemory/RemoteGUIHelper.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " examples/SharedMemory/PhysicsServerExample.cpp " ] \
2017-05-31 02:54:55 +00:00
+ [ " examples/SharedMemory/PhysicsServerExampleBullet2.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " 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 " ] \
2018-01-17 20:48:48 +00:00
+ [ " examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp " ] \
+ [ " examples/SharedMemory/plugins/tinyRendererPlugin/tinyRendererPlugin.cpp " ] \
2019-01-23 18:42:59 +00:00
+ [ " 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 " ] \
2017-04-04 15:11:18 +00:00
+ [ " examples/SharedMemory/PhysicsClientUDP.cpp " ] \
+ [ " examples/SharedMemory/PhysicsClientUDP_C_API.cpp " ] \
+ [ " examples/SharedMemory/PhysicsClientTCP.cpp " ] \
+ [ " examples/SharedMemory/PhysicsClientTCP_C_API.cpp " ] \
2017-09-23 02:17:57 +00:00
+ [ " examples/SharedMemory/b3PluginManager.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " examples/Utils/b3ResourcePath.cpp " ] \
+ [ " examples/Utils/RobotLoggingUtil.cpp " ] \
+ [ " examples/Utils/ChromeTraceUtil.cpp " ] \
+ [ " examples/Utils/b3Clock.cpp " ] \
+ [ " examples/Utils/b3Quickprof.cpp " ] \
2018-04-12 07:09:44 +00:00
+ [ " examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp " ] \
+ [ " examples/ThirdPartyLibs/stb_image/stb_image.cpp " ] \
2018-09-11 06:18:34 +00:00
+ [ " examples/ThirdPartyLibs/stb_image/stb_image_write.cpp " ] \
2018-10-12 00:44:54 +00:00
+ [ " 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 " ] \
2017-04-03 06:00:06 +00:00
+ [ " 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 " ] \
2017-11-23 02:12:02 +00:00
+ [ " Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " 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 " ] \
2019-09-05 01:55:16 +00:00
+ [ " src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp " ] \
+ [ " src/BulletSoftBody/btDeformableBodySolver.cpp " ] \
+ [ " src/BulletSoftBody/btDeformableContactProjection.cpp " ] \
2019-09-28 00:24:14 +00:00
+ [ " src/BulletSoftBody/btDeformableContactConstraint.cpp " ] \
2019-09-05 01:55:16 +00:00
+ [ " src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp " ] \
+ [ " src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.cpp " ] \
2020-02-09 05:21:43 +00:00
+ [ " src/BulletSoftBody/poly34.cpp " ] \
2017-04-03 06:00:06 +00:00
+ [ " 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 " ] \
2018-09-11 06:18:34 +00:00
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 " ] \
2018-10-27 19:54:33 +00:00
+ [ " src/LinearMath/btConvexHullComputer.cpp " ] \
+ [ " src/LinearMath/btGeometryUtil.cpp " ] \
+ [ " src/LinearMath/btQuickprof.cpp " ] \
+ [ " src/LinearMath/btThreads.cpp " ] \
2018-09-11 06:18:34 +00:00
+ [ " src/Bullet3Common/b3AlignedAllocator.cpp " ] \
+ [ " examples/ThirdPartyLibs/glad/gl.c " ] \
+ [ " examples/OpenGLWindow/GLInstancingRenderer.cpp " ] \
+ [ " examples/OpenGLWindow/GLRenderToTexture.cpp " ] \
2018-10-27 19:54:33 +00:00
+ [ " examples/OpenGLWindow/LoadShader.cpp " ]
2018-09-11 06:18:34 +00:00
2018-09-13 04:03:07 +00:00
if ' BT_USE_EGL ' in CXX_FLAGS :
2019-04-27 14:31:15 +00:00
sources + = [ ' examples/ThirdPartyLibs/glad/egl.c ' ]
sources + = [ ' examples/OpenGLWindow/EGLOpenGLWindow.cpp ' ]
2018-09-13 04:03:07 +00:00
2017-04-03 06:00:06 +00:00
if _platform == " linux " or _platform == " linux2 " :
2019-04-27 14:31:15 +00:00
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 '
CXX_FLAGS + = ' -fvisibility=hidden '
CXX_FLAGS + = ' -fvisibility-inlines-hidden '
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 " ] \
+ [ " 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 \
2018-09-11 20:24:35 +00:00
+ [ " examples/OpenGLWindow/X11OpenGLWindow.cpp " ] \
+ [ " examples/ThirdPartyLibs/glad/glx.c " ]
2017-04-04 05:39:33 +00:00
elif _platform == " win32 " :
2019-04-27 14:31:15 +00:00
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 " ]
2017-04-03 06:00:06 +00:00
elif _platform == " darwin " :
2019-04-27 14:31:15 +00:00
print ( " darwin! " )
2019-09-30 21:08:22 +00:00
os . environ [ ' LDFLAGS ' ] = ' -framework Cocoa -mmacosx-version-min=10.7 -stdlib=libc++ -framework OpenGL '
2019-04-27 14:31:15 +00:00
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 " ] \
+ [ " examples/OpenGLWindow/MacOpenGLWindow.cpp " ] \
+ [ " examples/ThirdPartyLibs/glad/gl.c " ] \
+ [ " examples/OpenGLWindow/MacOpenGLWindowObjC.m " ]
2017-04-17 18:58:24 +00:00
else :
2019-04-27 14:31:15 +00:00
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 " ] \
+ [ " examples/OpenGLWindow/X11OpenGLWindow.cpp " ] \
+ [ " examples/ThirdPartyLibs/glad/gl.c " ] \
+ sources
2017-04-17 18:58:24 +00:00
2017-08-22 07:42:02 +00:00
setup_py_dir = os . path . dirname ( os . path . realpath ( __file__ ) )
need_files = [ ]
2017-08-28 01:08:46 +00:00
datadir = " examples/pybullet/gym/pybullet_data "
2017-08-22 07:42:02 +00:00
hh = setup_py_dir + " / " + datadir
for root , dirs , files in os . walk ( hh ) :
2019-04-27 14:31:15 +00:00
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 ) : ] )
2017-08-22 07:42:02 +00:00
print ( " found resource files: %i " % len ( need_files ) )
2019-04-27 14:31:15 +00:00
for n in need_files :
print ( " -- %s " % n )
2017-08-22 07:42:02 +00:00
print ( " packages " )
print ( find_packages ( ' examples/pybullet/gym ' ) )
print ( " ----- " )
2017-04-03 06:00:06 +00:00
2018-09-21 16:55:57 +00:00
extensions = [ ]
2019-04-27 14:31:15 +00:00
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 "
] )
2018-09-21 16:55:57 +00:00
extensions . append ( pybullet_ext )
if ' BT_USE_EGL ' in EGL_CXX_FLAGS :
2019-04-27 14:31:15 +00:00
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 "
] )
2018-09-11 06:18:34 +00:00
2019-04-27 14:31:15 +00:00
extensions . append ( eglRender )
2018-09-11 06:18:34 +00:00
2017-04-03 06:00:06 +00:00
setup (
2019-04-27 14:31:15 +00:00
name = ' pybullet ' ,
2020-02-21 23:05:37 +00:00
version = ' 2.6.6 ' ,
2019-04-27 14:31:15 +00:00
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 '
] ,
2020-01-02 02:47:46 +00:00
install_requires = [
' numpy ' ,
] ,
2019-04-27 14:31:15 +00:00
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 ' ,
2020-01-03 05:31:48 +00:00
' Programming Language :: Python :: 3.6 ' , ' Programming Language :: Python :: 3.7 ' ,
' Programming Language :: Python :: 3.8 ' , ' Topic :: Games/Entertainment :: Simulation ' ,
2019-04-27 14:31:15 +00:00
' Topic :: Scientific/Engineering :: Artificial Intelligence ' ,
' Framework :: Robot Framework '
] ,
package_dir = { ' ' : ' examples/pybullet/gym ' } ,
2017-08-22 07:42:02 +00:00
packages = [ x for x in find_packages ( ' examples/pybullet/gym ' ) ] ,
2019-04-27 14:31:15 +00:00
package_data = { ' pybullet_data ' : need_files } )