1# 2# Makefile for LCOV 3# 4# Make targets: 5# - install: install LCOV tools and man pages on the system 6# - uninstall: remove tools and man pages from the system 7# - dist: create files required for distribution, i.e. the lcov.tar.gz 8# and the lcov.rpm file. Just make sure to adjust the VERSION 9# and RELEASE variables below - both version and date strings 10# will be updated in all necessary files. 11# - clean: remove all generated files 12# 13 14VERSION := $(shell bin/get_version.sh --version) 15RELEASE := $(shell bin/get_version.sh --release) 16FULL := $(shell bin/get_version.sh --full) 17 18# Set this variable during 'make install' to specify the Perl interpreter used in 19# installed scripts, or leave empty to keep the current interpreter. 20export LCOV_PERL_PATH := /usr/bin/perl 21 22PREFIX := /usr/local 23 24CFG_DIR := $(PREFIX)/etc 25BIN_DIR := $(PREFIX)/bin 26MAN_DIR := $(PREFIX)/man 27TMP_DIR := $(shell mktemp -d) 28FILES := $(wildcard bin/*) $(wildcard man/*) README Makefile \ 29 $(wildcard rpm/*) lcovrc 30 31.PHONY: all info clean install uninstall rpms test 32 33all: info 34 35info: 36 @echo "Available make targets:" 37 @echo " install : install binaries and man pages in DESTDIR (default /)" 38 @echo " uninstall : delete binaries and man pages from DESTDIR (default /)" 39 @echo " dist : create packages (RPM, tarball) ready for distribution" 40 @echo " check : perform self-tests" 41 42clean: 43 rm -f lcov-*.tar.gz 44 rm -f lcov-*.rpm 45 make -C example clean 46 make -C tests -s clean 47 48install: 49 bin/install.sh bin/lcov $(DESTDIR)$(BIN_DIR)/lcov -m 755 50 bin/install.sh bin/genhtml $(DESTDIR)$(BIN_DIR)/genhtml -m 755 51 bin/install.sh bin/geninfo $(DESTDIR)$(BIN_DIR)/geninfo -m 755 52 bin/install.sh bin/genpng $(DESTDIR)$(BIN_DIR)/genpng -m 755 53 bin/install.sh bin/gendesc $(DESTDIR)$(BIN_DIR)/gendesc -m 755 54 bin/install.sh man/lcov.1 $(DESTDIR)$(MAN_DIR)/man1/lcov.1 -m 644 55 bin/install.sh man/genhtml.1 $(DESTDIR)$(MAN_DIR)/man1/genhtml.1 -m 644 56 bin/install.sh man/geninfo.1 $(DESTDIR)$(MAN_DIR)/man1/geninfo.1 -m 644 57 bin/install.sh man/genpng.1 $(DESTDIR)$(MAN_DIR)/man1/genpng.1 -m 644 58 bin/install.sh man/gendesc.1 $(DESTDIR)$(MAN_DIR)/man1/gendesc.1 -m 644 59 bin/install.sh man/lcovrc.5 $(DESTDIR)$(MAN_DIR)/man5/lcovrc.5 -m 644 60 bin/install.sh lcovrc $(DESTDIR)$(CFG_DIR)/lcovrc -m 644 61 bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/lcov $(VERSION) $(RELEASE) $(FULL) 62 bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/genhtml $(VERSION) $(RELEASE) $(FULL) 63 bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/geninfo $(VERSION) $(RELEASE) $(FULL) 64 bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/genpng $(VERSION) $(RELEASE) $(FULL) 65 bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/gendesc $(VERSION) $(RELEASE) $(FULL) 66 bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/lcov.1 $(VERSION) $(RELEASE) $(FULL) 67 bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/genhtml.1 $(VERSION) $(RELEASE) $(FULL) 68 bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/geninfo.1 $(VERSION) $(RELEASE) $(FULL) 69 bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/genpng.1 $(VERSION) $(RELEASE) $(FULL) 70 bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/gendesc.1 $(VERSION) $(RELEASE) $(FULL) 71 bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man5/lcovrc.5 $(VERSION) $(RELEASE) $(FULL) 72 73uninstall: 74 bin/install.sh --uninstall bin/lcov $(DESTDIR)$(BIN_DIR)/lcov 75 bin/install.sh --uninstall bin/genhtml $(DESTDIR)$(BIN_DIR)/genhtml 76 bin/install.sh --uninstall bin/geninfo $(DESTDIR)$(BIN_DIR)/geninfo 77 bin/install.sh --uninstall bin/genpng $(DESTDIR)$(BIN_DIR)/genpng 78 bin/install.sh --uninstall bin/gendesc $(DESTDIR)$(BIN_DIR)/gendesc 79 bin/install.sh --uninstall man/lcov.1 $(DESTDIR)$(MAN_DIR)/man1/lcov.1 80 bin/install.sh --uninstall man/genhtml.1 $(DESTDIR)$(MAN_DIR)/man1/genhtml.1 81 bin/install.sh --uninstall man/geninfo.1 $(DESTDIR)$(MAN_DIR)/man1/geninfo.1 82 bin/install.sh --uninstall man/genpng.1 $(DESTDIR)$(MAN_DIR)/man1/genpng.1 83 bin/install.sh --uninstall man/gendesc.1 $(DESTDIR)$(MAN_DIR)/man1/gendesc.1 84 bin/install.sh --uninstall man/lcovrc.5 $(DESTDIR)$(MAN_DIR)/man5/lcovrc.5 85 bin/install.sh --uninstall lcovrc $(DESTDIR)$(CFG_DIR)/lcovrc 86 87dist: lcov-$(VERSION).tar.gz lcov-$(VERSION)-$(RELEASE).noarch.rpm \ 88 lcov-$(VERSION)-$(RELEASE).src.rpm 89 90lcov-$(VERSION).tar.gz: $(FILES) 91 mkdir $(TMP_DIR)/lcov-$(VERSION) 92 cp -r * $(TMP_DIR)/lcov-$(VERSION) 93 bin/copy_dates.sh . $(TMP_DIR)/lcov-$(VERSION) 94 make -C $(TMP_DIR)/lcov-$(VERSION) clean 95 bin/updateversion.pl $(TMP_DIR)/lcov-$(VERSION) $(VERSION) $(RELEASE) $(FULL) 96 bin/get_changes.sh > $(TMP_DIR)/lcov-$(VERSION)/CHANGES 97 cd $(TMP_DIR) ; \ 98 tar cfz $(TMP_DIR)/lcov-$(VERSION).tar.gz lcov-$(VERSION) \ 99 --owner root --group root 100 mv $(TMP_DIR)/lcov-$(VERSION).tar.gz . 101 rm -rf $(TMP_DIR) 102 103lcov-$(VERSION)-$(RELEASE).noarch.rpm: rpms 104lcov-$(VERSION)-$(RELEASE).src.rpm: rpms 105 106rpms: lcov-$(VERSION).tar.gz 107 mkdir $(TMP_DIR) 108 mkdir $(TMP_DIR)/BUILD 109 mkdir $(TMP_DIR)/RPMS 110 mkdir $(TMP_DIR)/SOURCES 111 mkdir $(TMP_DIR)/SRPMS 112 cp lcov-$(VERSION).tar.gz $(TMP_DIR)/SOURCES 113 cd $(TMP_DIR)/BUILD ; \ 114 tar xfz $(TMP_DIR)/SOURCES/lcov-$(VERSION).tar.gz \ 115 lcov-$(VERSION)/rpm/lcov.spec 116 rpmbuild --define '_topdir $(TMP_DIR)' --define '_buildhost localhost' \ 117 --undefine vendor --undefine packager \ 118 -ba $(TMP_DIR)/BUILD/lcov-$(VERSION)/rpm/lcov.spec 119 mv $(TMP_DIR)/RPMS/noarch/lcov-$(VERSION)-$(RELEASE).noarch.rpm . 120 mv $(TMP_DIR)/SRPMS/lcov-$(VERSION)-$(RELEASE).src.rpm . 121 rm -rf $(TMP_DIR) 122 123test: check 124 125check: 126 @make -s -C tests check 127