diff options
| author | Roland Reichwein <mail@reichwein.it> | 2020-05-16 13:28:52 +0200 | 
|---|---|---|
| committer | Roland Reichwein <mail@reichwein.it> | 2020-05-16 13:28:52 +0200 | 
| commit | 6b2a9dabbfad4d64268967a32dff0f1dc55763de (patch) | |
| tree | b3a1f68d8b44090b98ac3bdcf1c8423ebc08c846 | |
| parent | 83b25165218281c2a2e98b5e72a0375a7e6a71ca (diff) | |
Makefile cleanup, included missing files
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Makefile | 39 | ||||
| -rw-r--r-- | libcommon/Makefile | 23 | ||||
| -rw-r--r-- | libcommon/tempfile.cpp | 27 | ||||
| -rw-r--r-- | libcommon/tempfile.h | 16 | ||||
| -rw-r--r-- | plugins/cgi/Makefile | 23 | ||||
| -rw-r--r-- | plugins/fcgi/Makefile | 23 | ||||
| -rw-r--r-- | plugins/redirect/Makefile | 27 | ||||
| -rw-r--r-- | plugins/static-files/Makefile | 23 | ||||
| -rw-r--r-- | plugins/statistics/Makefile | 27 | ||||
| -rw-r--r-- | plugins/webbox/Makefile | 27 | ||||
| -rw-r--r-- | plugins/weblog/Makefile | 20 | ||||
| -rw-r--r-- | tests/Makefile | 112 | ||||
| -rw-r--r-- | tests/test-webserver.cpp (renamed from test-webserver.cpp) | 0 | 
14 files changed, 192 insertions, 197 deletions
@@ -1,5 +1,7 @@ +*.a  *.o  *.d +*.pem  *.so  *.swp  default.profraw @@ -31,17 +31,15 @@ endif  # -fprofile-instr-generate -fcoverage-mapping  # gcc:--coverage -CXXFLAGS+= -Wall -I. -DVERSION=\"$(VERSION)\" -fPIE +CXXFLAGS+=-Wall -I. -DVERSION=\"$(VERSION)\" -fPIE -CXXFLAGS+= -pthread +CXXFLAGS+=-pthread  ifeq ($(CXX),clang++-10)  CXXFLAGS+=-std=c++20 #-stdlib=libc++  else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lcommon \  -lboost_context \ @@ -87,38 +85,25 @@ PROGSRC=\      statistics.cpp \      server.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC) webserver.cpp -build: $(PROJECTNAME) test-$(PROJECTNAME) +build: $(PROJECTNAME)  	+set -e ; for i in $(PLUGINS) ; do make -C plugins/$$i ; done -	./test-$(PROJECTNAME)  all: build  	./webserver -c webserver.conf -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@ -  $(PROJECTNAME): libcommon/libcommon.a $(SRC:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@  libcommon/libcommon.a:  	$(MAKE) -C libcommon -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  googletest/src/%.o: googletest/src/%.cc  	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ @@ -127,6 +112,9 @@ googletest/src/%.o: googletest/src/%.cc  ADD_DEP=Makefile +test: +	$(MAKE) -C tests +  install:  	mkdir -p $(DESTDIR)/usr/bin  	cp webserver $(DESTDIR)/usr/bin @@ -156,11 +144,11 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) +	-rm -f $(PROJECTNAME)  	-rm -f plugins/*.so  	-find . -name '*.o' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f -	for i in $(PLUGINS) ; do make -C plugins/$$i clean ; done -	$(MAKE) -C libcommon clean +	#for i in $(PLUGINS) ; do $(MAKE) -C plugins/$$i clean ; done +	for i in libcommon tests ; do $(MAKE) -C $$i clean ; done  DISTFILES= \  	archive.h \ @@ -187,7 +175,8 @@ DISTFILES= \  	server.h \  	statistics.cpp \  	statistics.h \ -	test-webserver.cpp \ +	tests/Makefile \ +	tests/test-webserver.cpp \  	webserver.cpp \  	webserver.1 \  	README.txt \ @@ -262,6 +251,6 @@ dist: clean  	rm -rf $(PROJECTNAME)-$(VERSION)  	ls -l ../$(PROJECTNAME)-$(VERSION).tar.xz -.PHONY: clean all zip install deb deb-src debs all $(DISTROS) +.PHONY: clean all zip test install deb deb-src debs all $(DISTROS)  -include $(wildcard $(SRC:.cpp=.d)) diff --git a/libcommon/Makefile b/libcommon/Makefile index 932ee90..ab76ed1 100644 --- a/libcommon/Makefile +++ b/libcommon/Makefile @@ -30,8 +30,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lboost_context \  -lboost_coroutine \ @@ -64,33 +62,18 @@ PROGSRC=\      stringutil.cpp \      tempfile.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).a -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).a: $(SRC:.cpp=.o)  	ar rcs $@ $^ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  # dependencies @@ -111,8 +94,6 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) -	-find . -name '*.a' -o -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean  	-rm -f ../$(PROJECTNAME).zip diff --git a/libcommon/tempfile.cpp b/libcommon/tempfile.cpp new file mode 100644 index 0000000..5d3a086 --- /dev/null +++ b/libcommon/tempfile.cpp @@ -0,0 +1,27 @@ +#include "tempfile.h" + +#include <iostream> + +namespace fs = std::filesystem; +using namespace std::string_literals; + +fs::path Tempfile::GetPath() const +{ + return m_path; +} + +Tempfile::Tempfile() { + try { +  m_path = std::string{tmpnam(NULL)} + ".zip"s; + } catch (const std::exception& ex) { +  throw std::runtime_error("Tempfile error: "s + ex.what()); + } +} + +Tempfile::~Tempfile() { + try { +  fs::remove_all(m_path); + } catch (const std::exception& ex) { +  std::cerr << "Warning: Couldn't remove temporary file " << m_path << std::endl; + } +} diff --git a/libcommon/tempfile.h b/libcommon/tempfile.h new file mode 100644 index 0000000..5938fb9 --- /dev/null +++ b/libcommon/tempfile.h @@ -0,0 +1,16 @@ +#pragma once + +#include <filesystem> + +class Tempfile +{ + std::filesystem::path m_path; + + public: +  std::filesystem::path GetPath() const; + +  Tempfile(); +  ~Tempfile(); + }; + + diff --git a/plugins/cgi/Makefile b/plugins/cgi/Makefile index a4fdb15..2d86c50 100644 --- a/plugins/cgi/Makefile +++ b/plugins/cgi/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lcommon \  -lboost_context \ @@ -62,33 +60,18 @@ LDFLAGS=-L../../libcommon  PROGSRC=\      cgi.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: ../../libcommon/libcommon.a $(SRC:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ -shared $(LDLIBS) $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  # dependencies @@ -112,8 +95,6 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) -	-find . -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean  	-rm -f ../$(PROJECTNAME).zip diff --git a/plugins/fcgi/Makefile b/plugins/fcgi/Makefile index 0cafe54..8937689 100644 --- a/plugins/fcgi/Makefile +++ b/plugins/fcgi/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lboost_context \  -lboost_coroutine \ @@ -61,33 +59,18 @@ PROGSRC=\      fcgiid.cpp \      socket.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: $(SRC:.cpp=.o)  	$(CXX) $(CXXFLAGS) $^ -shared $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  # dependencies @@ -111,8 +94,6 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) -	-find . -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean  	-rm -f ../$(PROJECTNAME).zip diff --git a/plugins/redirect/Makefile b/plugins/redirect/Makefile index 99aedb1..77b496b 100644 --- a/plugins/redirect/Makefile +++ b/plugins/redirect/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lboost_context \  -lboost_coroutine \ @@ -59,37 +57,18 @@ endif  PROGSRC=\      redirect.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: $(SRC:.cpp=.o)  	$(CXX) $(CXXFLAGS) $^ -shared $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -# dependencies - -ADD_DEP=Makefile +	$(CXX) $(CXXFLAGS) -c $< -o $@  install:  	mkdir -p $(DESTDIR)/usr/lib/webserver/plugins @@ -109,7 +88,7 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) +	-rm -f $(PROJECTNAME)  	-find . -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean diff --git a/plugins/static-files/Makefile b/plugins/static-files/Makefile index 14c6c17..9834e96 100644 --- a/plugins/static-files/Makefile +++ b/plugins/static-files/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lcommon \  -lboost_context \ @@ -62,33 +60,18 @@ LDFLAGS=-L../../libcommon  PROGSRC=\      static-files.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: ../../libcommon/libcommon.a $(SRC:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ -shared $(LDLIBS) $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  # dependencies @@ -112,7 +95,7 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) +	-rm -f $(PROJECTNAME)  	-find . -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean diff --git a/plugins/statistics/Makefile b/plugins/statistics/Makefile index 3dee26e..2a0d246 100644 --- a/plugins/statistics/Makefile +++ b/plugins/statistics/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lboost_context \  -lboost_coroutine \ @@ -59,37 +57,18 @@ endif  PROGSRC=\      statistics.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: $(SRC:.cpp=.o)  	$(CXX) $(CXXFLAGS) $^ -shared $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -# dependencies - -ADD_DEP=Makefile +	$(CXX) $(CXXFLAGS) -c $< -o $@  install:  	mkdir -p $(DESTDIR)/usr/lib/webserver/plugins @@ -109,7 +88,7 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) +	-rm -f $(PROJECTNAME)  	-find . -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean diff --git a/plugins/webbox/Makefile b/plugins/webbox/Makefile index 34f253b..861b5d4 100644 --- a/plugins/webbox/Makefile +++ b/plugins/webbox/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lcommon \  -lboost_context \ @@ -62,37 +60,18 @@ LDFLAGS+=-L../../libcommon  PROGSRC=\      webbox.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: ../../libcommon/libcommon.a $(SRC:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ -shared $(LDLIBS) $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ - -# dependencies - -ADD_DEP=Makefile +	$(CXX) $(CXXFLAGS) -c $< -o $@  install:  	mkdir -p $(DESTDIR)/usr/lib/webserver/plugins @@ -120,7 +99,7 @@ $(DISTROS): deb-src  debs: $(DISTROS)  clean: -	-rm -f test-$(PROJECTNAME) $(PROJECTNAME) +	-rm -f $(PROJECTNAME)  	-find . -name '*.o' -o -name '*.so' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f  zip: clean diff --git a/plugins/weblog/Makefile b/plugins/weblog/Makefile index 466ddbd..a21b464 100644 --- a/plugins/weblog/Makefile +++ b/plugins/weblog/Makefile @@ -28,8 +28,6 @@ else  CXXFLAGS+=-std=c++17  endif -CXXTESTFLAGS=-Igoogletest/include -Igooglemock/include/ -Igoogletest -Igooglemock -  LIBS=\  -lcommon \  -lboost_context \ @@ -62,33 +60,21 @@ LDFLAGS=-L../../libcommon  PROGSRC=\      weblog.cpp -TESTSRC=\ -    test-webserver.cpp \ -    googlemock/src/gmock-all.cpp \ -    googletest/src/gtest-all.cpp \ -    $(PROGSRC) -  SRC=$(PROGSRC)  all: $(PROJECTNAME).so -# testsuite ---------------------------------------------- -test-$(PROJECTNAME): $(TESTSRC:.cpp=.o) -	$(CXX) $(CXXFLAGS) $^ $(LIBS) -o $@ -  $(PROJECTNAME).so: ../../libcommon/libcommon.a $(SRC:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ -shared $(LDLIBS) $(LIBS) -o $@ -dep: $(TESTSRC:.cpp=.d) -  %.d: %.cpp -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< +	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $<  %.o: %.cpp %.d -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  googletest/src/%.o: googletest/src/%.cc -	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +	$(CXX) $(CXXFLAGS) -c $< -o $@  # dependencies diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..2bccae4 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,112 @@ +DISTROS=debian10 ubuntu1910 ubuntu2004 +PROJECTNAME=test-webserver + +CXX=clang++-10 + +ifeq ($(shell which $(CXX)),) +CXX=clang++ +endif + +ifeq ($(shell which $(CXX)),) +CXX=g++-9 +endif + +ifeq ($(shell which $(CXX)),) +CXX=g++ +endif + +ifeq ($(CXXFLAGS),) +#CXXFLAGS=-O2 -DNDEBUG +CXXFLAGS=-O0 -g -D_DEBUG +endif +# -fprofile-instr-generate -fcoverage-mapping +# gcc:--coverage + +CXXFLAGS+= -Wall -I. -fPIE + +CXXFLAGS+= -pthread +ifeq ($(CXX),clang++-10) +CXXFLAGS+=-std=c++20 #-stdlib=libc++ +else +CXXFLAGS+=-std=c++17 +endif + +CXXTESTFLAGS=-I../googletest/include -I../googlemock/include/ -I../googletest -I../googlemock + +LIBS=\ +-lcommon \ +-lboost_context \ +-lboost_filesystem \ +-lboost_timer \ +-lboost_system \ +-lcrypt \ +-lpthread \ +-lssl -lcrypto \ +-ldl + +#-lboost_coroutine \ +#-lboost_program_options \ +#-lboost_thread \ +#-lboost_regex \ + +ifeq ($(CXX),clang++-10) +LIBS+= \ +-fuse-ld=lld-10 \ +-lstdc++ +#-lc++ \ +#-lc++abi +#-lc++fs +#-lstdc++fs +else +LIBS+= \ +-lstdc++ \ +-lstdc++fs +endif + +LDFLAGS+=-pie -L../libcommon + +TESTSRC=\ +    test-webserver.cpp \ +    ../googlemock/src/gmock-all.cpp \ +    ../googletest/src/gtest-all.cpp \ +    $(PROGSRC) + +build: $(PROJECTNAME) +	+set -e ; for i in $(PLUGINS) ; do make -C plugins/$$i ; done +	./$(PROJECTNAME) + +all: build +	./webserver -c webserver.conf + +$(PROJECTNAME): ../libcommon/libcommon.a $(TESTSRC:.cpp=.o) +	$(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@ + +dep: $(TESTSRC:.cpp=.d) + +%.d: %.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< + +%.o: %.cpp %.d +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ + +install: +	mkdir -p $(DESTDIR)/usr/bin +	cp webserver $(DESTDIR)/usr/bin + +	mkdir -p $(DESTDIR)/usr/lib/webserver/plugins +	set -e ; for i in $(PLUGINS) ; do make -C plugins/$$i install ; done + +	mkdir -p $(DESTDIR)/usr/local/lib/webserver/plugins + +	#mkdir -p $(DESTDIR)/etc +	#cp webserver.conf $(DESTDIR)/etc/webserver.conf + +# misc --------------------------------------------------- + +clean: +	-rm -f $(PROJECTNAME) +	-find . -name '*.o' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f + +.PHONY: clean all install all $(DISTROS) + +-include $(wildcard $(TESTSRC:.cpp=.d)) diff --git a/test-webserver.cpp b/tests/test-webserver.cpp index f7020af..f7020af 100644 --- a/test-webserver.cpp +++ b/tests/test-webserver.cpp  | 
