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