mirror of
https://github.com/godotengine/webrtc-native.git
synced 2026-01-02 09:48:12 +03:00
Compare commits
12 Commits
1.0.0-beta
...
1.0.0-beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35bdd5efa7 | ||
|
|
90aaa0b82e | ||
|
|
16f311844b | ||
|
|
dfb34df36e | ||
|
|
9715e73ae4 | ||
|
|
2e9a25bb39 | ||
|
|
6067addd96 | ||
|
|
a3fbd33464 | ||
|
|
d697901f81 | ||
|
|
3eb7d0aa3b | ||
|
|
ecec40f59e | ||
|
|
37a289addf |
20
SConstruct
20
SConstruct
@@ -79,6 +79,15 @@ else:
|
||||
ARGUMENTS["ios_min_version"] = "11.0"
|
||||
env = SConscript("godot-cpp/SConstruct").Clone()
|
||||
|
||||
# Should probably go to upstream godot-cpp.
|
||||
# We let SCons build its default ENV as it includes OS-specific things which we don't
|
||||
# want to have to pull in manually.
|
||||
# Then we prepend PATH to make it take precedence, while preserving SCons' own entries.
|
||||
env.PrependENVPath("PATH", os.getenv("PATH"))
|
||||
env.PrependENVPath("PKG_CONFIG_PATH", os.getenv("PKG_CONFIG_PATH"))
|
||||
if "TERM" in os.environ: # Used for colored output.
|
||||
env["ENV"]["TERM"] = os.environ["TERM"]
|
||||
|
||||
# Patch mingw SHLIBSUFFIX.
|
||||
if env["platform"] == "windows" and env["use_mingw"]:
|
||||
env["SHLIBSUFFIX"] = ".dll"
|
||||
@@ -100,19 +109,20 @@ env.Append(BUILDERS={
|
||||
|
||||
# SSL
|
||||
ssl = env.BuildOpenSSL(env.Dir(builders.get_ssl_build_dir(env)), env.Dir(builders.get_ssl_source_dir(env)))
|
||||
env.Depends(ssl, env.File("builders.py"))
|
||||
env.Depends(ssl, [env.File("builders.py"), env.File(builders.get_ssl_source_dir(env) + "/VERSION.dat")])
|
||||
env.NoCache(ssl) # Needs refactoring to properly cache generated headers.
|
||||
|
||||
env.Prepend(CPPPATH=[builders.get_ssl_include_dir(env)])
|
||||
env.Prepend(LIBPATH=[builders.get_ssl_build_dir(env)])
|
||||
env.Append(LIBS=[ssl])
|
||||
env.Append(LIBS=[builders.get_ssl_libs(env)])
|
||||
|
||||
# RTC
|
||||
rtc = env.BuildLibDataChannel(env.Dir(builders.get_rtc_build_dir(env)), [env.Dir(builders.get_rtc_source_dir(env))] + ssl)
|
||||
env.Depends(rtc, env.File("builders.py"))
|
||||
env.Depends(rtc, [env.File("builders.py"), env.File(builders.get_rtc_source_dir(env) + "/CMakeLists.txt")])
|
||||
|
||||
env.Append(LIBPATH=[builders.get_rtc_build_dir(env)])
|
||||
env.Append(CPPPATH=[builders.get_rtc_include_dir(env)])
|
||||
env.Prepend(LIBS=[rtc])
|
||||
env.Prepend(LIBS=[builders.get_rtc_libs(env)])
|
||||
|
||||
# Our includes and sources
|
||||
env.Append(CPPPATH=["src/"])
|
||||
@@ -130,7 +140,7 @@ else:
|
||||
sources.append("src/init_gdnative.cpp")
|
||||
add_sources(sources, "src/net/", "cpp")
|
||||
|
||||
env.Depends(sources, [ssl, rtc])
|
||||
env.Depends(sources, [builders.get_ssl_libs(env), builders.get_rtc_libs(env)])
|
||||
|
||||
# Make the shared library
|
||||
result_name = "webrtc_native{}{}".format(env["suffix"], env["SHLIBSUFFIX"])
|
||||
|
||||
53
builders.py
53
builders.py
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
from SCons.Defaults import Mkdir
|
||||
from SCons.Script import Environment
|
||||
|
||||
|
||||
@@ -26,6 +27,17 @@ def get_rtc_include_dir(env):
|
||||
return get_rtc_source_dir(env) + "/include"
|
||||
|
||||
|
||||
def get_rtc_libs(env):
|
||||
bdir = get_rtc_build_dir(env)
|
||||
libs = [
|
||||
"libdatachannel-static.a",
|
||||
"deps/libjuice/libjuice-static.a",
|
||||
"deps/libsrtp/libsrtp2.a",
|
||||
"deps/usrsctp/usrsctplib/libusrsctp.a"
|
||||
]
|
||||
return [env.File(bdir + "/" + lib) for lib in libs]
|
||||
|
||||
|
||||
def get_ssl_source_dir(env):
|
||||
return get_deps_dir(env) + "/openssl"
|
||||
|
||||
@@ -42,19 +54,20 @@ def get_ssl_include_dir(env):
|
||||
return get_ssl_install_dir(env) + "/include"
|
||||
|
||||
|
||||
def get_ssl_libs(env):
|
||||
bdir = get_ssl_build_dir(env)
|
||||
return [env.File(bdir + "/" + lib) for lib in ["libssl.a", "libcrypto.a"]]
|
||||
|
||||
|
||||
def ssl_emitter(target, source, env):
|
||||
build_dir = get_ssl_build_dir(env)
|
||||
libs = ["libssl.a", "libcrypto.a"]
|
||||
install_dir = get_ssl_install_dir(env)
|
||||
ssl_include = os.path.join(source[0].abspath, "include")
|
||||
return [env.File(build_dir + "/" + l) for l in libs], source
|
||||
return get_ssl_libs(env), source
|
||||
|
||||
|
||||
def ssl_action(target, source, env):
|
||||
build_dir = get_ssl_build_dir(env)
|
||||
source_dir = source[0].abspath
|
||||
|
||||
ssl_env = Environment()
|
||||
ssl_env = env.Clone()
|
||||
install_dir = get_ssl_install_dir(env)
|
||||
args = [
|
||||
"no-ssl3",
|
||||
@@ -126,8 +139,8 @@ def ssl_action(target, source, env):
|
||||
|
||||
jobs = env.GetOption("num_jobs")
|
||||
ssl_env.Execute([
|
||||
"mkdir -p " + build_dir, # TODO python?
|
||||
("cd %s && %s/Configure " % (build_dir, source_dir)) + " ".join(args),
|
||||
Mkdir(build_dir),
|
||||
"cd %s && perl %s/Configure %s" % (build_dir, source_dir, " ".join(['"%s"' % a for a in args])),
|
||||
"make -C %s -j%s" % (build_dir, jobs),
|
||||
"make -C %s install_sw install_ssldirs -j%s" % (build_dir, jobs),
|
||||
]
|
||||
@@ -136,28 +149,20 @@ def ssl_action(target, source, env):
|
||||
|
||||
|
||||
def rtc_emitter(target, source, env):
|
||||
build_dir = get_rtc_build_dir(env)
|
||||
libs = ["libdatachannel-static.a", "libjuice-static.a", "libsrtp2.a", "libusrsctp.a"]
|
||||
lib_paths = [
|
||||
build_dir,
|
||||
os.path.join(build_dir, "deps/libjuice"),
|
||||
os.path.join(build_dir, "deps/libsrtp"),
|
||||
os.path.join(build_dir, "deps/usrsctp/usrsctplib"),
|
||||
]
|
||||
return [env.File(lib_paths[i] + "/" + libs[i]) for i in range(len(libs))], source
|
||||
return get_rtc_libs(env), source
|
||||
|
||||
|
||||
def rtc_action(target, source, env):
|
||||
build_dir = get_rtc_build_dir(env)
|
||||
source_dir = source[0].abspath
|
||||
args = [
|
||||
"cmake",
|
||||
"-B",
|
||||
build_dir,
|
||||
"-DUSE_NICE=0",
|
||||
"-DNO_WEBSOCKET=1",
|
||||
#"-DNO_MEDIA=1", # Windows builds fail without it.
|
||||
"-DNO_EXAMPLES=1",
|
||||
"-DNO_WEBSOCKET=1",
|
||||
"-DNO_TESTS=1",
|
||||
"-DOPENSSL_USE_STATIC_LIBS=1",
|
||||
"-DOPENSSL_INCLUDE_DIR=%s" % get_ssl_include_dir(env),
|
||||
@@ -215,7 +220,8 @@ def rtc_action(target, source, env):
|
||||
if env["arch"] == "x86_32":
|
||||
if env["use_mingw"]:
|
||||
args.extend([
|
||||
"-G 'Unix Makefiles'",
|
||||
"-G",
|
||||
"Unix Makefiles",
|
||||
"-DCMAKE_C_COMPILER=i686-w64-mingw32-gcc",
|
||||
"-DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++",
|
||||
"-DCMAKE_SYSTEM_NAME=Windows",
|
||||
@@ -223,7 +229,8 @@ def rtc_action(target, source, env):
|
||||
else:
|
||||
if env["use_mingw"]:
|
||||
args.extend([
|
||||
"-G 'Unix Makefiles'",
|
||||
"-G",
|
||||
"Unix Makefiles",
|
||||
"-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc",
|
||||
"-DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++",
|
||||
"-DCMAKE_SYSTEM_NAME=Windows"
|
||||
@@ -231,10 +238,10 @@ def rtc_action(target, source, env):
|
||||
|
||||
args.append(source_dir)
|
||||
jobs = env.GetOption("num_jobs")
|
||||
rtc_env = Environment()
|
||||
rtc_env = env.Clone()
|
||||
rtc_env.Execute([
|
||||
"cmake " + " ".join(args),
|
||||
"cmake --build %s -t datachannel-static -j%s" % (build_dir, jobs),
|
||||
" ".join(['"%s"' % a for a in args]),
|
||||
"cmake --build %s -t datachannel-static -j%s" % (build_dir, jobs)
|
||||
]
|
||||
)
|
||||
return None
|
||||
|
||||
2
deps/libdatachannel
vendored
2
deps/libdatachannel
vendored
Submodule deps/libdatachannel updated: 93847128f1...1ec2a2f519
2
deps/openssl
vendored
2
deps/openssl
vendored
Submodule deps/openssl updated: ad4910fad2...19cc035b6c
Submodule godot-cpp updated: 1044251a9e...576bd17285
@@ -6,8 +6,8 @@ entry_symbol = "webrtc_extension_init"
|
||||
|
||||
linux.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.linux.template_debug.x86_64.so"
|
||||
linux.debug.x86_32 = "res://webrtc/lib/libwebrtc_native.linux.template_debug.x86_32.so"
|
||||
osx.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.osx.template_debug.x86_64.dylib"
|
||||
osx.debug.arm64 = "res://webrtc/lib/libwebrtc_native.osx.template_debug.arm64.dylib"
|
||||
macos.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.macos.template_debug.x86_64.dylib"
|
||||
macos.debug.arm64 = "res://webrtc/lib/libwebrtc_native.macos.template_debug.arm64.dylib"
|
||||
windows.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.windows.template_debug.x86_64.dll"
|
||||
windows.debug.x86_32 = "res://webrtc/lib/libwebrtc_native.windows.template_debug.x86_32.dll"
|
||||
android.debug.arm64 = "res://webrtc/lib/libwebrtc_native.android.template_debug.arm64.so"
|
||||
@@ -17,8 +17,8 @@ ios.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.ios.template_debug.x86_64.
|
||||
|
||||
linux.release.x86_64 = "res://webrtc/lib/libwebrtc_native.linux.template_release.x86_64.so"
|
||||
linux.release.x86_32 = "res://webrtc/lib/libwebrtc_native.linux.template_release.x86_32.so"
|
||||
osx.release.x86_64 = "res://webrtc/lib/libwebrtc_native.osx.template_release.x86_64.dylib"
|
||||
osx.release.arm64 = "res://webrtc/lib/libwebrtc_native.osx.template_release.arm64.dylib"
|
||||
macos.release.x86_64 = "res://webrtc/lib/libwebrtc_native.macos.template_release.x86_64.dylib"
|
||||
macos.release.arm64 = "res://webrtc/lib/libwebrtc_native.macos.template_release.arm64.dylib"
|
||||
windows.release.x86_64 = "res://webrtc/lib/libwebrtc_native.windows.template_release.x86_64.dll"
|
||||
windows.release.x86_32 = "res://webrtc/lib/libwebrtc_native.windows.template_release.x86_32.dll"
|
||||
android.release.arm64 = "res://webrtc/lib/libwebrtc_native.android.template_release.arm64.so"
|
||||
|
||||
Reference in New Issue
Block a user