15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Makefile for LCOV
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make targets:
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   - install:   install LCOV tools and man pages on the system
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   - uninstall: remove tools and man pages from the system
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   - dist:      create files required for distribution, i.e. the lcov.tar.gz
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#                and the lcov.rpm file. Just make sure to adjust the VERSION
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#                and RELEASE variables below - both version and date strings
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#                will be updated in all necessary files.
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   - clean:     remove all generated files
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)VERSION := 1.10
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RELEASE := 1
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFG_DIR := $(PREFIX)/etc
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_DIR := $(PREFIX)/usr/bin
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MAN_DIR := $(PREFIX)/usr/share/man
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TMP_DIR := /tmp/lcov-tmp.$(shell echo $$$$)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FILES   := $(wildcard bin/*) $(wildcard man/*) README CHANGES Makefile \
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   $(wildcard rpm/*) lcovrc
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles).PHONY: all info clean install uninstall rpms
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)all: info
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)info:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	@echo "Available make targets:"
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	@echo "  install   : install binaries and man pages in PREFIX (default /)"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	@echo "  uninstall : delete binaries and man pages from PREFIX (default /)"
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	@echo "  dist      : create packages (RPM, tarball) ready for distribution"
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)clean:
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rm -f lcov-*.tar.gz
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rm -f lcov-*.rpm
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	make -C example clean
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)install:
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh bin/lcov $(BIN_DIR)/lcov -m 755
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh bin/genhtml $(BIN_DIR)/genhtml -m 755
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh bin/geninfo $(BIN_DIR)/geninfo -m 755
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh bin/genpng $(BIN_DIR)/genpng -m 755
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh bin/gendesc $(BIN_DIR)/gendesc -m 755
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh man/lcov.1 $(MAN_DIR)/man1/lcov.1 -m 644
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh man/genhtml.1 $(MAN_DIR)/man1/genhtml.1 -m 644
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh man/geninfo.1 $(MAN_DIR)/man1/geninfo.1 -m 644
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh man/genpng.1 $(MAN_DIR)/man1/genpng.1 -m 644
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh man/gendesc.1 $(MAN_DIR)/man1/gendesc.1 -m 644
503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh man/lcovrc.5 $(MAN_DIR)/man5/lcovrc.5 -m 644
513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	bin/install.sh lcovrc $(CFG_DIR)/lcovrc -m 644
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)uninstall:
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall bin/lcov $(BIN_DIR)/lcov
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall bin/genhtml $(BIN_DIR)/genhtml
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall bin/geninfo $(BIN_DIR)/geninfo
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall bin/genpng $(BIN_DIR)/genpng
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall bin/gendesc $(BIN_DIR)/gendesc
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall man/lcov.1 $(MAN_DIR)/man1/lcov.1
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall man/genhtml.1 $(MAN_DIR)/man1/genhtml.1
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall man/geninfo.1 $(MAN_DIR)/man1/geninfo.1
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall man/genpng.1 $(MAN_DIR)/man1/genpng.1
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall man/gendesc.1 $(MAN_DIR)/man1/gendesc.1
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall man/lcovrc.5 $(MAN_DIR)/man5/lcovrc.5
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/install.sh --uninstall lcovrc $(CFG_DIR)/lcovrc
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dist: lcov-$(VERSION).tar.gz lcov-$(VERSION)-$(RELEASE).noarch.rpm \
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lcov-$(VERSION)-$(RELEASE).src.rpm
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lcov-$(VERSION).tar.gz: $(FILES)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)/lcov-$(VERSION)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cp -r * $(TMP_DIR)/lcov-$(VERSION)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	find $(TMP_DIR)/lcov-$(VERSION) -name CVS -type d | xargs rm -rf
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	make -C $(TMP_DIR)/lcov-$(VERSION) clean
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	bin/updateversion.pl $(TMP_DIR)/lcov-$(VERSION) $(VERSION) $(RELEASE)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cd $(TMP_DIR) ; \
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	tar cfz $(TMP_DIR)/lcov-$(VERSION).tar.gz lcov-$(VERSION)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mv $(TMP_DIR)/lcov-$(VERSION).tar.gz .
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rm -rf $(TMP_DIR)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lcov-$(VERSION)-$(RELEASE).noarch.rpm: rpms
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lcov-$(VERSION)-$(RELEASE).src.rpm: rpms
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rpms: lcov-$(VERSION).tar.gz
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)/BUILD
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)/RPMS
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)/SOURCES
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mkdir $(TMP_DIR)/SRPMS
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cp lcov-$(VERSION).tar.gz $(TMP_DIR)/SOURCES
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cd $(TMP_DIR)/BUILD ; \
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	tar xfz $(TMP_DIR)/SOURCES/lcov-$(VERSION).tar.gz \
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lcov-$(VERSION)/rpm/lcov.spec
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rpmbuild --define '_topdir $(TMP_DIR)' \
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 -ba $(TMP_DIR)/BUILD/lcov-$(VERSION)/rpm/lcov.spec
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mv $(TMP_DIR)/RPMS/noarch/lcov-$(VERSION)-$(RELEASE).noarch.rpm .
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	mv $(TMP_DIR)/SRPMS/lcov-$(VERSION)-$(RELEASE).src.rpm .
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rm -rf $(TMP_DIR)
100