summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-01-13 15:16:11 +0100
committerRémi Verschelde <rverschelde@gmail.com>2018-01-13 15:16:22 +0100
commite141845bfb3e12a9213c8682d5b2589ce5305f70 (patch)
tree25f7f08bd8e667a023583dfd6d13a9a83e9b8f5c
parentaf9c2f8b9c7ab85af386e8482f6e92b20e40905f (diff)
SCons: Allow unbundling bullet on Linux (only 2.87+)
-rw-r--r--SConstruct1
-rw-r--r--modules/bullet/SCsub21
-rw-r--r--modules/enet/SCsub4
-rw-r--r--platform/server/detect.py10
-rw-r--r--platform/x11/detect.py10
5 files changed, 32 insertions, 14 deletions
diff --git a/SConstruct b/SConstruct
index 9fced81f9c..7e82e582d0 100644
--- a/SConstruct
+++ b/SConstruct
@@ -171,6 +171,7 @@ opts.Add(BoolVariable('dev', "If yes, alias for verbose=yes warnings=all", False
opts.Add(EnumVariable('macports_clang', "Build using clang from MacPorts", 'no', ('no', '5.0', 'devel')))
# Thirdparty libraries
+opts.Add(BoolVariable('builtin_bullet', "Use the builtin bullet library", True))
opts.Add(BoolVariable('builtin_enet', "Use the builtin enet library", True))
opts.Add(BoolVariable('builtin_freetype', "Use the builtin freetype library", True))
opts.Add(BoolVariable('builtin_libogg', "Use the builtin libogg library", True))
diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub
index 6b1c38a265..d8d0b930a5 100644
--- a/modules/bullet/SCsub
+++ b/modules/bullet/SCsub
@@ -3,14 +3,15 @@
Import('env')
Import('env_modules')
-# build only version 2
-# Bullet 2.87
-
env_bullet = env_modules.Clone()
-thirdparty_dir = "#thirdparty/bullet/"
+# Thirdparty source files
+
+if env['builtin_bullet']:
+ # Build only version 2 for now (as of 2.87)
+ thirdparty_dir = "#thirdparty/bullet/"
-bullet2_src = [
+ bullet2_src = [
# BulletCollision
"BulletCollision/BroadphaseCollision/btAxisSweep3.cpp"
, "BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp"
@@ -181,14 +182,10 @@ bullet2_src = [
, "LinearMath/btVector3.cpp"
]
-bullet_sources = [thirdparty_dir + file for file in bullet2_src]
+ thirdparty_sources = [thirdparty_dir + file for file in bullet2_src]
-# include headers
-env_bullet.Append(CPPPATH=[thirdparty_dir])
-
-env_bullet.add_source_files(env.modules_sources, bullet_sources)
+ env_bullet.add_source_files(env.modules_sources, thirdparty_sources)
+ env_bullet.Append(CPPPATH=[thirdparty_dir])
# Godot source files
env_bullet.add_source_files(env.modules_sources, "*.cpp")
-
-Export('env')
diff --git a/modules/enet/SCsub b/modules/enet/SCsub
index 4790c5099f..7caeafa1d6 100644
--- a/modules/enet/SCsub
+++ b/modules/enet/SCsub
@@ -3,10 +3,10 @@
Import('env')
Import('env_modules')
-# Thirdparty source files
-
env_enet = env_modules.Clone()
+# Thirdparty source files
+
if env['builtin_enet']:
thirdparty_dir = "#thirdparty/enet/"
thirdparty_sources = [
diff --git a/platform/server/detect.py b/platform/server/detect.py
index 72c9c770e3..bc90a38e24 100644
--- a/platform/server/detect.py
+++ b/platform/server/detect.py
@@ -86,6 +86,16 @@ def configure(env):
if not env['builtin_libpng']:
env.ParseConfig('pkg-config libpng --cflags --libs')
+ if not env['builtin_bullet']:
+ # We need at least version 2.87
+ import subprocess
+ bullet_version = subprocess.check_output(['pkg-config', 'bullet', '--modversion']).strip()
+ if bullet_version < "2.87":
+ # Abort as system bullet was requested but too old
+ print("Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(bullet_version, "2.87"))
+ sys.exit(255)
+ env.ParseConfig('pkg-config bullet --cflags --libs')
+
if not env['builtin_enet']:
env.ParseConfig('pkg-config libenet --cflags --libs')
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index 478b42f9f7..1c6bada815 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -172,6 +172,16 @@ def configure(env):
if not env['builtin_libpng']:
env.ParseConfig('pkg-config libpng --cflags --libs')
+ if not env['builtin_bullet']:
+ # We need at least version 2.87
+ import subprocess
+ bullet_version = subprocess.check_output(['pkg-config', 'bullet', '--modversion']).strip()
+ if bullet_version < "2.87":
+ # Abort as system bullet was requested but too old
+ print("Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(bullet_version, "2.87"))
+ sys.exit(255)
+ env.ParseConfig('pkg-config bullet --cflags --libs')
+
if not env['builtin_enet']:
env.ParseConfig('pkg-config libenet --cflags --libs')