include common.mk VERSION=$(shell dpkg-parsechangelog --show-field Version) DISTROS=base debian11 ubuntu2204 ubuntu2210 PROJECTNAME=libreichwein 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) 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 test: $(MAKE) -C tests # dependencies ADD_DEP=Makefile # misc --------------------------------------------------- clean: -rm -f *.o *.a *.d $(SONAME1) $(SONAME2) $(SONAME3) $(MAKE) -C tests clean .PHONY: clean all install test -include $(wildcard $(SRC:.cpp=.d))