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.
112 lines
3.7 KiB
Python
112 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")
|