From 701f77476f1ca06324ca172f694b25a07cee69b0 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Fri, 4 Nov 2022 07:35:17 +0100 Subject: [PATCH] New shim for nmake (WIP) --- Makefile | 100 ++++++------------------------------------------------- 1 file changed, 11 insertions(+), 89 deletions(-) diff --git a/Makefile b/Makefile index e6aead5..7cdf261 100644 --- a/Makefile +++ b/Makefile @@ -1,95 +1,17 @@ -# By default we use LTO, but Windows does not support it -ifneq ($(WITH_LTO),0) - override CXXFLAGS += -flto -endif +# This is the NMake shim for Windows (WIP) -# 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 +examples: default + .\build.exe examples || .\a.exe examples -EXAMPLE_FILES := Http3Server Broadcast HelloWorld Crc32 ServerName EchoServer BroadcastingEchoServer UpgradeSync UpgradeAsync -THREADED_EXAMPLE_FILES := HelloWorldThreaded EchoServerThreaded -override CXXFLAGS += -Wpedantic -Wall -Wextra -Wsign-conversion -Wconversion -std=c++2a -Isrc -IuSockets/src -override LDFLAGS += uSockets/*.o +clean: default + .\build.exe clean || .\a.exe clean -DESTDIR ?= -prefix ?= /usr/local +capi: default + .\build.exe capi || .\a.exe capi -# WITH_PROXY enables PROXY Protocol v2 support -ifeq ($(WITH_PROXY),1) - override CXXFLAGS += -DUWS_WITH_PROXY -endif +all: default + .\build.exe all || .\a.exe all -# WITH_QUIC enables experimental Http3 examples -ifeq ($(WITH_QUIC),1) - override CXXFLAGS += -DLIBUS_USE_QUIC - override LDFLAGS += -pthread -lz -lm uSockets/lsquic/src/liblsquic/liblsquic.a -endif - -# WITH_LIBDEFLATE=1 enables fast paths for SHARED_COMPRESSOR and inflation -ifeq ($(WITH_LIBDEFLATE),1) - override CXXFLAGS += -I libdeflate -DUWS_USE_LIBDEFLATE - override LDFLAGS += libdeflate/libdeflate.a -endif - -# Heavily prefer boringssl over openssl -ifeq ($(WITH_BORINGSSL),1) - override CFLAGS += -I uSockets/boringssl/include -pthread -DLIBUS_USE_OPENSSL - override LDFLAGS += -pthread uSockets/boringssl/build/ssl/libssl.a uSockets/boringssl/build/crypto/libcrypto.a -else - # WITH_OPENSSL=1 enables OpenSSL 1.1+ support - ifeq ($(WITH_OPENSSL),1) - # With problems on macOS, make sure to pass needed LDFLAGS required to find these - override LDFLAGS += -lssl -lcrypto - else - # WITH_WOLFSSL=1 enables WolfSSL 4.2.0 support (mutually exclusive with OpenSSL) - ifeq ($(WITH_WOLFSSL),1) - override LDFLAGS += -L/usr/local/lib -lwolfssl - endif - endif -endif - -# WITH_LIBUV=1 builds with libuv as event-loop -ifeq ($(WITH_LIBUV),1) - override LDFLAGS += -luv -endif - -# WITH_ASIO=1 builds with ASIO as event-loop -ifeq ($(WITH_ASIO),1) - override CXXFLAGS += -pthread - override LDFLAGS += -lpthread -endif - -# WITH_ASAN builds with sanitizers -ifeq ($(WITH_ASAN),1) - override CXXFLAGS += -fsanitize=address -g - override LDFLAGS += -lasan -endif - -.PHONY: examples -examples: - $(MAKE) -C uSockets; \ - 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: +default: $(MAKE) -C uSockets - $(CXX) -shared -fPIC -O3 $(CXXFLAGS) capi/App.cpp -o capi.so $(LDFLAGS) - $(CXX) capi/example.c -O3 capi.so -o example - -install: - mkdir -p "$(DESTDIR)$(prefix)/include/uWebSockets" - cp -r src/* "$(DESTDIR)$(prefix)/include/uWebSockets" - -all: - $(MAKE) examples - $(MAKE) -C fuzzing - $(MAKE) -C benchmarks -clean: - rm -rf $(EXAMPLE_FILES) $(THREADED_EXAMPLE_FILES) - rm -rf fuzzing/*.o benchmarks/*.o + $(CC) build.c \ No newline at end of file