virtualx-engine/modules/websocket/SCsub
Rémi Verschelde d52b70fb5e SCons: Always use env.Prepend for CPPPATH
Include paths are processed from left to right, so we use Prepend to
ensure that paths to bundled thirdparty files will have precedence over
system paths (e.g. `/usr/include` should have lowest priority).
2019-04-30 13:12:06 +02:00

98 lines
3.5 KiB
Python

#!/usr/bin/env python
Import('env')
Import('env_modules')
# Thirdparty source files
env_lws = env_modules.Clone()
if env['builtin_libwebsockets'] and not env["platform"] == "javascript": # already builtin for javascript
thirdparty_dir = "#thirdparty/libwebsockets/"
helper_dir = "#thirdparty/libwebsockets/win32helpers/"
thirdparty_sources = [
"lib/core/adopt.c",
"lib/core/alloc.c",
"lib/core/connect.c",
"lib/core/context.c",
"lib/core/dummy-callback.c",
"lib/core/libwebsockets.c",
"lib/core/output.c",
"lib/core/pollfd.c",
"lib/core/service.c",
"lib/event-libs/poll/poll.c",
"lib/misc/base64-decode.c",
"lib/misc/lejp.c",
"lib/misc/sha-1.c",
"lib/roles/h1/ops-h1.c",
"lib/roles/http/header.c",
"lib/roles/http/client/client.c",
"lib/roles/http/client/client-handshake.c",
"lib/roles/http/server/fops-zip.c",
"lib/roles/http/server/lejp-conf.c",
"lib/roles/http/server/parsers.c",
"lib/roles/http/server/server.c",
"lib/roles/listen/ops-listen.c",
"lib/roles/pipe/ops-pipe.c",
"lib/roles/raw-skt/ops-raw-skt.c",
"lib/roles/raw-file/ops-raw-file.c",
"lib/roles/ws/client-ws.c",
"lib/roles/ws/client-parser-ws.c",
"lib/roles/ws/ops-ws.c",
"lib/roles/ws/server-ws.c",
"lib/tls/tls.c",
"lib/tls/tls-client.c",
"lib/tls/tls-server.c",
"lib/tls/mbedtls/wrapper/library/ssl_cert.c",
"lib/tls/mbedtls/wrapper/library/ssl_pkey.c",
"lib/tls/mbedtls/wrapper/library/ssl_stack.c",
"lib/tls/mbedtls/wrapper/library/ssl_methods.c",
"lib/tls/mbedtls/wrapper/library/ssl_lib.c",
"lib/tls/mbedtls/wrapper/library/ssl_x509.c",
"lib/tls/mbedtls/wrapper/platform/ssl_port.c",
"lib/tls/mbedtls/wrapper/platform/ssl_pm.c",
"lib/tls/mbedtls/lws-genhash.c",
"lib/tls/mbedtls/mbedtls-client.c",
"lib/tls/mbedtls/lws-genrsa.c",
"lib/tls/mbedtls/ssl.c",
"lib/tls/mbedtls/mbedtls-server.c"
]
if env["platform"] == "android": # Builtin getifaddrs
thirdparty_sources += ["lib/misc/getifaddrs.c"]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
if env["platform"] == "windows" or env["platform"] == "uwp": # Winsock
thirdparty_sources += Glob(thirdparty_dir + "lib/plat/windows/*.c") + [helper_dir + src for src in ["getopt.c", "getopt_long.c", "gettimeofday.c"]]
else: # Unix socket
thirdparty_sources += Glob(thirdparty_dir + "lib/plat/unix/*.c")
env_lws.Prepend(CPPPATH=[thirdparty_dir + 'include/'])
if env['builtin_mbedtls']:
mbedtls_includes = "#thirdparty/mbedtls/include"
env_lws.Prepend(CPPPATH=[mbedtls_includes])
wrapper_includes = ["#thirdparty/libwebsockets/lib/tls/mbedtls/wrapper/include/" + inc for inc in ["internal", "openssl", "platform", ""]]
env_lws.Prepend(CPPPATH=wrapper_includes)
if env["platform"] == "windows" or env["platform"] == "uwp":
env_lws.Prepend(CPPPATH=[helper_dir])
if env["platform"] == "uwp":
env_lws.Append(CPPFLAGS=["/DLWS_MINGW_SUPPORT"])
env_thirdparty = env_lws.Clone()
env_thirdparty.disable_warnings()
env_thirdparty.Prepend(CPPPATH=[thirdparty_dir + 'lib/'])
env_thirdparty.add_source_files(env.modules_sources, thirdparty_sources)
env_lws.add_source_files(env.modules_sources, "*.cpp")