#
# Makefile for LCOV
#
# Make targets:
#   - install:   install LCOV tools and man pages on the system
#   - uninstall: remove tools and man pages from the system
#   - dist:      create files required for distribution, i.e. the lcov.tar.gz
#                and the lcov.rpm file. Just make sure to adjust the VERSION
#                and RELEASE variables below - both version and date strings
#                will be updated in all necessary files.
#   - clean:     remove all generated files
#

VERSION := 1.10
RELEASE := 1

CFG_DIR := $(PREFIX)/etc
BIN_DIR := $(PREFIX)/usr/bin
MAN_DIR := $(PREFIX)/usr/share/man
TMP_DIR := /tmp/lcov-tmp.$(shell echo $$$$)
FILES   := $(wildcard bin/*) $(wildcard man/*) README CHANGES Makefile \
	   $(wildcard rpm/*) lcovrc

.PHONY: all info clean install uninstall rpms

all: info

info:
	@echo "Available make targets:"
	@echo "  install   : install binaries and man pages in PREFIX (default /)"
	@echo "  uninstall : delete binaries and man pages from PREFIX (default /)"
	@echo "  dist      : create packages (RPM, tarball) ready for distribution"

clean:
	rm -f lcov-*.tar.gz
	rm -f lcov-*.rpm
	make -C example clean

install:
	bin/install.sh bin/lcov $(BIN_DIR)/lcov -m 755
	bin/install.sh bin/genhtml $(BIN_DIR)/genhtml -m 755
	bin/install.sh bin/geninfo $(BIN_DIR)/geninfo -m 755
	bin/install.sh bin/genpng $(BIN_DIR)/genpng -m 755
	bin/install.sh bin/gendesc $(BIN_DIR)/gendesc -m 755
	bin/install.sh man/lcov.1 $(MAN_DIR)/man1/lcov.1 -m 644
	bin/install.sh man/genhtml.1 $(MAN_DIR)/man1/genhtml.1 -m 644
	bin/install.sh man/geninfo.1 $(MAN_DIR)/man1/geninfo.1 -m 644
	bin/install.sh man/genpng.1 $(MAN_DIR)/man1/genpng.1 -m 644
	bin/install.sh man/gendesc.1 $(MAN_DIR)/man1/gendesc.1 -m 644
	bin/install.sh man/lcovrc.5 $(MAN_DIR)/man5/lcovrc.5 -m 644
	bin/install.sh lcovrc $(CFG_DIR)/lcovrc -m 644

uninstall:
	bin/install.sh --uninstall bin/lcov $(BIN_DIR)/lcov
	bin/install.sh --uninstall bin/genhtml $(BIN_DIR)/genhtml
	bin/install.sh --uninstall bin/geninfo $(BIN_DIR)/geninfo
	bin/install.sh --uninstall bin/genpng $(BIN_DIR)/genpng
	bin/install.sh --uninstall bin/gendesc $(BIN_DIR)/gendesc
	bin/install.sh --uninstall man/lcov.1 $(MAN_DIR)/man1/lcov.1
	bin/install.sh --uninstall man/genhtml.1 $(MAN_DIR)/man1/genhtml.1
	bin/install.sh --uninstall man/geninfo.1 $(MAN_DIR)/man1/geninfo.1
	bin/install.sh --uninstall man/genpng.1 $(MAN_DIR)/man1/genpng.1
	bin/install.sh --uninstall man/gendesc.1 $(MAN_DIR)/man1/gendesc.1
	bin/install.sh --uninstall man/lcovrc.5 $(MAN_DIR)/man5/lcovrc.5
	bin/install.sh --uninstall lcovrc $(CFG_DIR)/lcovrc

dist: lcov-$(VERSION).tar.gz lcov-$(VERSION)-$(RELEASE).noarch.rpm \
      lcov-$(VERSION)-$(RELEASE).src.rpm

lcov-$(VERSION).tar.gz: $(FILES)
	mkdir $(TMP_DIR)
	mkdir $(TMP_DIR)/lcov-$(VERSION)
	cp -r * $(TMP_DIR)/lcov-$(VERSION)
	find $(TMP_DIR)/lcov-$(VERSION) -name CVS -type d | xargs rm -rf
	make -C $(TMP_DIR)/lcov-$(VERSION) clean
	bin/updateversion.pl $(TMP_DIR)/lcov-$(VERSION) $(VERSION) $(RELEASE)
	cd $(TMP_DIR) ; \
	tar cfz $(TMP_DIR)/lcov-$(VERSION).tar.gz lcov-$(VERSION)
	mv $(TMP_DIR)/lcov-$(VERSION).tar.gz .
	rm -rf $(TMP_DIR)

lcov-$(VERSION)-$(RELEASE).noarch.rpm: rpms
lcov-$(VERSION)-$(RELEASE).src.rpm: rpms

rpms: lcov-$(VERSION).tar.gz
	mkdir $(TMP_DIR)
	mkdir $(TMP_DIR)/BUILD
	mkdir $(TMP_DIR)/RPMS
	mkdir $(TMP_DIR)/SOURCES
	mkdir $(TMP_DIR)/SRPMS
	cp lcov-$(VERSION).tar.gz $(TMP_DIR)/SOURCES
	cd $(TMP_DIR)/BUILD ; \
	tar xfz $(TMP_DIR)/SOURCES/lcov-$(VERSION).tar.gz \
		lcov-$(VERSION)/rpm/lcov.spec
	rpmbuild --define '_topdir $(TMP_DIR)' \
		 -ba $(TMP_DIR)/BUILD/lcov-$(VERSION)/rpm/lcov.spec
	mv $(TMP_DIR)/RPMS/noarch/lcov-$(VERSION)-$(RELEASE).noarch.rpm .
	mv $(TMP_DIR)/SRPMS/lcov-$(VERSION)-$(RELEASE).src.rpm .
	rm -rf $(TMP_DIR)
