setup.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537
  1. from setuptools import find_packages
  2. from sys import platform as _platform
  3. import sys
  4. import glob
  5. import os
  6. from distutils.core import setup
  7. from distutils.extension import Extension
  8. from distutils.util import get_platform
  9. from glob import glob
  10. # monkey-patch for parallel compilation
  11. import multiprocessing
  12. import multiprocessing.pool
  13. def parallelCCompile(self,
  14. sources,
  15. output_dir=None,
  16. macros=None,
  17. include_dirs=None,
  18. debug=0,
  19. extra_preargs=None,
  20. extra_postargs=None,
  21. depends=None):
  22. # those lines are copied from distutils.ccompiler.CCompiler directly
  23. macros, objects, extra_postargs, pp_opts, build = self._setup_compile(
  24. output_dir, macros, include_dirs, sources, depends, extra_postargs)
  25. cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
  26. # parallel code
  27. N = 2 * multiprocessing.cpu_count() # number of parallel compilations
  28. try:
  29. # On Unix-like platforms attempt to obtain the total memory in the
  30. # machine and limit the number of parallel jobs to the number of Gbs
  31. # of RAM (to avoid killing smaller platforms like the Pi)
  32. mem = os.sysconf('SC_PHYS_PAGES') * os.sysconf('SC_PAGE_SIZE') # bytes
  33. except (AttributeError, ValueError):
  34. # Couldn't query RAM; don't limit parallelism (it's probably a well
  35. # equipped Windows / Mac OS X box)
  36. pass
  37. else:
  38. mem = max(1, int(round(mem / 1024**3))) # convert to Gb
  39. N = min(mem, N)
  40. def _single_compile(obj):
  41. try:
  42. src, ext = build[obj]
  43. except KeyError:
  44. return
  45. newcc_args = cc_args
  46. if _platform == "darwin":
  47. if src.endswith('.cpp'):
  48. newcc_args = cc_args + ["-mmacosx-version-min=10.7", "-stdlib=libc++"]
  49. self._compile(obj, src, ext, newcc_args, extra_postargs, pp_opts)
  50. # convert to list, imap is evaluated on-demand
  51. pool = multiprocessing.pool.ThreadPool(N)
  52. list(pool.imap(_single_compile, objects))
  53. return objects
  54. import distutils.ccompiler
  55. distutils.ccompiler.CCompiler.compile = parallelCCompile
  56. #see http://stackoverflow.com/a/8719066/295157
  57. import os
  58. platform = get_platform()
  59. print(platform)
  60. CXX_FLAGS = ''
  61. CXX_FLAGS += '-DGWEN_COMPILE_STATIC '
  62. CXX_FLAGS += '-DBT_USE_DOUBLE_PRECISION '
  63. CXX_FLAGS += '-DBT_ENABLE_ENET '
  64. CXX_FLAGS += '-DBT_ENABLE_CLSOCKET '
  65. CXX_FLAGS += '-DB3_DUMP_PYTHON_VERSION '
  66. CXX_FLAGS += '-DEGL_ADD_PYTHON_INIT '
  67. CXX_FLAGS += '-DB3_ENABLE_FILEIO_PLUGIN '
  68. CXX_FLAGS += '-DB3_USE_ZIPFILE_FILEIO '
  69. CXX_FLAGS += '-DBT_THREADSAFE=1 '
  70. CXX_FLAGS += '-DSTATIC_LINK_SPD_PLUGIN '
  71. CXX_FLAGS += '-DBT_ENABLE_VHACD '
  72. EGL_CXX_FLAGS = ''
  73. # libraries += [current_python]
  74. libraries = []
  75. include_dirs = []
  76. try:
  77. import numpy
  78. NP_DIRS = [numpy.get_include()]
  79. except:
  80. print("numpy is disabled. getCameraImage maybe slower.")
  81. else:
  82. print("numpy is enabled.")
  83. CXX_FLAGS += '-DPYBULLET_USE_NUMPY '
  84. for d in NP_DIRS:
  85. print("numpy_include_dirs = %s" % d)
  86. include_dirs += NP_DIRS
  87. sources = ["examples/pybullet/pybullet.c"]\
  88. +["examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp"]\
  89. +["examples/SharedMemory/plugins/stablePDPlugin/BulletConversion.cpp"]\
  90. +["examples/SharedMemory/plugins/stablePDPlugin/KinTree.cpp"]\
  91. +["examples/SharedMemory/plugins/stablePDPlugin/MathUtil.cpp"]\
  92. +["examples/SharedMemory/plugins/stablePDPlugin/RBDModel.cpp"]\
  93. +["examples/SharedMemory/plugins/stablePDPlugin/RBDUtil.cpp"]\
  94. +["examples/SharedMemory/plugins/stablePDPlugin/Shape.cpp"]\
  95. +["examples/SharedMemory/plugins/stablePDPlugin/SpAlg.cpp"]\
  96. +["src/btLinearMathAll.cpp"]\
  97. +["src/btBulletCollisionAll.cpp"]\
  98. +["src/btBulletDynamicsAll.cpp"]\
  99. +["examples/ExampleBrowser/InProcessExampleBrowser.cpp"]\
  100. +["examples/TinyRenderer/geometry.cpp"]\
  101. +["examples/TinyRenderer/model.cpp"]\
  102. +["examples/TinyRenderer/tgaimage.cpp"]\
  103. +["examples/TinyRenderer/our_gl.cpp"]\
  104. +["examples/TinyRenderer/TinyRenderer.cpp"]\
  105. +["examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp"]\
  106. +["examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp"]\
  107. +["examples/SharedMemory/plugins/fileIOPlugin/fileIOPlugin.cpp"]\
  108. +["examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp"]\
  109. +["examples/SharedMemory/IKTrajectoryHelper.cpp"]\
  110. +["examples/SharedMemory/InProcessMemory.cpp"]\
  111. +["examples/SharedMemory/PhysicsClient.cpp"]\
  112. +["examples/SharedMemory/PhysicsServer.cpp"]\
  113. +["examples/SharedMemory/GraphicsClientExample.cpp"]\
  114. +["examples/SharedMemory/GraphicsServerExample.cpp"]\
  115. +["examples/SharedMemory/RemoteGUIHelper.cpp"]\
  116. +["examples/SharedMemory/RemoteGUIHelperTCP.cpp"]\
  117. +["examples/SharedMemory/PhysicsServerExample.cpp"]\
  118. +["examples/SharedMemory/PhysicsServerExampleBullet2.cpp"]\
  119. +["examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp"]\
  120. +["examples/SharedMemory/PhysicsServerSharedMemory.cpp"]\
  121. +["examples/SharedMemory/PhysicsDirect.cpp"]\
  122. +["examples/SharedMemory/PhysicsDirectC_API.cpp"]\
  123. +["examples/SharedMemory/PhysicsServerCommandProcessor.cpp"]\
  124. +["examples/SharedMemory/PhysicsClientSharedMemory.cpp"]\
  125. +["examples/SharedMemory/PhysicsClientSharedMemory_C_API.cpp"]\
  126. +["examples/SharedMemory/PhysicsClientC_API.cpp"]\
  127. +["examples/SharedMemory/Win32SharedMemory.cpp"]\
  128. +["examples/SharedMemory/PosixSharedMemory.cpp"]\
  129. +["examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp"]\
  130. +["examples/SharedMemory/plugins/tinyRendererPlugin/tinyRendererPlugin.cpp"]\
  131. +["examples/SharedMemory/PhysicsClientUDP.cpp"]\
  132. +["examples/SharedMemory/PhysicsClientUDP_C_API.cpp"]\
  133. +["examples/SharedMemory/PhysicsClientTCP.cpp"]\
  134. +["examples/SharedMemory/PhysicsClientTCP_C_API.cpp"]\
  135. +["examples/SharedMemory/b3PluginManager.cpp"]\
  136. +["examples/Utils/b3ResourcePath.cpp"]\
  137. +["examples/Utils/RobotLoggingUtil.cpp"]\
  138. +["examples/Utils/ChromeTraceUtil.cpp"]\
  139. +["examples/Utils/b3Clock.cpp"]\
  140. +["examples/Utils/b3Quickprof.cpp"]\
  141. +["examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp"]\
  142. +["examples/ThirdPartyLibs/stb_image/stb_image.cpp"]\
  143. +["examples/ThirdPartyLibs/stb_image/stb_image_write.cpp"]\
  144. +["examples/ThirdPartyLibs/minizip/ioapi.c"]\
  145. +["examples/ThirdPartyLibs/minizip/unzip.c"]\
  146. +["examples/ThirdPartyLibs/minizip/zip.c"]\
  147. +["examples/ThirdPartyLibs/zlib/adler32.c"]\
  148. +["examples/ThirdPartyLibs/zlib/compress.c"]\
  149. +["examples/ThirdPartyLibs/zlib/crc32.c"]\
  150. +["examples/ThirdPartyLibs/zlib/deflate.c"]\
  151. +["examples/ThirdPartyLibs/zlib/gzclose.c"]\
  152. +["examples/ThirdPartyLibs/zlib/gzlib.c"]\
  153. +["examples/ThirdPartyLibs/zlib/gzread.c"]\
  154. +["examples/ThirdPartyLibs/zlib/gzwrite.c"]\
  155. +["examples/ThirdPartyLibs/zlib/infback.c"]\
  156. +["examples/ThirdPartyLibs/zlib/inffast.c"]\
  157. +["examples/ThirdPartyLibs/zlib/inflate.c"]\
  158. +["examples/ThirdPartyLibs/zlib/inftrees.c"]\
  159. +["examples/ThirdPartyLibs/zlib/trees.c"]\
  160. +["examples/ThirdPartyLibs/zlib/uncompr.c"]\
  161. +["examples/ThirdPartyLibs/zlib/zutil.c"]\
  162. +["examples/Importers/ImportColladaDemo/LoadMeshFromCollada.cpp"]\
  163. +["examples/Importers/ImportObjDemo/LoadMeshFromObj.cpp"]\
  164. +["examples/Importers/ImportObjDemo/Wavefront2GLInstanceGraphicsShape.cpp"]\
  165. +["examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp"]\
  166. +["examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp"]\
  167. +["examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp"]\
  168. +["examples/Importers/ImportURDFDemo/URDF2Bullet.cpp"]\
  169. +["examples/Importers/ImportURDFDemo/UrdfParser.cpp"]\
  170. +["examples/Importers/ImportURDFDemo/urdfStringSplit.cpp"]\
  171. +["examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp"]\
  172. +["examples/MultiThreading/b3PosixThreadSupport.cpp"]\
  173. +["examples/MultiThreading/b3Win32ThreadSupport.cpp"]\
  174. +["examples/MultiThreading/b3ThreadSupportInterface.cpp"]\
  175. +["examples/ThirdPartyLibs/enet/callbacks.c"]\
  176. +["examples/ThirdPartyLibs/enet/compress.c"]\
  177. +["examples/ThirdPartyLibs/enet/host.c"]\
  178. +["examples/ThirdPartyLibs/enet/list.c"]\
  179. +["examples/ThirdPartyLibs/enet/packet.c"]\
  180. +["examples/ThirdPartyLibs/enet/peer.c"]\
  181. +["examples/ThirdPartyLibs/enet/protocol.c"]\
  182. +["examples/ExampleBrowser/OpenGLGuiHelper.cpp"]\
  183. +["examples/ExampleBrowser/OpenGLExampleBrowser.cpp"]\
  184. +["examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp"]\
  185. +["examples/ExampleBrowser/GL_ShapeDrawer.cpp"]\
  186. +["examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp"]\
  187. +["examples/OpenGLWindow/GLInstancingRenderer.cpp"]\
  188. +["examples/OpenGLWindow/SimpleOpenGL3App.cpp"]\
  189. +["examples/OpenGLWindow/GLPrimitiveRenderer.cpp"]\
  190. +["examples/OpenGLWindow/TwFonts.cpp"]\
  191. +["examples/OpenGLWindow/GLRenderToTexture.cpp"]\
  192. +["examples/OpenGLWindow/LoadShader.cpp"]\
  193. +["examples/OpenGLWindow/OpenSans.cpp"]\
  194. +["examples/OpenGLWindow/SimpleCamera.cpp"]\
  195. +["examples/OpenGLWindow/fontstash.cpp"]\
  196. +["examples/OpenGLWindow/SimpleOpenGL2App.cpp"]\
  197. +["examples/OpenGLWindow/opengl_fontstashcallbacks.cpp"]\
  198. +["examples/ExampleBrowser/GwenGUISupport/GraphingTexture.cpp"]\
  199. +["examples/ExampleBrowser/GwenGUISupport/GwenProfileWindow.cpp"]\
  200. +["examples/ExampleBrowser/GwenGUISupport/gwenUserInterface.cpp"]\
  201. +["examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp"]\
  202. +["examples/ExampleBrowser/GwenGUISupport/GwenTextureWindow.cpp"]\
  203. +["src/Bullet3Common/b3AlignedAllocator.cpp"]\
  204. +["src/Bullet3Common/b3Logging.cpp"]\
  205. +["src/Bullet3Common/b3Vector3.cpp"]\
  206. +["examples/ThirdPartyLibs/clsocket/src/ActiveSocket.cpp"]\
  207. +["examples/ThirdPartyLibs/clsocket/src/PassiveSocket.cpp"]\
  208. +["examples/ThirdPartyLibs/clsocket/src/SimpleSocket.cpp"]\
  209. +["Extras/Serialize/BulletFileLoader/bChunk.cpp"]\
  210. +["Extras/Serialize/BulletFileLoader/bDNA.cpp"]\
  211. +["Extras/Serialize/BulletFileLoader/bFile.cpp"]\
  212. +["Extras/Serialize/BulletFileLoader/btBulletFile.cpp"]\
  213. +["Extras/Serialize/BulletWorldImporter/btMultiBodyWorldImporter.cpp"]\
  214. +["Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp"]\
  215. +["Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp"]\
  216. +["Extras/InverseDynamics/CloneTreeCreator.cpp"]\
  217. +["Extras/InverseDynamics/IDRandomUtil.cpp"]\
  218. +["Extras/InverseDynamics/MultiBodyTreeDebugGraph.cpp"]\
  219. +["Extras/InverseDynamics/User2InternalIndex.cpp"]\
  220. +["Extras/InverseDynamics/CoilCreator.cpp"]\
  221. +["Extras/InverseDynamics/MultiBodyNameMap.cpp"]\
  222. +["Extras/InverseDynamics/RandomTreeCreator.cpp"]\
  223. +["Extras/InverseDynamics/btMultiBodyTreeCreator.cpp"]\
  224. +["Extras/InverseDynamics/DillCreator.cpp"]\
  225. +["Extras/InverseDynamics/MultiBodyTreeCreator.cpp"]\
  226. +["Extras/InverseDynamics/SimpleTreeCreator.cpp"]\
  227. +["Extras/InverseDynamics/invdyn_bullet_comparison.cpp"]\
  228. +["src/BulletSoftBody/btDefaultSoftBodySolver.cpp"]\
  229. +["src/BulletSoftBody/btSoftBodyHelpers.cpp"]\
  230. +["src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp"]\
  231. +["src/BulletSoftBody/btSoftBody.cpp"]\
  232. +["src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp"]\
  233. +["src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp"]\
  234. +["src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp"]\
  235. +["src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp"]\
  236. +["src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp"]\
  237. +["src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp"]\
  238. +["src/BulletSoftBody/btDeformableBodySolver.cpp"]\
  239. +["src/BulletSoftBody/btDeformableContactProjection.cpp"]\
  240. +["src/BulletSoftBody/btDeformableContactConstraint.cpp"]\
  241. +["src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp"]\
  242. +["src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.cpp"]\
  243. +["src/BulletSoftBody/poly34.cpp"]\
  244. +["src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBody.cpp"]\
  245. +["src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodyHelpers.cpp"]\
  246. +["src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.cpp"]\
  247. +["src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableContactConstraint.cpp"]\
  248. +["src/BulletInverseDynamics/IDMath.cpp"]\
  249. +["src/BulletInverseDynamics/MultiBodyTree.cpp"]\
  250. +["src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp"]\
  251. +["src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp"]\
  252. +["examples/ThirdPartyLibs/BussIK/Jacobian.cpp"]\
  253. +["examples/ThirdPartyLibs/BussIK/LinearR2.cpp"]\
  254. +["examples/ThirdPartyLibs/BussIK/LinearR3.cpp"]\
  255. +["examples/ThirdPartyLibs/BussIK/LinearR4.cpp"]\
  256. +["examples/ThirdPartyLibs/BussIK/MatrixRmn.cpp"]\
  257. +["examples/ThirdPartyLibs/BussIK/Misc.cpp"]\
  258. +["examples/ThirdPartyLibs/BussIK/Node.cpp"]\
  259. +["examples/ThirdPartyLibs/BussIK/Tree.cpp"]\
  260. +["examples/ThirdPartyLibs/BussIK/VectorRn.cpp"]\
  261. +["examples/ThirdPartyLibs/Gwen/Anim.cpp"]\
  262. +["examples/ThirdPartyLibs/Gwen/DragAndDrop.cpp"]\
  263. +["examples/ThirdPartyLibs/Gwen/Hook.cpp"]\
  264. +["examples/ThirdPartyLibs/Gwen/ToolTip.cpp"]\
  265. +["examples/ThirdPartyLibs/Gwen/events.cpp"]\
  266. +["examples/ThirdPartyLibs/Gwen/BaseRender.cpp"]\
  267. +["examples/ThirdPartyLibs/Gwen/Gwen.cpp"]\
  268. +["examples/ThirdPartyLibs/Gwen/Skin.cpp"]\
  269. +["examples/ThirdPartyLibs/Gwen/Utility.cpp"]\
  270. +["examples/ThirdPartyLibs/Gwen/inputhandler.cpp"]\
  271. +["examples/ThirdPartyLibs/Gwen/Controls/Base.cpp"]\
  272. +["examples/ThirdPartyLibs/Gwen/Controls/Button.cpp"]\
  273. +["examples/ThirdPartyLibs/Gwen/Controls/Canvas.cpp"]\
  274. +["examples/ThirdPartyLibs/Gwen/Controls/CheckBox.cpp"]\
  275. +["examples/ThirdPartyLibs/Gwen/Controls/ColorControls.cpp"]\
  276. +["examples/ThirdPartyLibs/Gwen/Controls/ColorPicker.cpp"]\
  277. +["examples/ThirdPartyLibs/Gwen/Controls/ComboBox.cpp"]\
  278. +["examples/ThirdPartyLibs/Gwen/Controls/CrossSplitter.cpp"]\
  279. +["examples/ThirdPartyLibs/Gwen/Controls/DockBase.cpp"]\
  280. +["examples/ThirdPartyLibs/Gwen/Controls/DockedTabControl.cpp"]\
  281. +["examples/ThirdPartyLibs/Gwen/Controls/Dragger.cpp"]\
  282. +["examples/ThirdPartyLibs/Gwen/Controls/GroupBox.cpp"]\
  283. +["examples/ThirdPartyLibs/Gwen/Controls/HSVColorPicker.cpp"]\
  284. +["examples/ThirdPartyLibs/Gwen/Controls/HorizontalScrollBar.cpp"]\
  285. +["examples/ThirdPartyLibs/Gwen/Controls/ImagePanel.cpp"]\
  286. +["examples/ThirdPartyLibs/Gwen/Controls/HorizontalSlider.cpp"]\
  287. +["examples/ThirdPartyLibs/Gwen/Controls/Label.cpp"]\
  288. +["examples/ThirdPartyLibs/Gwen/Controls/LabelClickable.cpp"]\
  289. +["examples/ThirdPartyLibs/Gwen/Controls/ListBox.cpp"]\
  290. +["examples/ThirdPartyLibs/Gwen/Controls/MenuItem.cpp"]\
  291. +["examples/ThirdPartyLibs/Gwen/Controls/Menu.cpp"]\
  292. +["examples/ThirdPartyLibs/Gwen/Controls/MenuStrip.cpp"]\
  293. +["examples/ThirdPartyLibs/Gwen/Controls/NumericUpDown.cpp"]\
  294. +["examples/ThirdPartyLibs/Gwen/Controls/PanelListPanel.cpp"]\
  295. +["examples/ThirdPartyLibs/Gwen/Controls/ProgressBar.cpp"]\
  296. +["examples/ThirdPartyLibs/Gwen/Controls/Properties.cpp"]\
  297. +["examples/ThirdPartyLibs/Gwen/Controls/RadioButton.cpp"]\
  298. +["examples/ThirdPartyLibs/Gwen/Controls/RadioButtonController.cpp"]\
  299. +["examples/ThirdPartyLibs/Gwen/Controls/ResizableControl.cpp"]\
  300. +["examples/ThirdPartyLibs/Gwen/Controls/Resizer.cpp"]\
  301. +["examples/ThirdPartyLibs/Gwen/Controls/RichLabel.cpp"]\
  302. +["examples/ThirdPartyLibs/Gwen/Controls/ScrollBar.cpp"]\
  303. +["examples/ThirdPartyLibs/Gwen/Controls/ScrollBarBar.cpp"]\
  304. +["examples/ThirdPartyLibs/Gwen/Controls/ScrollBarButton.cpp"]\
  305. +["examples/ThirdPartyLibs/Gwen/Controls/ScrollControl.cpp"]\
  306. +["examples/ThirdPartyLibs/Gwen/Controls/Slider.cpp"]\
  307. +["examples/ThirdPartyLibs/Gwen/Controls/SplitterBar.cpp"]\
  308. +["examples/ThirdPartyLibs/Gwen/Controls/TabButton.cpp"]\
  309. +["examples/ThirdPartyLibs/Gwen/Controls/TabControl.cpp"]\
  310. +["examples/ThirdPartyLibs/Gwen/Controls/TabStrip.cpp"]\
  311. +["examples/ThirdPartyLibs/Gwen/Controls/Text.cpp"]\
  312. +["examples/ThirdPartyLibs/Gwen/Controls/TextBox.cpp"]\
  313. +["examples/ThirdPartyLibs/Gwen/Controls/TextBoxNumeric.cpp"]\
  314. +["examples/ThirdPartyLibs/Gwen/Controls/TreeControl.cpp"]\
  315. +["examples/ThirdPartyLibs/Gwen/Controls/TreeNode.cpp"]\
  316. +["examples/ThirdPartyLibs/Gwen/Controls/VerticalScrollBar.cpp"]\
  317. +["examples/ThirdPartyLibs/Gwen/Controls/VerticalSlider.cpp"]\
  318. +["examples/ThirdPartyLibs/Gwen/Controls/WindowControl.cpp"]\
  319. +["examples/ThirdPartyLibs/Gwen/Controls/Dialog/FileOpen.cpp"]\
  320. +["examples/ThirdPartyLibs/Gwen/Controls/Dialog/FileSave.cpp"]\
  321. +["examples/ThirdPartyLibs/Gwen/Controls/Dialog/Query.cpp"]\
  322. +["examples/ThirdPartyLibs/Gwen/Platforms/Null.cpp"]\
  323. +["examples/ThirdPartyLibs/Gwen/Platforms/Windows.cpp"]\
  324. +["examples/ThirdPartyLibs/Gwen/Renderers/OpenGL_DebugFont.cpp"]\
  325. +["Extras/VHACD/test/src/main_vhacd.cpp"] \
  326. +["Extras/VHACD/src/VHACD.cpp"] \
  327. +["Extras/VHACD/src/vhacdICHull.cpp"] \
  328. +["Extras/VHACD/src/vhacdManifoldMesh.cpp"] \
  329. +["Extras/VHACD/src/vhacdMesh.cpp"] \
  330. +["Extras/VHACD/src/vhacdVolume.cpp"]
  331. egl_renderer_sources = \
  332. ["examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp"]\
  333. +["examples/SharedMemory/plugins/eglPlugin/eglRendererPlugin.cpp"]\
  334. +["examples/Importers/ImportColladaDemo/LoadMeshFromCollada.cpp"]\
  335. +["examples/Importers/ImportObjDemo/LoadMeshFromObj.cpp"]\
  336. +["examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp"]\
  337. +["examples/Importers/ImportObjDemo/Wavefront2GLInstanceGraphicsShape.cpp"]\
  338. +["examples/TinyRenderer/geometry.cpp"]\
  339. +["examples/TinyRenderer/model.cpp"]\
  340. +["examples/TinyRenderer/tgaimage.cpp"]\
  341. +["examples/TinyRenderer/our_gl.cpp"]\
  342. +["examples/TinyRenderer/TinyRenderer.cpp"]\
  343. +["examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp"]\
  344. +["examples/ThirdPartyLibs/stb_image/stb_image.cpp"]\
  345. +["examples/ThirdPartyLibs/stb_image/stb_image_write.cpp"]\
  346. +["examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp"]\
  347. +["examples/OpenGLWindow/SimpleCamera.cpp"]\
  348. +["examples/Utils/b3Clock.cpp"]\
  349. +["examples/Utils/b3ResourcePath.cpp"]\
  350. +["src/BulletCollision/CollisionShapes/btShapeHull.cpp"]\
  351. +["src/BulletCollision/CollisionShapes/btConvexHullShape.cpp"]\
  352. +["src/BulletCollision/CollisionShapes/btBoxShape.cpp"]\
  353. +["src/BulletCollision/CollisionShapes/btSphereShape.cpp"]\
  354. +["src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp"]\
  355. +["src/BulletCollision/CollisionShapes/btConvexShape.cpp"]\
  356. +["src/BulletCollision/CollisionShapes/btCollisionShape.cpp"]\
  357. +["src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp"]\
  358. +["src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp"]\
  359. +["src/Bullet3Common/b3Logging.cpp"]\
  360. +["src/LinearMath/btAlignedAllocator.cpp"]\
  361. +["src/LinearMath/btConvexHull.cpp"]\
  362. +["src/LinearMath/btConvexHullComputer.cpp"] \
  363. +["src/LinearMath/btGeometryUtil.cpp"]\
  364. +["src/LinearMath/btQuickprof.cpp"] \
  365. +["src/LinearMath/btThreads.cpp"] \
  366. +["src/Bullet3Common/b3AlignedAllocator.cpp"] \
  367. +["examples/ThirdPartyLibs/glad/gl.c"]\
  368. +["examples/OpenGLWindow/GLInstancingRenderer.cpp"]\
  369. +["examples/OpenGLWindow/GLRenderToTexture.cpp"] \
  370. +["examples/OpenGLWindow/LoadShader.cpp"]
  371. if 'BT_USE_EGL' in CXX_FLAGS:
  372. sources += ['examples/ThirdPartyLibs/glad/egl.c']
  373. sources += ['examples/OpenGLWindow/EGLOpenGLWindow.cpp']
  374. if _platform == "linux" or _platform == "linux2":
  375. libraries = ['dl', 'pthread']
  376. CXX_FLAGS += '-D_LINUX '
  377. CXX_FLAGS += '-DGLEW_STATIC '
  378. CXX_FLAGS += '-DGLEW_INIT_OPENGL11_FUNCTIONS=1 '
  379. CXX_FLAGS += '-DGLEW_DYNAMIC_LOAD_ALL_GLX_FUNCTIONS=1 '
  380. CXX_FLAGS += '-DDYNAMIC_LOAD_X11_FUNCTIONS '
  381. CXX_FLAGS += '-DHAS_SOCKLEN_T '
  382. CXX_FLAGS += '-fno-inline-functions-called-once '
  383. CXX_FLAGS += '-fvisibility=hidden '
  384. CXX_FLAGS += '-fvisibility-inlines-hidden '
  385. EGL_CXX_FLAGS += '-DBT_USE_EGL '
  386. EGL_CXX_FLAGS += '-fPIC ' # for plugins
  387. sources = sources + ["examples/ThirdPartyLibs/enet/unix.c"]\
  388. +["examples/OpenGLWindow/X11OpenGLWindow.cpp"]\
  389. +["examples/ThirdPartyLibs/glad/gl.c"]\
  390. +["examples/ThirdPartyLibs/glad/glx.c"]
  391. include_dirs += ["examples/ThirdPartyLibs/optionalX11"]
  392. if 'BT_USE_EGL' in EGL_CXX_FLAGS:
  393. egl_renderer_sources = egl_renderer_sources\
  394. +["examples/OpenGLWindow/EGLOpenGLWindow.cpp"]\
  395. +['examples/ThirdPartyLibs/glad/egl.c']
  396. else:
  397. egl_renderer_sources = egl_renderer_sources\
  398. +["examples/OpenGLWindow/X11OpenGLWindow.cpp"]\
  399. +["examples/ThirdPartyLibs/glad/glx.c"]
  400. elif _platform == "win32":
  401. print("win32!")
  402. libraries = ['Ws2_32', 'Winmm', 'User32', 'Opengl32', 'kernel32', 'glu32', 'Gdi32', 'Comdlg32']
  403. CXX_FLAGS += '-DWIN32 '
  404. CXX_FLAGS += '-DGLEW_STATIC '
  405. sources = sources + ["examples/ThirdPartyLibs/enet/win32.c"]\
  406. +["examples/OpenGLWindow/Win32Window.cpp"]\
  407. +["examples/OpenGLWindow/Win32OpenGLWindow.cpp"]\
  408. +["examples/ThirdPartyLibs/glad/gl.c"]
  409. elif _platform == "darwin":
  410. print("darwin!")
  411. os.environ['LDFLAGS'] = '-framework Cocoa -mmacosx-version-min=10.7 -stdlib=libc++ -framework OpenGL'
  412. CXX_FLAGS += '-DB3_NO_PYTHON_FRAMEWORK '
  413. CXX_FLAGS += '-DHAS_SOCKLEN_T '
  414. CXX_FLAGS += '-D_DARWIN '
  415. # CXX_FLAGS += '-framework Cocoa '
  416. sources = sources + ["examples/ThirdPartyLibs/enet/unix.c"]\
  417. +["examples/OpenGLWindow/MacOpenGLWindow.cpp"]\
  418. +["examples/ThirdPartyLibs/glad/gl.c"]\
  419. +["examples/OpenGLWindow/MacOpenGLWindowObjC.m"]
  420. else:
  421. print("bsd!")
  422. libraries = ['GL', 'GLEW', 'pthread']
  423. os.environ['LDFLAGS'] = '-L/usr/X11R6/lib'
  424. CXX_FLAGS += '-D_BSD '
  425. CXX_FLAGS += '-I/usr/X11R6/include '
  426. CXX_FLAGS += '-DHAS_SOCKLEN_T '
  427. CXX_FLAGS += '-fno-inline-functions-called-once'
  428. sources = ["examples/ThirdPartyLibs/enet/unix.c"]\
  429. +["examples/OpenGLWindow/X11OpenGLWindow.cpp"]\
  430. +["examples/ThirdPartyLibs/glad/gl.c"]\
  431. + sources
  432. setup_py_dir = os.path.dirname(os.path.realpath(__file__))
  433. need_files = []
  434. datadir = "examples/pybullet/gym/pybullet_data"
  435. hh = setup_py_dir + "/" + datadir
  436. for root, dirs, files in os.walk(hh):
  437. for fn in files:
  438. ext = os.path.splitext(fn)[1][1:]
  439. 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 gin npy '.split(
  440. ):
  441. fn = root + "/" + fn
  442. need_files.append(fn[1 + len(hh):])
  443. print("found resource files: %i" % len(need_files))
  444. for n in need_files:
  445. print("-- %s" % n)
  446. print("packages")
  447. print(find_packages('examples/pybullet/gym'))
  448. print("-----")
  449. extensions = []
  450. pybullet_ext = Extension(
  451. "pybullet",
  452. sources=sources,
  453. libraries=libraries,
  454. extra_compile_args=CXX_FLAGS.split(),
  455. include_dirs=include_dirs + [
  456. "src", "examples/ThirdPartyLibs", "examples/ThirdPartyLibs/glad",
  457. "examples/ThirdPartyLibs/enet/include", "examples/ThirdPartyLibs/clsocket/src",
  458. "Extras/VHACD/inc", "Extras/VHACD/public",
  459. ])
  460. extensions.append(pybullet_ext)
  461. if 'BT_USE_EGL' in EGL_CXX_FLAGS:
  462. eglRender = Extension(
  463. "eglRenderer",
  464. sources=egl_renderer_sources,
  465. libraries=libraries,
  466. extra_compile_args=(CXX_FLAGS + EGL_CXX_FLAGS).split(),
  467. include_dirs=include_dirs + [
  468. "src", "examples", "examples/ThirdPartyLibs", "examples/ThirdPartyLibs/glad",
  469. "examples/ThirdPartyLibs/enet/include", "examples/ThirdPartyLibs/clsocket/src"
  470. ])
  471. extensions.append(eglRender)
  472. setup(
  473. name='pybullet',
  474. version='3.2.5',
  475. description=
  476. 'Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning',
  477. long_description=
  478. '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.',
  479. url='https://github.com/bulletphysics/bullet3',
  480. author='Erwin Coumans, Yunfei Bai, Jasmine Hsu',
  481. author_email='[email protected]',
  482. license='zlib',
  483. platforms='any',
  484. keywords=[
  485. 'game development', 'virtual reality', 'physics simulation', 'robotics',
  486. 'collision detection', 'opengl'
  487. ],
  488. ext_modules=extensions,
  489. classifiers=[
  490. 'Development Status :: 5 - Production/Stable',
  491. 'License :: OSI Approved :: zlib/libpng License',
  492. 'Operating System :: Microsoft :: Windows', 'Operating System :: POSIX :: Linux',
  493. 'Operating System :: MacOS', 'Intended Audience :: Science/Research',
  494. "Programming Language :: Python", 'Programming Language :: Python :: 2.7',
  495. 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5',
  496. 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7',
  497. 'Programming Language :: Python :: 3.8', 'Topic :: Games/Entertainment :: Simulation',
  498. 'Topic :: Scientific/Engineering :: Artificial Intelligence',
  499. 'Framework :: Robot Framework'
  500. ],
  501. package_dir={'': 'examples/pybullet/gym'},
  502. packages=[x for x in find_packages('examples/pybullet/gym')],
  503. package_data={'pybullet_data': need_files})