summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2019-04-17 16:46:17 +0200
committerGitHub <noreply@github.com>2019-04-17 16:46:17 +0200
commitf2cf2e5340c1aa20516aea4863b8f7a46f317bb6 (patch)
tree2b11d97531d127257e4beda2312b97cf2a84acca
parentc30ddd9b222cc8d1c12ac077541f563bd9ca505b (diff)
parent1763d278e0b06f26cce8990c4787fe740c712255 (diff)
downloadfork-godot-webrtc-native-f2cf2e5340c1aa20516aea4863b8f7a46f317bb6.tar.gz
fork-godot-webrtc-native-f2cf2e5340c1aa20516aea4863b8f7a46f317bb6.tar.bz2
fork-godot-webrtc-native-f2cf2e5340c1aa20516aea4863b8f7a46f317bb6.zip
Merge pull request #2 from Faless/build/refactor
Refactor Scons build script
-rw-r--r--SConstruct54
-rw-r--r--lib/godot-cpp/debug/.gitignore (renamed from webrtc/include/.gitignore)0
-rw-r--r--lib/godot-cpp/release/.gitignore (renamed from webrtc/lib/.gitignore)0
-rw-r--r--lib/webrtc/.gitignore1
-rw-r--r--lib/webrtc/lib/linux/.gitignore2
-rw-r--r--lib/webrtc/lib/windows/.gitignore2
6 files changed, 41 insertions, 18 deletions
diff --git a/SConstruct b/SConstruct
index 355f6d9..31dda00 100644
--- a/SConstruct
+++ b/SConstruct
@@ -10,25 +10,50 @@ def add_sources(sources, dirpath, extension):
env = Environment()
+customs = ['custom.py']
+opts = Variables(customs, ARGUMENTS)
+
+opts.Add(BoolVariable('use_llvm', 'Use the LLVM compiler', False))
+opts.Add(EnumVariable('target', "Compilation target", 'debug', ('debug', 'release')))
+
+# Update environment (parse options)
+opts.Update(env)
+
+target = env['target']
+
host_platform = platform.system()
target_platform = ARGUMENTS.get('p', ARGUMENTS.get('platform', 'linux'))
target_arch = ARGUMENTS.get('a', ARGUMENTS.get('arch', '64'))
-# default to debug build, must be same setting as used for cpp_bindings
-target = ARGUMENTS.get('target', 'debug')
# Local dependency paths, adapt them to your setup
godot_headers = ARGUMENTS.get('headers', '../godot_headers')
-godot_cpp = ARGUMENTS.get('godot-cpp', '../godot-cpp')
+godot_cpp_headers = ARGUMENTS.get('godot_cpp_headers', '../godot-cpp/include')
+godot_cpp_lib_dir = ARGUMENTS.get('godot_cpp_lib_dir', 'lib/godot-cpp')
result_path = 'bin'
result_name = 'webrtc_native'
+# Convenience check to enforce the use_llvm overrides when CXX is clang(++)
+if 'CXX' in env and 'clang' in os.path.basename(env['CXX']):
+ env['use_llvm'] = True
+
if target_platform == 'linux':
result_name += '.linux.' + target + '.' + target_arch
env['CXX']='g++'
- if ARGUMENTS.get('use_llvm', 'no') == 'yes':
- env['CXX'] = 'clang++'
- env.Append(CCFLAGS = [ '-fPIC', '-g', '-O3', '-std=c++14', '-Wwrite-strings' ])
+ # LLVM
+ if env['use_llvm']:
+ if ('clang++' not in os.path.basename(env['CXX'])):
+ env['CC'] = 'clang'
+ env["CXX"] = "clang++"
+ env["LINK"] = "clang++"
+
+ if (env["target"] == "debug"):
+ env.Prepend(CCFLAGS=['-g3'])
+ env.Append(LINKFLAGS=['-rdynamic'])
+ else:
+ env.Prepend(CCFLAGS=['-O3'])
+
+ env.Append(CCFLAGS=['-fPIC', '-std=c++11'])
if target_arch == '32':
env.Append(CCFLAGS = [ '-m32' ])
@@ -65,7 +90,7 @@ elif target_platform == 'windows':
env.Append(LINKFLAGS = [ '--static', '-Wl,--no-undefined', '-static-libgcc', '-static-libstdc++' ])
elif target_platform == 'osx':
- if ARGUMENTS.get('use_llvm', 'no') == 'yes':
+ if env['use_llvm']:
env['CXX'] = 'clang++'
# Only 64-bits is supported for OS X
@@ -81,14 +106,14 @@ else:
# Godot CPP bindings
env.Append(CPPPATH=[godot_headers])
-env.Append(CPPPATH=[godot_cpp + '/include', godot_cpp + '/include/core', godot_cpp + '/include/gen'])
-env.Append(LIBPATH=[godot_cpp + '/bin'])
+env.Append(CPPPATH=[godot_cpp_headers, godot_cpp_headers + '/core', godot_cpp_headers + '/gen'])
+env.Append(LIBPATH=[godot_cpp_lib_dir + '/' + target])
env.Append(LIBS=['godot-cpp'])
# WebRTC stuff
-webrtc_dir = "webrtc"
+webrtc_dir = "lib/webrtc"
lib_name = 'libwebrtc_full'
-lib_path = webrtc_dir + '/lib'
+lib_path = webrtc_dir + '/lib/' + target_platform
if target_arch == '64':
lib_path += '/x64'
@@ -101,7 +126,6 @@ else:
lib_path += '/Release'
env.Append(CPPPATH=[webrtc_dir + "/include"])
-#env.Append(CPPPATH=[lib_path])
if target_platform == "linux":
env.Append(LIBS=[lib_name])
@@ -126,12 +150,6 @@ elif target_platform == "osx":
env.Append(LIBS=[lib_name])
env.Append(LIBPATH=[lib_path])
-# Godot CPP bindings
-env.Append(CPPPATH=[godot_headers])
-env.Append(CPPPATH=[godot_cpp + '/include', godot_cpp + '/include/core', godot_cpp + '/include/gen'])
-env.Append(LIBPATH=[godot_cpp + '/bin'])
-env.Append(LIBS=['godot-cpp'])
-
# Our includes and sources
env.Append(CPPPATH=['src/'])
sources = []
diff --git a/webrtc/include/.gitignore b/lib/godot-cpp/debug/.gitignore
index d6b7ef3..d6b7ef3 100644
--- a/webrtc/include/.gitignore
+++ b/lib/godot-cpp/debug/.gitignore
diff --git a/webrtc/lib/.gitignore b/lib/godot-cpp/release/.gitignore
index d6b7ef3..d6b7ef3 100644
--- a/webrtc/lib/.gitignore
+++ b/lib/godot-cpp/release/.gitignore
diff --git a/lib/webrtc/.gitignore b/lib/webrtc/.gitignore
new file mode 100644
index 0000000..08f514e
--- /dev/null
+++ b/lib/webrtc/.gitignore
@@ -0,0 +1 @@
+include/
diff --git a/lib/webrtc/lib/linux/.gitignore b/lib/webrtc/lib/linux/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/lib/webrtc/lib/linux/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/lib/webrtc/lib/windows/.gitignore b/lib/webrtc/lib/windows/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/lib/webrtc/lib/windows/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore