# # Makefile # # Environment: Debian # DISTROS=base debian11 ubuntu2204 VERSION=$(shell dpkg-parsechangelog --show-field Version) CXX=clang++-13 ifeq ($(shell which $(CXX)),) CXX=clang++-10 endif ifeq ($(shell which $(CXX)),) CXX=clang++ endif ifeq ($(shell which $(CXX)),) CXX=g++-9 endif ifeq ($(shell which $(CXX)),) CXX=g++ endif LIBS=-lfcgi -lboost_filesystem INCLUDES=-I. HEADERS=file.h config.h qrcode.h SOURCES=$(HEADERS:.h=.cpp) OBJECTS=$(HEADERS:.h=.o) TARGETS=whiteboard.fcgi ifeq ($(CXXFLAGS),) CXXFLAGS=-g -O2 endif CXXFLAGS+=-Wall -fPIE -Wpedantic -gdwarf-4 LDFLAGS+=-pie ifeq ($(CXX),g++-9) CXXFLAGS+=-std=c++17 else CXXFLAGS+=-std=c++20 endif ifeq ($(CXX),clang++-10) LIBS+= \ -fuse-ld=lld-10 \ -lstdc++ #-lc++ \ #-lc++abi #-lc++fs #-lstdc++fs else LIBS+= \ -lstdc++ \ -lstdc++fs endif CXXFLAGS+=$(shell pkg-config --cflags qrcodegencpp Magick++ fmt) LIBS+=$(shell pkg-config --libs qrcodegencpp Magick++ fmt) build: $(TARGETS) all: build ./start.sh install: mkdir -p $(DESTDIR)/usr/lib/whiteboard cp whiteboard.fcgi $(DESTDIR)/usr/lib/whiteboard/ mkdir -p $(DESTDIR)/usr/lib/whiteboard/html cp -r html/* $(DESTDIR)/usr/lib/whiteboard/html/ uglifyjs html/whiteboard.js -m -c > $(DESTDIR)/usr/lib/whiteboard/html/whiteboard.js || cp html/whiteboard.js $(DESTDIR)/usr/lib/whiteboard/html/whiteboard.js htmlmin html/index.html $(DESTDIR)/usr/lib/whiteboard/html/index.html cleancss -o $(DESTDIR)/usr/lib/whiteboard/html/whiteboard.css html/whiteboard.css mkdir -p $(DESTDIR)/etc cp whiteboard.conf $(DESTDIR)/etc mkdir -p $(DESTDIR)/usr/bin cp whiteboard-cleanup $(DESTDIR)/usr/bin/ mkdir -p $(DESTDIR)/etc/cron.d cp whiteboard.cron $(DESTDIR)/etc/cron.d/whiteboard whiteboard.fcgi: $(OBJECTS) # link %.fcgi: %.o $(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@ # .cpp -> .o %.o: %.cpp $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ clean: -rm -f *.o *.fcgi deb: dpkg-buildpackage deb-src: clean dh_clean dh_auto_clean dpkg-source -b -I.git -Iresult . $(DISTROS): deb-src sudo pbuilder build --basetgz /var/cache/pbuilder/$@.tgz --buildresult result/$@ ../whiteboard_$(VERSION).dsc debsign result/$@/whiteboard_$(VERSION)_amd64.changes debs: $(DISTROS) .PHONY: clean