Build and run tests on Windows via Clang/Makefile
This commit is contained in:
@@ -3,6 +3,39 @@ name: C++ CI
|
||||
on: [push]
|
||||
|
||||
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:
|
||||
|
||||
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
|
||||
THREADED_EXAMPLE_FILES := HelloWorldThreaded EchoServerThreaded
|
||||
override CXXFLAGS += -lpthread -Wpedantic -Wall -Wextra -Wsign-conversion -Wconversion -std=c++2a -Isrc -IuSockets/src
|
||||
override LDFLAGS += uSockets/*.o -lz
|
||||
override CXXFLAGS += -Wpedantic -Wall -Wextra -Wsign-conversion -Wconversion -std=c++2a -Isrc -IuSockets/src
|
||||
override LDFLAGS += uSockets/*.o
|
||||
|
||||
DESTDIR ?=
|
||||
prefix ?= /usr/local
|
||||
@@ -60,14 +72,14 @@ endif
|
||||
.PHONY: examples
|
||||
examples:
|
||||
$(MAKE) -C uSockets; \
|
||||
for FILE in $(EXAMPLE_FILES); do $(CXX) -flto -O3 $(CXXFLAGS) examples/$$FILE.cpp -o $$FILE $(LDFLAGS) & done; \
|
||||
for FILE in $(THREADED_EXAMPLE_FILES); do $(CXX) -pthread -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 -O3 $(CXXFLAGS) examples/$$FILE.cpp -o $$FILE$(EXEC_SUFFIX) $(LDFLAGS) & done; \
|
||||
wait
|
||||
|
||||
.PHONY: capi
|
||||
capi:
|
||||
$(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
|
||||
|
||||
install:
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <string_view>
|
||||
#include <functional>
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
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
|
||||
template <const bool isServer, typename Impl>
|
||||
struct WIN32_EXPORT WebSocketProtocol {
|
||||
struct WebSocketProtocol {
|
||||
public:
|
||||
static const unsigned int SHORT_MESSAGE_HEADER = isServer ? 6 : 2;
|
||||
static const unsigned int MEDIUM_MESSAGE_HEADER = isServer ? 8 : 4;
|
||||
|
||||
Reference in New Issue
Block a user