Build and run tests on Windows via Clang/Makefile

This commit is contained in:
Alex Hultman
2022-11-02 06:38:14 +01:00
parent 9a82a52f2c
commit e1708b85a5
4 changed files with 52 additions and 6 deletions
+33
View File
@@ -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
+17 -5
View File
@@ -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:
+1
View File
@@ -29,6 +29,7 @@
#include <string_view>
#include <functional>
#include <set>
#include <string>
namespace uWS {
+1 -1
View File
@@ -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;