2018-11-10 03:23:49 +01:00
|
|
|
#
|
2020-03-29 22:05:31 +02:00
|
|
|
# This makefile is used for convenience, and wrap simple cmake commands
|
|
|
|
# You don't need to use it as an end user, it is more for developer.
|
|
|
|
#
|
|
|
|
# * work with docker (linux build)
|
|
|
|
# * execute the unittest
|
|
|
|
#
|
|
|
|
# The default target will install ws, the command line tool coming with
|
|
|
|
# IXWebSocket into /usr/local/bin
|
|
|
|
#
|
2018-11-10 03:23:49 +01:00
|
|
|
#
|
2019-02-23 05:49:26 +01:00
|
|
|
all: brew
|
2018-11-10 03:23:49 +01:00
|
|
|
|
2019-03-18 23:11:08 +01:00
|
|
|
install: brew
|
|
|
|
|
2019-04-21 20:41:37 +02:00
|
|
|
# Use -DCMAKE_INSTALL_PREFIX= to install into another location
|
2019-04-21 20:52:38 +02:00
|
|
|
# on osx it is good practice to make /usr/local user writable
|
|
|
|
# sudo chown -R `whoami`/staff /usr/local
|
2020-03-29 22:05:31 +02:00
|
|
|
#
|
|
|
|
# Release, Debug, MinSizeRel, RelWithDebInfo are the build types
|
|
|
|
#
|
2020-06-25 19:05:02 +02:00
|
|
|
# Default rule does not use python as that requires first time users to have Python3 installed
|
|
|
|
#
|
2019-02-22 07:05:30 +01:00
|
|
|
brew:
|
2020-04-29 20:53:56 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=1 .. ; ninja install)
|
2019-02-22 07:05:30 +01:00
|
|
|
|
2020-06-25 19:05:02 +02:00
|
|
|
# Docker default target. We've had problems with OpenSSL and TLS 1.3 (on the
|
2020-03-29 22:05:31 +02:00
|
|
|
# server side ?) and I can't work-around it easily, so we're using mbedtls on
|
|
|
|
# Linux for the SSL backend, which works great.
|
|
|
|
ws_mbedtls_install:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=MinSizeRel -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_WS=1 -DUSE_MBED_TLS=1 .. ; ninja install)
|
2020-03-29 22:05:31 +02:00
|
|
|
|
2019-05-16 16:01:15 +02:00
|
|
|
ws:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_WS=1 .. && ninja install)
|
2019-05-16 16:01:15 +02:00
|
|
|
|
2019-10-26 20:47:08 +02:00
|
|
|
ws_install:
|
2020-08-02 21:09:13 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=MinSizeRel -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_WS=1 .. -DUSE_TEST=0 && ninja install)
|
|
|
|
|
|
|
|
ws_install_release:
|
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=MinSizeRel -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_WS=1 .. -DUSE_TEST=0 && ninja install)
|
2019-10-26 20:47:08 +02:00
|
|
|
|
2020-08-15 00:08:37 +02:00
|
|
|
ws_openssl_install:
|
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_WS=1 -DUSE_OPEN_SSL=1 .. ; ninja install)
|
2019-09-30 00:34:58 +02:00
|
|
|
|
2019-10-01 03:21:20 +02:00
|
|
|
ws_mbedtls:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_WS=1 -DUSE_MBED_TLS=1 .. ; make -j 4)
|
2019-10-01 03:21:20 +02:00
|
|
|
|
2019-10-03 16:47:34 +02:00
|
|
|
ws_no_ssl:
|
|
|
|
mkdir -p build && (cd build ; cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_WS=1 .. ; make -j 4)
|
|
|
|
|
2020-08-14 06:20:42 +02:00
|
|
|
ws_no_python:
|
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=MinSizeRel -DUSE_TLS=1 -DUSE_WS=1 .. ; ninja install)
|
|
|
|
|
2019-04-21 20:47:57 +02:00
|
|
|
uninstall:
|
|
|
|
xargs rm -fv < build/install_manifest.txt
|
|
|
|
|
2019-08-20 18:21:30 +02:00
|
|
|
tag:
|
2019-12-07 01:44:05 +01:00
|
|
|
git tag v"`sh tools/extract_version.sh`"
|
2019-08-20 18:21:30 +02:00
|
|
|
|
2019-09-24 20:46:54 +02:00
|
|
|
xcode:
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=1 -GXcode && open ixwebsocket.xcodeproj
|
|
|
|
|
2019-10-02 00:43:37 +02:00
|
|
|
xcode_openssl:
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=1 -DUSE_OPEN_SSL=1 -GXcode && open ixwebsocket.xcodeproj
|
|
|
|
|
2018-12-15 01:28:11 +01:00
|
|
|
.PHONY: docker
|
2019-03-27 21:41:46 +01:00
|
|
|
|
2019-12-12 02:27:37 +01:00
|
|
|
NAME := ${DOCKER_REPO}/ws
|
2019-12-07 01:44:05 +01:00
|
|
|
TAG := $(shell sh tools/extract_version.sh)
|
2019-03-27 21:41:46 +01:00
|
|
|
IMG := ${NAME}:${TAG}
|
|
|
|
LATEST := ${NAME}:latest
|
|
|
|
BUILD := ${NAME}:build
|
|
|
|
|
2019-12-07 01:44:05 +01:00
|
|
|
print_version:
|
|
|
|
@echo 'IXWebSocket version =>' ${TAG}
|
|
|
|
|
2020-01-28 23:04:18 +01:00
|
|
|
set_version:
|
|
|
|
sh tools/update_version.sh ${VERSION}
|
|
|
|
|
2019-05-31 09:43:22 +02:00
|
|
|
docker_test:
|
|
|
|
docker build -f docker/Dockerfile.debian -t bsergean/ixwebsocket_test:build .
|
|
|
|
|
2018-11-10 03:23:49 +01:00
|
|
|
docker:
|
2019-10-26 20:47:08 +02:00
|
|
|
git clean -dfx
|
2019-03-27 21:41:46 +01:00
|
|
|
docker build -t ${IMG} .
|
|
|
|
docker tag ${IMG} ${BUILD}
|
|
|
|
|
|
|
|
docker_push:
|
|
|
|
docker tag ${IMG} ${LATEST}
|
|
|
|
docker push ${LATEST}
|
2019-11-18 22:46:11 +01:00
|
|
|
docker push ${IMG}
|
2018-11-10 03:23:49 +01:00
|
|
|
|
2020-03-31 01:08:47 +02:00
|
|
|
deploy: docker docker_push
|
2020-03-30 07:08:36 +02:00
|
|
|
|
2019-02-22 06:24:53 +01:00
|
|
|
run:
|
2019-05-31 09:43:22 +02:00
|
|
|
docker run --cap-add sys_ptrace --entrypoint=sh -it bsergean/ws:build
|
2018-11-10 03:23:49 +01:00
|
|
|
|
2019-02-21 03:59:07 +01:00
|
|
|
# this is helpful to remove trailing whitespaces
|
|
|
|
trail:
|
2019-03-01 06:54:03 +01:00
|
|
|
sh third_party/remote_trailing_whitespaces.sh
|
2019-02-21 03:59:07 +01:00
|
|
|
|
2019-05-30 17:46:50 +02:00
|
|
|
format:
|
2019-09-12 20:43:52 +02:00
|
|
|
clang-format -i `find test ixwebsocket ws -name '*.cpp' -o -name '*.h'`
|
2019-05-30 17:46:50 +02:00
|
|
|
|
2019-09-12 20:43:52 +02:00
|
|
|
# That target is used to start a node server, but isn't required as we have
|
2019-01-02 01:34:05 +01:00
|
|
|
# a builtin C++ server started in the unittest now
|
2018-12-30 03:33:15 +01:00
|
|
|
test_server:
|
|
|
|
(cd test && npm i ws && node broadcast-server.js)
|
2019-01-03 01:08:32 +01:00
|
|
|
|
|
|
|
# env TEST=Websocket_server make test
|
2019-02-16 19:31:55 +01:00
|
|
|
# env TEST=Websocket_chat make test
|
2019-01-26 01:11:39 +01:00
|
|
|
# env TEST=heartbeat make test
|
2020-07-08 06:15:34 +02:00
|
|
|
build_test:
|
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_TEST=1 .. ; ninja install)
|
|
|
|
|
|
|
|
test: build_test
|
2020-04-29 20:53:56 +02:00
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
test_make:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=1 .. ; make -j 4)
|
2019-09-10 21:19:22 +02:00
|
|
|
(cd test ; python2.7 run.py -r)
|
2018-12-30 03:33:15 +01:00
|
|
|
|
2020-03-19 04:53:54 +01:00
|
|
|
test_tsan:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 .. && xcodebuild -project ixwebsocket.xcodeproj -target ixwebsocket_unittest -enableThreadSanitizer YES)
|
2020-03-19 04:53:54 +01:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
test_ubsan:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 .. && xcodebuild -project ixwebsocket.xcodeproj -target ixwebsocket_unittest -enableUndefinedBehaviorSanitizer YES)
|
2020-03-19 04:53:54 +01:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-04-15 06:50:26 +02:00
|
|
|
test_asan: build_test_asan
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
build_test_asan:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 .. && xcodebuild -project ixwebsocket.xcodeproj -target ixwebsocket_unittest -enableAddressSanitizer YES)
|
2020-03-19 04:53:54 +01:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
|
2020-03-27 00:46:11 +01:00
|
|
|
test_tsan_openssl:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 -DUSE_OPEN_SSL=1 .. && xcodebuild -project ixwebsocket.xcodeproj -target ixwebsocket_unittest -enableThreadSanitizer YES)
|
2020-03-27 00:46:11 +01:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-31 07:27:41 +02:00
|
|
|
test_ubsan_openssl:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 -DUSE_OPEN_SSL=1 .. && xcodebuild -project ixwebsocket.xcodeproj -target ixwebsocket_unittest -enableUndefinedBehaviorSanitizer YES)
|
2020-03-31 07:27:41 +02:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
test_tsan_openssl_release:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Release -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 -DUSE_OPEN_SSL=1 .. && xcodebuild -project ixwebsocket.xcodeproj -configuration Release -target ixwebsocket_unittest -enableThreadSanitizer YES)
|
2020-03-31 07:27:41 +02:00
|
|
|
(cd build/test ; ln -sf Release/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-27 03:16:04 +01:00
|
|
|
test_tsan_mbedtls:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build && cmake -GXcode -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_TEST=1 -DUSE_MBED_TLS=1 .. && xcodebuild -project ixwebsocket.xcodeproj -target ixwebsocket_unittest -enableThreadSanitizer YES)
|
2020-03-27 03:16:04 +01:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-31 07:27:41 +02:00
|
|
|
build_test_openssl:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_OPEN_SSL=1 -DUSE_TEST=1 .. ; ninja install)
|
2020-03-31 07:27:41 +02:00
|
|
|
|
|
|
|
test_openssl: build_test_openssl
|
2019-09-30 06:13:11 +02:00
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-31 07:27:41 +02:00
|
|
|
build_test_mbedtls:
|
2020-06-25 19:05:02 +02:00
|
|
|
mkdir -p build && (cd build ; cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_PYTHON=1 -DUSE_TLS=1 -DUSE_MBED_TLS=1 -DUSE_TEST=1 .. ; make -j 4)
|
2020-03-31 07:27:41 +02:00
|
|
|
|
|
|
|
test_mbedtls: build_test_mbedtls
|
2019-09-30 00:34:58 +02:00
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2019-10-03 18:41:17 +02:00
|
|
|
test_no_ssl:
|
|
|
|
mkdir -p build && (cd build ; cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_TEST=1 .. ; make -j 4)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2019-05-16 23:02:24 +02:00
|
|
|
ws_test: ws
|
2019-05-16 22:56:25 +02:00
|
|
|
(cd ws ; env DEBUG=1 PATH=../ws/build:$$PATH bash test_ws.sh)
|
2019-03-14 21:47:03 +01:00
|
|
|
|
2019-09-04 19:16:32 +02:00
|
|
|
autobahn_report:
|
|
|
|
cp -rvf ~/sandbox/reports/clients/* ../bsergean.github.io/IXWebSocket/autobahn/
|
|
|
|
|
2020-05-30 06:57:56 +02:00
|
|
|
httpd:
|
2020-07-28 02:19:05 +02:00
|
|
|
clang++ --std=c++14 --stdlib=libc++ -o ixhttpd httpd.cpp \
|
2020-05-30 06:57:56 +02:00
|
|
|
ixwebsocket/IXSelectInterruptFactory.cpp \
|
|
|
|
ixwebsocket/IXCancellationRequest.cpp \
|
|
|
|
ixwebsocket/IXSocketTLSOptions.cpp \
|
|
|
|
ixwebsocket/IXUserAgent.cpp \
|
|
|
|
ixwebsocket/IXDNSLookup.cpp \
|
|
|
|
ixwebsocket/IXBench.cpp \
|
|
|
|
ixwebsocket/IXWebSocketHttpHeaders.cpp \
|
|
|
|
ixwebsocket/IXSelectInterruptPipe.cpp \
|
|
|
|
ixwebsocket/IXHttp.cpp \
|
|
|
|
ixwebsocket/IXSocketConnect.cpp \
|
|
|
|
ixwebsocket/IXSocket.cpp \
|
|
|
|
ixwebsocket/IXSocketServer.cpp \
|
|
|
|
ixwebsocket/IXNetSystem.cpp \
|
|
|
|
ixwebsocket/IXHttpServer.cpp \
|
|
|
|
ixwebsocket/IXSocketFactory.cpp \
|
|
|
|
ixwebsocket/IXConnectionState.cpp \
|
|
|
|
ixwebsocket/IXUrlParser.cpp \
|
|
|
|
ixwebsocket/IXSelectInterrupt.cpp \
|
2020-07-28 02:19:05 +02:00
|
|
|
ixwebsocket/IXSetThreadName.cpp \
|
2020-05-30 20:23:39 +02:00
|
|
|
-lz
|
|
|
|
|
|
|
|
httpd_linux:
|
2020-07-28 02:19:05 +02:00
|
|
|
g++ --std=c++14 -o ixhttpd httpd.cpp -Iixwebsocket \
|
2020-05-30 20:23:39 +02:00
|
|
|
ixwebsocket/IXSelectInterruptFactory.cpp \
|
|
|
|
ixwebsocket/IXCancellationRequest.cpp \
|
|
|
|
ixwebsocket/IXSocketTLSOptions.cpp \
|
|
|
|
ixwebsocket/IXUserAgent.cpp \
|
|
|
|
ixwebsocket/IXDNSLookup.cpp \
|
|
|
|
ixwebsocket/IXBench.cpp \
|
|
|
|
ixwebsocket/IXWebSocketHttpHeaders.cpp \
|
|
|
|
ixwebsocket/IXSelectInterruptPipe.cpp \
|
|
|
|
ixwebsocket/IXHttp.cpp \
|
|
|
|
ixwebsocket/IXSocketConnect.cpp \
|
|
|
|
ixwebsocket/IXSocket.cpp \
|
|
|
|
ixwebsocket/IXSocketServer.cpp \
|
|
|
|
ixwebsocket/IXNetSystem.cpp \
|
|
|
|
ixwebsocket/IXHttpServer.cpp \
|
|
|
|
ixwebsocket/IXSocketFactory.cpp \
|
|
|
|
ixwebsocket/IXConnectionState.cpp \
|
|
|
|
ixwebsocket/IXUrlParser.cpp \
|
|
|
|
ixwebsocket/IXSelectInterrupt.cpp \
|
2020-07-28 02:19:05 +02:00
|
|
|
ixwebsocket/IXSetThreadName.cpp \
|
2020-05-30 20:23:39 +02:00
|
|
|
-lz -lpthread
|
|
|
|
cp -f ixhttpd /usr/local/bin
|
2020-05-30 06:57:56 +02:00
|
|
|
|
2019-01-05 23:43:21 +01:00
|
|
|
# For the fork that is configured with appveyor
|
|
|
|
rebase_upstream:
|
|
|
|
git fetch upstream
|
|
|
|
git checkout master
|
|
|
|
git reset --hard upstream/master
|
|
|
|
git push origin master --force
|
|
|
|
|
2020-06-25 19:05:02 +02:00
|
|
|
# Legacy target
|
2019-03-14 07:09:45 +01:00
|
|
|
install_cmake_for_linux:
|
|
|
|
mkdir -p /tmp/cmake
|
2019-04-21 20:41:37 +02:00
|
|
|
(cd /tmp/cmake ; curl -L -O https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Linux-x86_64.tar.gz ; tar zxf cmake-3.14.0-Linux-x86_64.tar.gz)
|
2019-03-14 07:09:45 +01:00
|
|
|
|
2019-08-30 21:46:35 +02:00
|
|
|
# python -m venv venv
|
|
|
|
# source venv/bin/activate
|
|
|
|
# pip install mkdocs
|
|
|
|
doc:
|
2019-10-10 07:42:03 +02:00
|
|
|
mkdocs gh-deploy
|
2019-08-30 21:46:35 +02:00
|
|
|
|
2020-07-24 20:52:16 +02:00
|
|
|
change: format
|
2020-06-12 03:49:45 +02:00
|
|
|
vim ixwebsocket/IXWebSocketVersion.h docs/CHANGELOG.md
|
2020-06-12 02:30:42 +02:00
|
|
|
|
2020-07-24 20:53:09 +02:00
|
|
|
commit:
|
|
|
|
git commit -am "`sh tools/extract_latest_change.sh`"
|
|
|
|
|
2018-12-30 03:33:15 +01:00
|
|
|
.PHONY: test
|
2019-01-04 02:44:10 +01:00
|
|
|
.PHONY: build
|
2019-05-16 22:56:25 +02:00
|
|
|
.PHONY: ws
|