9e303ef71c
Both client and server are supported on native builds (as usual). SSL server is still not supported, but will soon be possible with this new library. The API stays the same, we just need to work out potential issues due to this big library switch.
113 lines
3.7 KiB
Python
113 lines
3.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import('env')
|
|
Import('env_modules')
|
|
|
|
# Thirdparty source files
|
|
|
|
env_ws = env_modules.Clone()
|
|
|
|
if env['builtin_libwebsockets'] and not env["platform"] == "javascript": # already builtin for javascript
|
|
thirdparty_dir = "#thirdparty/libwebsockets/"
|
|
helper_dir = "win32helpers/"
|
|
thirdparty_sources = [
|
|
|
|
"core/alloc.c",
|
|
"core/context.c",
|
|
"core/libwebsockets.c",
|
|
"core/output.c",
|
|
"core/pollfd.c",
|
|
"core/service.c",
|
|
|
|
"event-libs/poll/poll.c",
|
|
|
|
"misc/base64-decode.c",
|
|
"misc/lejp.c",
|
|
"misc/sha-1.c",
|
|
|
|
"roles/h1/ops-h1.c",
|
|
"roles/http/header.c",
|
|
"roles/http/client/client.c",
|
|
"roles/http/client/client-handshake.c",
|
|
"roles/http/server/fops-zip.c",
|
|
"roles/http/server/lejp-conf.c",
|
|
"roles/http/server/parsers.c",
|
|
"roles/http/server/server.c",
|
|
"roles/listen/ops-listen.c",
|
|
"roles/pipe/ops-pipe.c",
|
|
"roles/raw/ops-raw.c",
|
|
|
|
"roles/ws/client-ws.c",
|
|
"roles/ws/client-parser-ws.c",
|
|
"roles/ws/ops-ws.c",
|
|
"roles/ws/server-ws.c",
|
|
|
|
"tls/tls.c",
|
|
"tls/tls-client.c",
|
|
"tls/tls-server.c",
|
|
|
|
"tls/mbedtls/wrapper/library/ssl_cert.c",
|
|
"tls/mbedtls/wrapper/library/ssl_pkey.c",
|
|
"tls/mbedtls/wrapper/library/ssl_stack.c",
|
|
"tls/mbedtls/wrapper/library/ssl_methods.c",
|
|
"tls/mbedtls/wrapper/library/ssl_lib.c",
|
|
"tls/mbedtls/wrapper/library/ssl_x509.c",
|
|
"tls/mbedtls/wrapper/platform/ssl_port.c",
|
|
"tls/mbedtls/wrapper/platform/ssl_pm.c",
|
|
"tls/mbedtls/lws-genhash.c",
|
|
"tls/mbedtls/mbedtls-client.c",
|
|
"tls/mbedtls/lws-genrsa.c",
|
|
"tls/mbedtls/ssl.c",
|
|
"tls/mbedtls/mbedtls-server.c"
|
|
]
|
|
|
|
if env["platform"] == "android": # Builtin getifaddrs
|
|
thirdparty_sources += ["misc/getifaddrs.c"]
|
|
|
|
if env["platform"] == "windows" or env["platform"] == "uwp": # Winsock
|
|
thirdparty_sources += ["plat/lws-plat-win.c", helper_dir + "getopt.c", helper_dir + "getopt_long.c", helper_dir + "gettimeofday.c"]
|
|
else: # Unix socket
|
|
thirdparty_sources += ["plat/lws-plat-unix.c"]
|
|
|
|
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
|
|
|
env_lws.Prepend(CPPPATH=[thirdparty_dir])
|
|
|
|
if env['builtin_mbedtls']:
|
|
mbedtls_includes = "#thirdparty/mbedtls/include"
|
|
env_lws.Prepend(CPPPATH=[mbedtls_includes])
|
|
|
|
wrapper_includes = ["#thirdparty/libwebsockets/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=[thirdparty_dir + helper_dir])
|
|
|
|
if env["platform"] == "uwp":
|
|
env_lws.Append(CPPDEFINES=["LWS_MINGW_SUPPORT"])
|
|
|
|
env_thirdparty = env_lws.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
env_thirdparty.add_source_files(env.modules_sources, thirdparty_sources)
|
|
|
|
wslay_dir = "#thirdparty/wslay/"
|
|
wslay_sources = [
|
|
"wslay_net.c",
|
|
"wslay_event.c",
|
|
"wslay_queue.c",
|
|
"wslay_stack.c",
|
|
"wslay_frame.c",
|
|
]
|
|
wslay_sources = [wslay_dir + s for s in wslay_sources]
|
|
env_ws.Prepend(CPPPATH=[wslay_dir + "includes/"])
|
|
env_ws.Append(CPPFLAGS=["-DHAVE_CONFIG_H"])
|
|
if env["platform"] == "windows" or env["platform"] == "uwp":
|
|
env_ws.Append(CPPFLAGS=["-DHAVE_WINSOCK2_H"])
|
|
else:
|
|
env_ws.Append(CPPFLAGS=["-DHAVE_NETINET_IN_H"])
|
|
env_wslay = env_ws.Clone()
|
|
env_wslay.disable_warnings()
|
|
env_wslay.add_source_files(env.modules_sources, wslay_sources)
|
|
|
|
env_ws.add_source_files(env.modules_sources, "*.cpp")
|