include common.mk VERSION=$(shell dpkg-parsechangelog --show-field Version) DISTROS=base debian11 ubuntu2204 ubuntu2210 PROJECTNAME=libreichwein TGZNAME=$(shell ls -t ../$(PROJECTNAME)-$(VERSION).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 \ process.cpp \ stringhelper.cpp \ tempfile.cpp \ url.cpp \ xml.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: dist 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= \ Makefile \ archive.h \ base64.cpp \ base64.h \ common.mk \ debian/README.Debian \ debian/changelog \ debian/compat \ debian/control \ debian/copyright \ debian/libreichwein-dev.install \ debian/libreichwein0.install \ debian/rules \ debian/source/format \ file.cpp \ file.h \ mime.cpp \ mime.h \ os.cpp \ os.h \ process.cpp \ process.h \ remote-install.sh \ stringhelper.cpp \ stringhelper.h \ tempfile.cpp \ tempfile.h \ xml.cpp \ xml.h \ tests/Makefile \ tests/test-archive.cpp \ tests/test-base64.cpp \ tests/test-file.cpp \ tests/test-mime.cpp \ tests/test-os.cpp \ tests/test-process.cpp \ tests/test-stringhelper.cpp \ tests/test-tempfile.cpp \ tests/test-url.cpp \ url.cpp \ url.h 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))