Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
[submodule "godot-cpp"]
path = godot-cpp
url = https://github.com/godotengine/godot-cpp
branch = 3.x
[submodule "thirdparty/git2/libgit2"]
path = thirdparty/git2/libgit2
url = https://github.com/libgit2/libgit2
ignore = untracked
[submodule "thirdparty/ssh2/libssh2"]
path = thirdparty/ssh2/libssh2
url = https://github.com/libssh2/libssh2
[submodule "thirdparty/openssl"]
path = thirdparty/openssl
url = https://github.com/openssl/openssl
[submodule "thirdparty/mbedtls"]
path = thirdparty/mbedtls
url = https://github.com/Mbed-TLS/mbedtls.git
15 changes: 6 additions & 9 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,19 @@ env.PrependENVPath("PATH", os.getenv("PATH")) # Prepend PATH, done upstream in
if env["platform"] == "windows" and env.get("is_msvc", False):
env.AppendUnique(LINKFLAGS=["/LTCG"])

# OpenSSL Builder
env.Tool("openssl", toolpath=["tools"])

# SSH2 Builder
env.Tool("cmake", toolpath=["tools"])
env.Tool("mbedtls", toolpath=["tools"])
env.Tool("ssh2", toolpath=["tools"])
env.Tool("git2", toolpath=["tools"])

opts.Update(env)

ssl = env.OpenSSL()
ssh2 = env.BuildSSH2(ssl)
ssl += ssh2
git2 = env.BuildGIT2(ssl)
mbedtls = env.BuildMbedTLS()
ssh2 = env.BuildSSH2(mbedtls)
mbedtls += ssh2
git2 = env.BuildGIT2(mbedtls)

Export("ssl")
Export("mbedtls")
Export("env")

SConscript("godot-git-plugin/SCsub")
Expand Down
4 changes: 2 additions & 2 deletions godot-git-plugin/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import os

env = {}
Import("env")
Import("ssl")
Import("mbedtls")

env["target_path"] = "../" + env["target_path"]

Expand All @@ -29,7 +29,7 @@ env.Append(CPPPATH=[".", "src/"])
env.Append(CPPPATH=["#thirdparty/git2/libgit2/include/"])

lib_sources = Glob("src/*.cpp")
env.Depends(lib_sources, ssl)
env.Depends(lib_sources, mbedtls)
library = env.SharedLibrary(
target=env["target_path"] +
"{}{}{}".format(env["target_name"], env["suffix"], env["SHLIBSUFFIX"]),
Expand Down
2 changes: 1 addition & 1 deletion thirdparty/git2/libgit2
Submodule libgit2 updated 606 files
1 change: 1 addition & 0 deletions thirdparty/mbedtls
Submodule mbedtls added at 22098d
1 change: 0 additions & 1 deletion thirdparty/openssl
Submodule openssl deleted from 2cf4e9
2 changes: 1 addition & 1 deletion thirdparty/ssh2/libssh2
Submodule libssh2 updated 417 files
22 changes: 10 additions & 12 deletions tools/git2.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@
def build_library(env, deps):
config = {
"CMAKE_BUILD_TYPE": "RelWithDebInfo" if env["debug_symbols"] else "Release",
"OPENSSL_USE_STATIC_LIBS": 1,
"OPENSSL_INCLUDE_DIR": env["SSL_INCLUDE"],
"OPENSSL_SSL_LIBRARY": env["SSL_LIBRARY"],
"OPENSSL_CRYPTO_LIBRARY": env["SSL_CRYPTO_LIBRARY"],
"OPENSSL_ROOT_DIR": env["SSL_INSTALL"],
"CMAKE_C_STANDARD": "99",
"USE_SHARED_MBEDTLS_LIBRARY": 0,
"USE_STATIC_MBEDTLS_LIBRARY": 1,
"MBEDTLS_LIBRARY": env["MBEDTLS_LIBRARY"],
"MBEDCRYPTO_LIBRARY": env["MBEDTLS_CRYPTO_LIBRARY"],
"MBEDX509_LIBRARY": env["MBEDTLS_X509_LIBRARY"],
"MBEDTLS_INCLUDE_DIR": env["MBEDTLS_INCLUDE"],
"BUILD_TESTS": 0,
"BUILD_CLI": 0,
"BUILD_EXAMPLES": 0,
"BUILD_FUZZERS": 0,
"USE_SSH": 1,
"USE_HTTPS": 1,
"USE_SHA1": 1,
"USE_SSH": "libssh2",
"USE_BUNDLED_ZLIB": 1,
"USE_HTTP_PARSER": "builtin",
"REGEX_BACKEND": "builtin",
"USE_HTTPS": "OpenSSL",
"USE_SHA1": "OpenSSL",
"USE_HTTPS": "mbedTLS",
"USE_SHA1": "mbedTLS",
"BUILD_SHARED_LIBS": 0,
"LINK_WITH_STATIC_LIBRARIES": 1,
"LIBSSH2_INCLUDE_DIR": env.Dir("#thirdparty/ssh2/libssh2/include").abspath,
Expand All @@ -33,8 +33,6 @@ def build_library(env, deps):

if env["platform"] != "windows":
config["CMAKE_C_FLAGS"] = "-fPIC"
else:
config["OPENSSL_ROOT_DIR"] = env["SSL_BUILD"]

is_msvc = env.get("is_msvc", False)
lib_ext = ".lib" if is_msvc else ".a"
Expand Down
69 changes: 69 additions & 0 deletions tools/mbedtls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
def build_library(env):
mbedtls_bin = env.Dir("bin/thirdparty/mbedtls/{}/{}/install".format(env["platform"], env["arch"]))
is_msvc = env.get("is_msvc", False)
c_flags = "-DMBEDTLS_SSL_DTLS_SRTP"
if env["platform"] == "linux":
# This is needed on some arch when building with the godot buildroot toolchain
c_flags += " -fPIC"
elif env["platform"] == "windows" and not is_msvc:
c_flags += " -D__USE_MINGW_ANSI_STDIO=0" # See https://github.com/Mbed-TLS/mbedtls/issues/10161

mbedtls_config = {
"CMAKE_BUILD_TYPE": "RelWithDebInfo" if env["debug_symbols"] else "Release",
"ENABLE_TESTING": 0,
"ENABLE_PROGRAMS": 0,
"CMAKE_INSTALL_PREFIX": env.Dir(mbedtls_bin).abspath,
"CMAKE_INSTALL_LIBDIR": "lib",
"CMAKE_C_FLAGS": c_flags,
"MBEDTLS_FATAL_WARNINGS": 0,
}
lib_ext = ".lib" if is_msvc else ".a"
lib_prefix = "" if is_msvc else "lib"
mbedtls_libs = [
"/install/lib/{}mbedtls{}".format(lib_prefix, lib_ext),
"/install/lib/{}mbedx509{}".format(lib_prefix, lib_ext),
"/install/lib/{}mbedcrypto{}".format(lib_prefix, lib_ext),
]

mbedtls_cmake_config = [
"/install/lib/cmake/MbedTLS/MbedTLSConfig.cmake",
"/install/lib/cmake/MbedTLS/MbedTLSConfigVersion.cmake",
"/install/lib/cmake/MbedTLS/MbedTLSTargets.cmake",
]

# Build libdatachannel
mbedtls = env.CMakeBuild(
env.Dir("bin/thirdparty/mbedtls/"),
env.Dir("thirdparty/mbedtls"),
cmake_options=mbedtls_config,
cmake_outputs=mbedtls_libs + mbedtls_cmake_config,
install=True,
)

# Configure env.
if env["platform"] == "windows":
env.PrependUnique(LIBS=["bcrypt", "ws2_32", "iphlpapi"])
if env["platform"] == "linux":
env.PrependUnique(LIBS=["pthread"])
env.Prepend(LIBS=list(filter(lambda f: str(f).endswith(lib_ext), mbedtls)))
env.Append(CPPPATH=[env.Dir("thirdparty/mbedtls/include")])

return mbedtls


def exists(env):
return "CMake" in env


def generate(env):
mbedtls_install_dir = "bin/thirdparty/mbedtls/{}/{}/install".format(env["platform"], env["arch"])
lib_ext = ".lib" if env.get("is_msvc", False) else ".a"
mbedtls = env.File(mbedtls_install_dir + "/lib/libmbedtls" + lib_ext)
crypto = env.File(mbedtls_install_dir + "/lib/libmbedcrypto" + lib_ext)
x509 = env.File(mbedtls_install_dir + "/lib/libmbedx509" + lib_ext)
includes = env.Dir("thirdparty/mbedtls/include")
env.AddMethod(build_library, "BuildMbedTLS")
env["MBEDTLS_LIBRARY"] = mbedtls.abspath
env["MBEDTLS_CRYPTO_LIBRARY"] = crypto.abspath
env["MBEDTLS_X509_LIBRARY"] = x509.abspath
env["MBEDTLS_INCLUDE"] = includes.abspath
Loading