include common.mk VERSION=$(shell dpkg-parsechangelog --show-field Version) DISTROS=base debian11 ubuntu2204 ubuntu2210 PROJECTNAME=libreichwein TGZNAME=$(shell ls -t ../$(PROJECTNAME)-*.tar.xz | head -n1 | sed -e 's,^../,,') DESTDIR=/ SONAME1=libreichwein.so SONAME2=libreichwein.so.0 SONAME3=libreichwein.so.0.0.0 # By default, don't export. Explicitly mark exports in C++ with: # __attribute__((visibility("default"))) CXXFLAGS+=-fvisibility=hidden CXXFLAGS+=-fPIC PROGSRC=\ base64.cpp \ file.cpp \ mime.cpp \ os.cpp \ stringhelper.cpp \ tempfile.cpp \ url.cpp SRC=$(PROGSRC) HEADERS=$(PROGSRC:.cpp=.h) archive.h all: staticlib sharedlib staticlib: $(PROJECTNAME).a sharedlib: $(SONAME3) $(SONAME3): $(PROGSRC:.cpp=.o) $(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(SONAME2) -o $@ $^ install: mkdir -p $(DESTDIR)/usr/lib cp $(PROJECTNAME).a $(DESTDIR)/usr/lib/ mkdir -p $(DESTDIR)/usr/include/libreichwein cp $(HEADERS) $(DESTDIR)/usr/include/libreichwein/ install $(SONAME3) $(DESTDIR)/usr/lib/$(SONAME3) ln -sf $(SONAME3) $(DESTDIR)/usr/lib/$(SONAME2) ln -sf $(SONAME2) $(DESTDIR)/usr/lib/$(SONAME1) $(PROJECTNAME).a: $(SRC:.cpp=.o) ar rcs $@ $^ dep: $(SRC:.cpp=.d) %.d: %.cpp $(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $< %.o: %.cpp %.d $(CXX) $(CXXFLAGS) -c $< -o $@ deb: dpkg-buildpackage -rfakeroot deb-src: dh_clean dh_auto_clean dpkg-source -b -I.git -Iresult -Ifastcgi -Icgi-bin . $(DISTROS): deb-src sudo pbuilder build --basetgz /var/cache/pbuilder/$@.tgz --buildresult result/$@ ../libreichwein_$(VERSION).dsc -debsign result/$@/libreichwein_$(VERSION)_amd64.changes debs: $(DISTROS) upload: scp ../$(TGZNAME) antcom.de:/var/www/reichwein.it-download/ scp -r result antcom.de: scp -r remote-install.sh antcom.de: ssh antcom.de ./remote-install.sh $(PROJECTNAME) $(VERSION) ssh antcom.de rm -rf remote-install.sh result test: $(MAKE) -C tests # dependencies ADD_DEP=Makefile DISTFILES=$(shell git ls-files 2>/dev/null) ifeq ($(DISTFILES),) DISTFILES= \ endif dist: clean rm -rf $(PROJECTNAME)-$(VERSION) mkdir $(PROJECTNAME)-$(VERSION) cp --parents -r $(DISTFILES) $(PROJECTNAME)-$(VERSION) tar cfJ ../$(PROJECTNAME)-$(VERSION).tar.xz $(PROJECTNAME)-$(VERSION) rm -rf $(PROJECTNAME)-$(VERSION) ls -l ../$(PROJECTNAME)-$(VERSION).tar.xz # misc --------------------------------------------------- clean: -rm -f *.o *.a *.d $(SONAME1) $(SONAME2) $(SONAME3) $(MAKE) -C tests clean .PHONY: clean all install test -include $(wildcard $(SRC:.cpp=.d))