mirror of
https://github.com/bulletphysics/bullet3
synced 2025-01-18 21:10:05 +00:00
7b5f81958a
On smaller platforms like the Raspberry Pi, which have a deficit of physical memory, the default algorithm for determining compilation parallelism is far too optimistic and usually results in crashing the platform. This modification limits the number of parallel jobs to the size of RAM in Gb. On a mid-size PC (e.g. quad-core with 8+Gb of RAM), this will make no difference. On a Pi (quad-core with 1Gb of RAM), this will limit it to 1 job at a time (which is ideal).
497 lines
23 KiB
Python
497 lines
23 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
|
|
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):
|
|
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 '
|
|
|
|
|
|
EGL_CXX_FLAGS = ''
|
|
|
|
|
|
|
|
# libraries += [current_python]
|
|
|
|
libraries = []
|
|
include_dirs = []
|
|
|
|
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"]\
|
|
+["src/btLinearMathAll.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"]\
|
|
+["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"]
|
|
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"]\
|
|
+["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"]\
|
|
+["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.5',
|
|
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 }
|
|
)
|