2018-11-09 18:23:49 -08:00
|
|
|
#
|
2020-03-29 13:05:31 -07: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-09 18:23:49 -08:00
|
|
|
#
|
2019-02-22 20:49:26 -08:00
|
|
|
all: brew
|
2018-11-09 18:23:49 -08:00
|
|
|
|
2019-03-18 15:11:08 -07:00
|
|
|
install: brew
|
|
|
|
|
2019-04-21 11:41:37 -07:00
|
|
|
# Use -DCMAKE_INSTALL_PREFIX= to install into another location
|
2019-04-21 11:52:38 -07:00
|
|
|
# on osx it is good practice to make /usr/local user writable
|
|
|
|
# sudo chown -R `whoami`/staff /usr/local
|
2020-03-29 13:05:31 -07:00
|
|
|
#
|
|
|
|
# Release, Debug, MinSizeRel, RelWithDebInfo are the build types
|
|
|
|
#
|
2020-06-25 10:05:02 -07:00
|
|
|
# Default rule does not use python as that requires first time users to have Python3 installed
|
|
|
|
#
|
2019-02-21 22:05:30 -08:00
|
|
|
brew:
|
2020-04-29 11:53:56 -07: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-21 22:05:30 -08:00
|
|
|
|
2020-06-25 10:05:02 -07:00
|
|
|
# Docker default target. We've had problems with OpenSSL and TLS 1.3 (on the
|
2020-03-29 13:05:31 -07: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 10:05:02 -07: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 13:05:31 -07:00
|
|
|
|
2019-05-16 07:01:15 -07:00
|
|
|
ws:
|
2020-06-25 10:05:02 -07: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 07:01:15 -07:00
|
|
|
|
2019-10-26 11:47:08 -07:00
|
|
|
ws_install:
|
2020-08-02 12:09:13 -07: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 11:47:08 -07:00
|
|
|
|
2020-08-14 15:08:37 -07: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-29 15:34:58 -07:00
|
|
|
|
2019-09-30 18:21:20 -07:00
|
|
|
ws_mbedtls:
|
2020-06-25 10:05:02 -07: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-09-30 18:21:20 -07:00
|
|
|
|
2019-10-03 07:47:34 -07:00
|
|
|
ws_no_ssl:
|
|
|
|
mkdir -p build && (cd build ; cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_WS=1 .. ; make -j 4)
|
|
|
|
|
2020-08-13 21:20:42 -07: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 11:47:57 -07:00
|
|
|
uninstall:
|
|
|
|
xargs rm -fv < build/install_manifest.txt
|
|
|
|
|
2019-08-20 09:21:30 -07:00
|
|
|
tag:
|
2019-12-06 16:44:05 -08:00
|
|
|
git tag v"`sh tools/extract_version.sh`"
|
2019-08-20 09:21:30 -07:00
|
|
|
|
2019-09-24 11:46:54 -07:00
|
|
|
xcode:
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=1 -GXcode && open ixwebsocket.xcodeproj
|
|
|
|
|
2019-10-01 15:43:37 -07: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-14 16:28:11 -08:00
|
|
|
.PHONY: docker
|
2019-03-27 13:41:46 -07:00
|
|
|
|
2019-12-11 17:27:37 -08:00
|
|
|
NAME := ${DOCKER_REPO}/ws
|
2019-12-06 16:44:05 -08:00
|
|
|
TAG := $(shell sh tools/extract_version.sh)
|
2019-03-27 13:41:46 -07:00
|
|
|
IMG := ${NAME}:${TAG}
|
|
|
|
LATEST := ${NAME}:latest
|
|
|
|
BUILD := ${NAME}:build
|
|
|
|
|
2019-12-06 16:44:05 -08:00
|
|
|
print_version:
|
|
|
|
@echo 'IXWebSocket version =>' ${TAG}
|
|
|
|
|
2020-01-28 14:04:18 -08:00
|
|
|
set_version:
|
|
|
|
sh tools/update_version.sh ${VERSION}
|
|
|
|
|
2019-05-31 00:43:22 -07:00
|
|
|
docker_test:
|
|
|
|
docker build -f docker/Dockerfile.debian -t bsergean/ixwebsocket_test:build .
|
|
|
|
|
2018-11-09 18:23:49 -08:00
|
|
|
docker:
|
2019-10-26 11:47:08 -07:00
|
|
|
git clean -dfx
|
2019-03-27 13:41:46 -07:00
|
|
|
docker build -t ${IMG} .
|
|
|
|
docker tag ${IMG} ${BUILD}
|
|
|
|
|
|
|
|
docker_push:
|
|
|
|
docker tag ${IMG} ${LATEST}
|
|
|
|
docker push ${LATEST}
|
2019-11-18 13:46:11 -08:00
|
|
|
docker push ${IMG}
|
2018-11-09 18:23:49 -08:00
|
|
|
|
2020-03-30 16:08:47 -07:00
|
|
|
deploy: docker docker_push
|
2020-03-29 22:08:36 -07:00
|
|
|
|
2019-02-21 21:24:53 -08:00
|
|
|
run:
|
2019-05-31 00:43:22 -07:00
|
|
|
docker run --cap-add sys_ptrace --entrypoint=sh -it bsergean/ws:build
|
2018-11-09 18:23:49 -08:00
|
|
|
|
2019-02-20 18:59:07 -08:00
|
|
|
# this is helpful to remove trailing whitespaces
|
|
|
|
trail:
|
2019-02-28 21:54:03 -08:00
|
|
|
sh third_party/remote_trailing_whitespaces.sh
|
2019-02-20 18:59:07 -08:00
|
|
|
|
2019-05-30 08:46:50 -07:00
|
|
|
format:
|
2019-09-12 11:43:52 -07:00
|
|
|
clang-format -i `find test ixwebsocket ws -name '*.cpp' -o -name '*.h'`
|
2019-05-30 08:46:50 -07:00
|
|
|
|
2019-09-12 11:43:52 -07:00
|
|
|
# That target is used to start a node server, but isn't required as we have
|
2019-01-01 16:34:05 -08:00
|
|
|
# a builtin C++ server started in the unittest now
|
2018-12-29 18:33:15 -08:00
|
|
|
test_server:
|
|
|
|
(cd test && npm i ws && node broadcast-server.js)
|
2019-01-02 16:08:32 -08:00
|
|
|
|
|
|
|
# env TEST=Websocket_server make test
|
2019-02-16 10:31:55 -08:00
|
|
|
# env TEST=Websocket_chat make test
|
2019-01-25 16:11:39 -08:00
|
|
|
# env TEST=heartbeat make test
|
2020-07-07 21:15:34 -07: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 11:53:56 -07:00
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
test_make:
|
2020-06-25 10:05:02 -07: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 12:19:22 -07:00
|
|
|
(cd test ; python2.7 run.py -r)
|
2018-12-29 18:33:15 -08:00
|
|
|
|
2020-03-18 20:53:54 -07:00
|
|
|
test_tsan:
|
2020-06-25 10:05:02 -07: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-18 20:53:54 -07:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
test_ubsan:
|
2020-06-25 10:05:02 -07: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-18 20:53:54 -07:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-04-14 21:50:26 -07:00
|
|
|
test_asan: build_test_asan
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
build_test_asan:
|
2020-06-25 10:05:02 -07: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-18 20:53:54 -07:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
|
2020-03-26 16:46:11 -07:00
|
|
|
test_tsan_openssl:
|
2020-06-25 10:05:02 -07: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-26 16:46:11 -07:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-30 22:27:41 -07:00
|
|
|
test_ubsan_openssl:
|
2020-06-25 10:05:02 -07: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-30 22:27:41 -07:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
|
|
|
test_tsan_openssl_release:
|
2020-06-25 10:05:02 -07: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-30 22:27:41 -07:00
|
|
|
(cd build/test ; ln -sf Release/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-26 19:16:04 -07:00
|
|
|
test_tsan_mbedtls:
|
2020-06-25 10:05:02 -07: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-26 19:16:04 -07:00
|
|
|
(cd build/test ; ln -sf Debug/ixwebsocket_unittest)
|
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-30 22:27:41 -07:00
|
|
|
build_test_openssl:
|
2020-06-25 10:05:02 -07: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-30 22:27:41 -07:00
|
|
|
|
|
|
|
test_openssl: build_test_openssl
|
2019-09-29 21:13:11 -07:00
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2020-03-30 22:27:41 -07:00
|
|
|
build_test_mbedtls:
|
2020-06-25 10:05:02 -07: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-30 22:27:41 -07:00
|
|
|
|
|
|
|
test_mbedtls: build_test_mbedtls
|
2019-09-29 15:34:58 -07:00
|
|
|
(cd test ; python2.7 run.py -r)
|
|
|
|
|
2019-10-03 09:41:17 -07: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 14:02:24 -07:00
|
|
|
ws_test: ws
|
2019-05-16 13:56:25 -07:00
|
|
|
(cd ws ; env DEBUG=1 PATH=../ws/build:$$PATH bash test_ws.sh)
|
2019-03-14 13:47:03 -07:00
|
|
|
|
2019-09-04 10:16:32 -07:00
|
|
|
autobahn_report:
|
|
|
|
cp -rvf ~/sandbox/reports/clients/* ../bsergean.github.io/IXWebSocket/autobahn/
|
|
|
|
|
2020-05-29 21:57:56 -07:00
|
|
|
httpd:
|
2020-07-27 17:19:05 -07:00
|
|
|
clang++ --std=c++14 --stdlib=libc++ -o ixhttpd httpd.cpp \
|
2020-05-29 21:57:56 -07: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-27 17:19:05 -07:00
|
|
|
ixwebsocket/IXSetThreadName.cpp \
|
2020-05-30 11:23:39 -07:00
|
|
|
-lz
|
|
|
|
|
|
|
|
httpd_linux:
|
2020-07-27 17:19:05 -07:00
|
|
|
g++ --std=c++14 -o ixhttpd httpd.cpp -Iixwebsocket \
|
2020-05-30 11:23:39 -07: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-27 17:19:05 -07:00
|
|
|
ixwebsocket/IXSetThreadName.cpp \
|
2020-05-30 11:23:39 -07:00
|
|
|
-lz -lpthread
|
|
|
|
cp -f ixhttpd /usr/local/bin
|
2020-05-29 21:57:56 -07:00
|
|
|
|
2019-01-05 14:43:21 -08: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 10:05:02 -07:00
|
|
|
# Legacy target
|
2019-03-13 23:09:45 -07:00
|
|
|
install_cmake_for_linux:
|
|
|
|
mkdir -p /tmp/cmake
|
2019-04-21 11:41:37 -07: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-13 23:09:45 -07:00
|
|
|
|
2019-08-30 12:46:35 -07:00
|
|
|
# python -m venv venv
|
|
|
|
# source venv/bin/activate
|
|
|
|
# pip install mkdocs
|
|
|
|
doc:
|
2019-10-09 22:42:03 -07:00
|
|
|
mkdocs gh-deploy
|
2019-08-30 12:46:35 -07:00
|
|
|
|
2020-07-24 11:52:16 -07:00
|
|
|
change: format
|
2020-06-11 18:49:45 -07:00
|
|
|
vim ixwebsocket/IXWebSocketVersion.h docs/CHANGELOG.md
|
2020-06-11 17:30:42 -07:00
|
|
|
|
2020-07-24 11:53:09 -07:00
|
|
|
commit:
|
|
|
|
git commit -am "`sh tools/extract_latest_change.sh`"
|
|
|
|
|
2018-12-29 18:33:15 -08:00
|
|
|
.PHONY: test
|
2019-01-03 17:44:10 -08:00
|
|
|
.PHONY: build
|
2019-05-16 13:56:25 -07:00
|
|
|
.PHONY: ws
|