diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2022-10-17 00:51:32 +0200 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2022-10-17 20:59:33 +0200 |
commit | 690b31e7dd8d4583c50c1f5c60fde3c6888ff7bf (patch) | |
tree | 00454cbbbc84ff6bc3992d50d677fe72bb0e369a | |
parent | 9b0a5d8b4677e6e10d7fb7f96ba469738add47e9 (diff) | |
download | fork-godot-webrtc-native-690b31e7dd8d4583c50c1f5c60fde3c6888ff7bf.tar.gz fork-godot-webrtc-native-690b31e7dd8d4583c50c1f5c60fde3c6888ff7bf.tar.bz2 fork-godot-webrtc-native-690b31e7dd8d4583c50c1f5c60fde3c6888ff7bf.zip |
[Upstream] Update to Godot beta 3.
Update build targets.
Move release script out of CI yaml.
Disable debug CI builds for Godot 3.x since they are mostly used for
debugging the extension itself.
-rw-r--r-- | .github/workflows/build_release.yml | 43 | ||||
-rw-r--r-- | SConstruct | 36 | ||||
-rw-r--r-- | builders.py | 6 | ||||
m--------- | godot-cpp | 0 | ||||
-rwxr-xr-x | misc/scripts/package_release.sh | 32 | ||||
-rw-r--r-- | misc/webrtc.gdextension | 31 | ||||
-rw-r--r-- | src/WebRTCLibDataChannel.hpp | 2 | ||||
-rw-r--r-- | src/WebRTCLibPeerConnection.hpp | 2 |
8 files changed, 96 insertions, 56 deletions
diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 73e604e..ab7ee01 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -59,7 +59,7 @@ jobs: arch: 'x86_64' gdnative_flags: 'ios_arch=x86_64' sconsflags: 'ios_simulator=true' - os: 'macos-latest' + os: 'macos-11' cache-name: ios-x86_64-simulator - platform: ios arch: 'arm64' @@ -162,21 +162,17 @@ jobs: scons --version cmake --version - - name: Compile Extension - debug - ${{ matrix.platform }} - ${{ matrix.arch }} - run: | - scons target=debug generate_bindings=yes - - - name: Compile GDNative - debug - ${{ matrix.platform }} - ${{ matrix.arch }} + - name: Compile Extension - template_debug - ${{ matrix.platform }} - ${{ matrix.arch }} run: | - scons target=debug generate_bindings=yes ${{ matrix.gdnative_flags }} godot_version=3 + scons target=template_debug generate_bindings=yes - - name: Compile Extension - release - ${{ matrix.platform }} - ${{ matrix.arch }} + - name: Compile Extension - template_release - ${{ matrix.platform }} - ${{ matrix.arch }} run: | - scons target=release + scons target=template_release - name: Compile GDNative - release ${{ matrix.platform }} - ${{ matrix.arch }} run: | - scons target=release ${{ matrix.gdnative_flags }} godot_version=3 + scons target=release generate_bindings=yes ${{ matrix.gdnative_flags }} godot_version=3 - uses: actions/upload-artifact@v3 with: @@ -208,28 +204,15 @@ jobs: cp deps/libdatachannel/deps/plog/LICENSE artifacts/LICENSE.plog - name: Package artifacts for release + env: + DESTINATION: "release" run: | mkdir release - cd release - - ls -R - - for version in extension gdnative - do - for name in webrtc webrtc_debug - do - destdir="${version}/${name}" - mkdir -p ${destdir}/lib - find ../artifacts -wholename "*/${destdir}/lib/*" | xargs cp -t ${destdir}/lib/ - find ../artifacts -wholename "*/${destdir}/${name}.tres" -or -wholename "*/${destdir}/${name}.gdextension" | head -n 1 | xargs cp -t ${destdir}/ - find ../artifacts -wholename "*/LICENSE*" | xargs cp -t ${destdir}/ - cd ${version} - zip -r ../godot-${version}-${name}.zip ${name} - cd .. - done - done - - ls -R + + VERSION="extension" TYPE="webrtc" ./misc/scripts/package_release.sh + VERSION="gdnative" TYPE="webrtc" ./misc/scripts/package_release.sh + + ls -R release - uses: actions/upload-artifact@v3 with: @@ -26,13 +26,13 @@ if env["godot_version"] == "3": if "platform" in ARGUMENTS and ARGUMENTS["platform"] == "macos": ARGUMENTS["platform"] = "osx" # compatibility with old osx name - env = SConscript("godot-cpp-3.x/SConstruct") - scons_cache_path = os.environ.get("SCONS_CACHE") if scons_cache_path is not None: CacheDir(scons_cache_path) Decider("MD5") + env = SConscript("godot-cpp-3.x/SConstruct") + # Patch base env replace_flags(env["CCFLAGS"], { "-mios-simulator-version-min=10.0": "-mios-simulator-version-min=11.0", @@ -57,7 +57,7 @@ if env["godot_version"] == "3": if env["platform"] in ["windows", "linux"]: env["arch"] = "x86_32" if env["bits"] == "32" else "x86_64" env["arch_suffix"] = env["arch"] - elif env["platform"] == "osx": + elif env["platform"] == "macos": env["arch"] = env["macos_arch"] env["arch_suffix"] = env["arch"] elif env["platform"] == "ios": @@ -71,6 +71,10 @@ if env["godot_version"] == "3": "x86_64": "x86_64", }[env["android_arch"]] env["arch_suffix"] = env["arch"] + + target_compat = "template_" + env["target"] + env["suffix"] = ".{}.{}.{}".format(env["platform"], target_compat, env["arch_suffix"]) + env["debug_symbols"] = False else: ARGUMENTS["ios_min_version"] = "11.0" env = SConscript("godot-cpp/SConstruct").Clone() @@ -82,7 +86,10 @@ if env["platform"] == "windows" and env["use_mingw"]: opts.Update(env) target = env["target"] -result_path = os.path.join("bin", "gdnative" if env["godot_version"] == "3" else "extension", "webrtc" if env["target"] == "release" else "webrtc_debug") +if env["godot_version"] == "3": + result_path = os.path.join("bin", "gdnative", "webrtc" if env["target"] == "release" else "webrtc_debug") +else: + result_path = os.path.join("bin", "extension", "webrtc") # Dependencies deps_source_dir = "deps" @@ -93,6 +100,7 @@ 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.Prepend(CPPPATH=[builders.get_ssl_include_dir(env)]) env.Prepend(LIBPATH=[builders.get_ssl_build_dir(env)]) @@ -100,6 +108,7 @@ env.Append(LIBS=[ssl]) # 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.Append(LIBPATH=[builders.get_rtc_build_dir(env)]) env.Append(CPPPATH=[builders.get_rtc_include_dir(env)]) @@ -124,7 +133,7 @@ else: env.Depends(sources, [ssl, rtc]) # Make the shared library -result_name = "webrtc_native.{}.{}.{}{}".format(env["platform"], env["target"], env["arch_suffix"], env["SHLIBSUFFIX"]) +result_name = "webrtc_native{}{}".format(env["suffix"], env["SHLIBSUFFIX"]) env.Depends(sources, ssl) if env["platform"] == "windows" and env["use_mingw"]: @@ -134,12 +143,13 @@ library = env.SharedLibrary(target=os.path.join(result_path, "lib", result_name) Default(library) # GDNativeLibrary -gdnlib = "webrtc" -if target != "release": - gdnlib += "_debug" -ext = ".tres" if env["godot_version"] == "3" else ".gdextension" -extfile = env.Substfile(os.path.join(result_path, gdnlib + ext), "misc/webrtc" + ext, SUBST_DICT={ - "{GDNATIVE_PATH}": gdnlib, - "{TARGET}": env["target"], -}) +if env["godot_version"] == "3": + gdnlib = "webrtc" if target != "debug" else "webrtc_debug" + ext = ".tres" + extfile = env.Substfile(os.path.join(result_path, gdnlib + ext), "misc/webrtc" + ext, SUBST_DICT={ + "{GDNATIVE_PATH}": gdnlib, + "{TARGET}": "template_" + env["target"], + }) +else: + extfile = env.InstallAs(os.path.join(result_path, "webrtc.gdextension"), "misc/webrtc.gdextension") Default(extfile) diff --git a/builders.py b/builders.py index 8f85cd3..284ac1e 100644 --- a/builders.py +++ b/builders.py @@ -11,7 +11,7 @@ def get_deps_dir(env): def get_deps_build_dir(env): - return get_deps_dir(env) + "/build/{}.{}.{}.dir".format(env["platform"], env["target"], env["arch_suffix"]) + return get_deps_dir(env) + "/build/build{}.{}.dir".format(env["suffix"], "RelWithDebInfo" if env["debug_symbols"] else "Release") def get_rtc_source_dir(env): @@ -63,7 +63,7 @@ def ssl_action(target, source, env): "--prefix=%s" % install_dir, "--openssldir=%s" % install_dir, ] - if env["target"] == "debug": + if env["debug_symbols"]: args.append("-d") if env["platform"] != "windows": @@ -163,7 +163,7 @@ def rtc_action(target, source, env): "-DOPENSSL_INCLUDE_DIR=%s" % get_ssl_include_dir(env), "-DOPENSSL_SSL_LIBRARY=%s/libssl.a" % get_ssl_build_dir(env), "-DOPENSSL_CRYPTO_LIBRARY=%s/libcrypto.a" % get_ssl_build_dir(env), - "-DCMAKE_BUILD_TYPE=%s" % ("Release" if env["target"] == "release" else "Debug"), + "-DCMAKE_BUILD_TYPE=%s" % ("RelWithDebInfo" if env["debug_symbols"] else "Release"), ] if env["platform"] == "android": abi = { diff --git a/godot-cpp b/godot-cpp -Subproject fa4d18f21cfae319b8f16a1604742cfec602207 +Subproject 1044251a9e85e4c5cb484466c50f6cc309a1bfb diff --git a/misc/scripts/package_release.sh b/misc/scripts/package_release.sh new file mode 100755 index 0000000..a08f441 --- /dev/null +++ b/misc/scripts/package_release.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -e +set -x + +ARTIFACTS=${ARTIFACTS:-"artifacts"} +DESTINATION=${DESTIONATION:-"release"} +VERSION=${VERSION:-"extension"} +TYPE=${TYPE:-"webrtc"} + +mkdir -p ${DESTINATION} +ls -R ${DESTINATION} + +DESTDIR="${DESTINATION}/${VERSION}/${TYPE}" + +mkdir -p ${DESTDIR}/lib + +find "${ARTIFACTS}" -wholename "*/${VERSION}/${TYPE}/lib/*" | xargs cp -t "${DESTDIR}/lib/" +find "${ARTIFACTS}" -wholename "*/LICENSE*" | xargs cp -t "${DESTDIR}/" + +if [ $VERSION = "extension" ]; then + find "${ARTIFACTS}" -wholename "*/${VERSION}/${TYPE}/${TYPE}.gdextension" | head -n 1 | xargs cp -t "${DESTDIR}/" +else + find "${ARTIFACTS}" -wholename "*/${VERSION}/${TYPE}/${TYPE}.tres" | head -n 1 | xargs cp -t "${DESTDIR}/" +fi + +CURDIR=$(pwd) +cd "${DESTINATION}/${VERSION}" +zip -r ../godot-${VERSION}-${TYPE}.zip ${TYPE} +cd "$CURDIR" + +ls -R ${DESTINATION} diff --git a/misc/webrtc.gdextension b/misc/webrtc.gdextension index d8db63f..886cf86 100644 --- a/misc/webrtc.gdextension +++ b/misc/webrtc.gdextension @@ -4,13 +4,24 @@ entry_symbol = "webrtc_extension_init" [libraries] -linux.x86_64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.linux.{TARGET}.x86_64.so" -linux.x86_32 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.linux.{TARGET}.x86_32.so" -osx.x86_64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.osx.{TARGET}.x86_64.dylib" -osx.arm64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.osx.{TARGET}.arm64.dylib" -windows.x86_64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.windows.{TARGET}.x86_64.dll" -windows.x86_32 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.windows.{TARGET}.x86_32.dll" -android.arm64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.android.{TARGET}.arm64.so" -android.x86_64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.android.{TARGET}.x86_64.so" -ios.arm64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.ios.{TARGET}.arm64.dylib" -ios.x86_64 = "res://{GDNATIVE_PATH}/lib/libwebrtc_native.ios.{TARGET}.x86_64.simulator.dylib" +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" +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" +android.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.android.template_debug.x86_64.so" +ios.debug.arm64 = "res://webrtc/lib/libwebrtc_native.ios.template_debug.arm64.dylib" +ios.debug.x86_64 = "res://webrtc/lib/libwebrtc_native.ios.template_debug.x86_64.simulator.dylib" + +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" +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" +android.release.x86_64 = "res://webrtc/lib/libwebrtc_native.android.template_release.x86_64.so" +ios.release.arm64 = "res://webrtc/lib/libwebrtc_native.ios.template_release.arm64.dylib" +ios.release.x86_64 = "res://webrtc/lib/libwebrtc_native.ios.template_release.x86_64.simulator.dylib" diff --git a/src/WebRTCLibDataChannel.hpp b/src/WebRTCLibDataChannel.hpp index 758e018..2525002 100644 --- a/src/WebRTCLibDataChannel.hpp +++ b/src/WebRTCLibDataChannel.hpp @@ -40,6 +40,8 @@ #define GDCLASS(arg1, arg2) GODOT_CLASS(arg1, arg2) #endif #else +#include <godot_cpp/core/binder_common.hpp> + #include <godot_cpp/classes/global_constants_binds.hpp> #include <godot_cpp/classes/web_rtc_data_channel_extension.hpp> #endif diff --git a/src/WebRTCLibPeerConnection.hpp b/src/WebRTCLibPeerConnection.hpp index 5709996..703a59c 100644 --- a/src/WebRTCLibPeerConnection.hpp +++ b/src/WebRTCLibPeerConnection.hpp @@ -40,6 +40,8 @@ #define GDCLASS(arg1, arg2) GODOT_CLASS(arg1, arg2) #endif #else +#include <godot_cpp/core/binder_common.hpp> + #include <godot_cpp/classes/global_constants_binds.hpp> #include <godot_cpp/classes/web_rtc_peer_connection_extension.hpp> #endif |