diff options
-rw-r--r-- | SConstruct | 44 | ||||
-rw-r--r-- | misc/gdnlib.tres | 13 |
2 files changed, 40 insertions, 17 deletions
@@ -16,7 +16,26 @@ def get_arch_dir(name): return 'x64' return name +def gen_gdnative_lib(target, source, env): + for t in target: + with open(t.srcnode().path, 'w') as w: + w.write(source[0].get_contents().replace('{GDNATIVE_PATH}', os.path.splitext(t.name)[0]).replace('{TARGET}', env['target'])) + + env = Environment() + +target_arch = ARGUMENTS.get('b', ARGUMENTS.get('bits', '64')) +target_platform = ARGUMENTS.get('p', ARGUMENTS.get('platform', 'linux')) +if target_platform == 'windows': + # This makes sure to keep the session environment variables on windows, + # that way you can run scons in a vs 2017 prompt and it will find all the required tools + if (target_arch == '64'): + env = Environment(ENV = os.environ, TARGET_ARCH='amd64') + else: + env = Environment(ENV = os.environ, TARGET_ARCH='x86') + +env.Append(BUILDERS={'GDNativeLibBuilder': Builder(action=gen_gdnative_lib)}) + customs = ['custom.py'] opts = Variables(customs, ARGUMENTS) @@ -29,22 +48,17 @@ 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')) # Local dependency paths, adapt them to your setup godot_headers = ARGUMENTS.get('headers', '../godot_headers') 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' +result_path = os.path.join('bin', 'webrtc' if env['target'] == 'release' else 'webrtc_debug', 'lib') # 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++' # LLVM @@ -70,17 +84,7 @@ if target_platform == 'linux': env.Append(LINKFLAGS = [ '-m64' ]) elif target_platform == 'windows': - # This makes sure to keep the session environment variables on windows, - # that way you can run scons in a vs 2017 prompt and it will find all the required tools - if (target_arch == '64'): - env = Environment(ENV = os.environ, TARGET_ARCH='amd64') - else: - env = Environment(ENV = os.environ, TARGET_ARCH='x86') - - result_name += '.windows.' + target + '.' + target_arch - if host_platform == 'Windows': - #result_name += '.lib' env.Append(LINKFLAGS = [ '/WX' ]) if target == 'debug': @@ -102,7 +106,6 @@ elif target_platform == 'osx': # Only 64-bits is supported for OS X target_arch = '64' - result_name += '.osx.' + target + '.' + target_arch env.Append(CCFLAGS = [ '-g','-O3', '-std=c++14', '-arch', 'x86_64' ]) env.Append(LINKFLAGS = [ '-arch', 'x86_64', '-framework', 'Cocoa', '-Wl,-undefined,dynamic_lookup' ]) @@ -168,5 +171,12 @@ suffix = '.%s.%s' % (target, target_arch) env["SHOBJSUFFIX"] = suffix + env["SHOBJSUFFIX"] # Make the shared library +result_name = 'webrtc_native.%s.%s.%s' % (target_platform, target, target_arch) library = env.SharedLibrary(target=os.path.join(result_path, result_name), source=sources) Default(library) + +# GDNativeLibrary +gdnlib = 'webrtc' +if target != 'release': + gdnlib += '_debug' +Default(env.GDNativeLibBuilder([os.path.join('bin', gdnlib, gdnlib + '.gdns')], ['misc/gdnlib.tres'])) diff --git a/misc/gdnlib.tres b/misc/gdnlib.tres new file mode 100644 index 0000000..6c44cc7 --- /dev/null +++ b/misc/gdnlib.tres @@ -0,0 +1,13 @@ +[gd_resource type="GDNativeLibrary" format=2] + +[resource] +singleton = true +reloadable = false +entry/Windows.64 = "res://{GDNATIVE_PATH}/lib/webrtc_native.windows.{TARGET}.64.dll" +entry/Windows.32 = "res://{GDNATIVE_PATH}/lib/webrtc_native.windows.{TARGET}.32.dll" +entry/X11.64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.linux.{TARGET}.64.so" +entry/X11.32 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.linux.{TARGET}.32.so" +dependency/Windows.64 = [ ] +dependency/Windows.32 = [ ] +dependency/X11.64 = [ ] +dependency/X11.32 = [ ] |