Build and run tests on Windows via Clang/Makefile
This commit is contained in:
@@ -3,6 +3,39 @@ name: C++ CI
|
|||||||
on: [push]
|
on: [push]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
|
build_windows:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- name: Clone source
|
||||||
|
run: git clone --recursive https://github.com/uNetworking/uWebSockets.git
|
||||||
|
- uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
- name: Build hammer_test
|
||||||
|
run: |
|
||||||
|
cd uWebSockets
|
||||||
|
vcpkg install libuv:x64-windows
|
||||||
|
cp C:\vcpkg\installed\x64-windows\bin\uv.dll uv.dll
|
||||||
|
$Env:CFLAGS='-D WIN32_LEAN_AND_MEAN -I C:/vcpkg/packages/libuv_x64-windows/include'
|
||||||
|
$Env:LDFLAGS='-L C:/vcpkg/packages/libuv_x64-windows/lib'
|
||||||
|
$Env:CC='clang'
|
||||||
|
$Env:CXX='clang++'
|
||||||
|
$Env:WITH_LIBUV='1'
|
||||||
|
$Env:EXEC_SUFFIX='.exe'
|
||||||
|
$Env:WITH_ZLIB='0'
|
||||||
|
$Env:WITH_LTO='0'
|
||||||
|
make -C tests
|
||||||
|
make
|
||||||
|
ls
|
||||||
|
.\HelloWorld.exe &
|
||||||
|
sleep 1
|
||||||
|
curl.exe -v http://localhost:3000/
|
||||||
|
curl.exe -v http://localhost:3000/
|
||||||
|
curl.exe -v http://localhost:3000/
|
||||||
|
curl.exe -v http://localhost:3000/
|
||||||
|
curl.exe -v http://localhost:3000/
|
||||||
|
Stop-Process -Name HelloWorld
|
||||||
|
|
||||||
|
|
||||||
build_linux:
|
build_linux:
|
||||||
|
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
|||||||
@@ -1,7 +1,19 @@
|
|||||||
|
# By default we use LTO, but Windows does not support it
|
||||||
|
ifneq ($(WITH_LTO),0)
|
||||||
|
override CXXFLAGS += -flto
|
||||||
|
endif
|
||||||
|
|
||||||
|
# By default we use zlib but you can build without it (disables permessage-deflate)
|
||||||
|
ifneq ($(WITH_ZLIB),0)
|
||||||
|
override LDFLAGS += -lz
|
||||||
|
else
|
||||||
|
override CXXFLAGS += -DUWS_NO_ZLIB
|
||||||
|
endif
|
||||||
|
|
||||||
EXAMPLE_FILES := Http3Server Broadcast HelloWorld Crc32 ServerName EchoServer BroadcastingEchoServer UpgradeSync UpgradeAsync
|
EXAMPLE_FILES := Http3Server Broadcast HelloWorld Crc32 ServerName EchoServer BroadcastingEchoServer UpgradeSync UpgradeAsync
|
||||||
THREADED_EXAMPLE_FILES := HelloWorldThreaded EchoServerThreaded
|
THREADED_EXAMPLE_FILES := HelloWorldThreaded EchoServerThreaded
|
||||||
override CXXFLAGS += -lpthread -Wpedantic -Wall -Wextra -Wsign-conversion -Wconversion -std=c++2a -Isrc -IuSockets/src
|
override CXXFLAGS += -Wpedantic -Wall -Wextra -Wsign-conversion -Wconversion -std=c++2a -Isrc -IuSockets/src
|
||||||
override LDFLAGS += uSockets/*.o -lz
|
override LDFLAGS += uSockets/*.o
|
||||||
|
|
||||||
DESTDIR ?=
|
DESTDIR ?=
|
||||||
prefix ?= /usr/local
|
prefix ?= /usr/local
|
||||||
@@ -60,14 +72,14 @@ endif
|
|||||||
.PHONY: examples
|
.PHONY: examples
|
||||||
examples:
|
examples:
|
||||||
$(MAKE) -C uSockets; \
|
$(MAKE) -C uSockets; \
|
||||||
for FILE in $(EXAMPLE_FILES); do $(CXX) -flto -O3 $(CXXFLAGS) examples/$$FILE.cpp -o $$FILE $(LDFLAGS) & done; \
|
for FILE in $(EXAMPLE_FILES); do $(CXX) -O3 $(CXXFLAGS) examples/$$FILE.cpp -o $$FILE$(EXEC_SUFFIX) $(LDFLAGS) & done; \
|
||||||
for FILE in $(THREADED_EXAMPLE_FILES); do $(CXX) -pthread -flto -O3 $(CXXFLAGS) examples/$$FILE.cpp -o $$FILE $(LDFLAGS) & done; \
|
for FILE in $(THREADED_EXAMPLE_FILES); do $(CXX) -pthread -O3 $(CXXFLAGS) examples/$$FILE.cpp -o $$FILE$(EXEC_SUFFIX) $(LDFLAGS) & done; \
|
||||||
wait
|
wait
|
||||||
|
|
||||||
.PHONY: capi
|
.PHONY: capi
|
||||||
capi:
|
capi:
|
||||||
$(MAKE) -C uSockets
|
$(MAKE) -C uSockets
|
||||||
$(CXX) -shared -fPIC -flto -O3 $(CXXFLAGS) capi/App.cpp -o capi.so $(LDFLAGS)
|
$(CXX) -shared -fPIC -O3 $(CXXFLAGS) capi/App.cpp -o capi.so $(LDFLAGS)
|
||||||
$(CXX) capi/example.c -O3 capi.so -o example
|
$(CXX) capi/example.c -O3 capi.so -o example
|
||||||
|
|
||||||
install:
|
install:
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
#include <string_view>
|
#include <string_view>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace uWS {
|
namespace uWS {
|
||||||
|
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ static inline size_t formatMessage(char *dst, const char *src, size_t length, Op
|
|||||||
|
|
||||||
// essentially this is only a parser
|
// essentially this is only a parser
|
||||||
template <const bool isServer, typename Impl>
|
template <const bool isServer, typename Impl>
|
||||||
struct WIN32_EXPORT WebSocketProtocol {
|
struct WebSocketProtocol {
|
||||||
public:
|
public:
|
||||||
static const unsigned int SHORT_MESSAGE_HEADER = isServer ? 6 : 2;
|
static const unsigned int SHORT_MESSAGE_HEADER = isServer ? 6 : 2;
|
||||||
static const unsigned int MEDIUM_MESSAGE_HEADER = isServer ? 8 : 4;
|
static const unsigned int MEDIUM_MESSAGE_HEADER = isServer ? 8 : 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user