# makefile for rpmorphan
# is used to build rpm package 
# or for tar.gz install (not recommended)
# $Id: Makefile 157 2009-11-25 12:05:51Z gerbier $
# recommanded by debian install guide
DESTDIR=

PACKAGE=rpmorphan

SHELL = /bin/sh
VERSION=$(shell grep Version rpmorphan.lsm | awk '{print $$2}')

BINDIR = $(DESTDIR)/usr/bin
LOGROT = $(DESTDIR)/etc/logrotate.d/
MANDIR = $(DESTDIR)/usr/share/man
MAN1DIR = $(MANDIR)/man1
# on some distribution it is $(PACKAGE) (mandriva) on other $(PACKAGE)-$(VERSION) (fedora)
DOCDIR=$(DESTDIR)/usr/share/doc/$(PACKAGE)-$(VERSION)
# for keep file
DATADIR=$(DESTDIR)/var/lib/rpmorphan

# log
LOGDIR=$(DESTDIR)/var/log
LOGFILE=rpmorphan.log

DOC = Authors Changelog COPYING NEWS Todo $(PACKAGE).lsm $(PACKAGE).spec Makefile Readme Readme.fr rpmorphanrc.sample
DATA = keep
CONF = rpmorphan.logrotate

# others programs
PROG2=rpmusage rpmdep rpmduplicates
LIB=$(PACKAGE)-lib

PROGS =  $(PACKAGE) $(PROG2)
MANPAGES1 := $(addsuffix .1, $(PROGS))
HTMLPAGES := $(addsuffix .1.html, $(PROGS))
SCRIPTS := $(addsuffix .pl, $(PROGS) $(LIB) )

# convert pod to other doc format
%.1 : %.pl
	pod2man $^ > $@

%.1.html : %.pl
	pod2html --header $^ | sed -f html.sed > $@
	tidy -m -i -asxhtml --doctype strict $@ || echo "tidy"

# loop to check all perl scripts
define check_perl_script
	for fic in $(SCRIPTS);do	\
		perl -cw $$fic || exit;		\
		perlcritic --verbose 10 -1 $$fic || exit;	\
	done;
endef

# loop to make links on all programs
define make_links
	for fic in $(PROGS);do        \
		cd $(BINDIR) && ln -s $$fic.pl $$fic;	\
	done;
endef

# default
help :
	@echo "available target are :"
	@echo "make all : same as make install"
	@echo "make check : check perl syntaxe"
	@echo "make clean : remove temporary files"
	@echo "make dist : build a tar.gz package"
	@echo "make help : this help"
	@echo "make html : build html doc from pod"
	@echo "make install : install software"
	@echo "make installdoc : install software documentation"
	@echo "make man : build man page from pod"
	@echo "make rpm : build an rpm package"
	@echo "make uninstall : remove software"
	@echo "make uninstalldoc : remove software documentation"

check : $(SCRIPTS)
	$(check_perl_script)

man : $(MANPAGES1)

all: install

install : $(DOC) $(MANPAGES1) $(SCRIPTS)
	mkdir -p              $(BINDIR)
	install -m 755 $(SCRIPTS) $(BINDIR)
	$(make_links)
	mkdir -p                $(MAN1DIR)
	install -m 644 ${MANPAGES1} $(MAN1DIR)
	mkdir -p                $(DATADIR)
	install -m 644 ${DATA}	$(DATADIR)
	mkdir -p                $(LOGDIR)
	touch	$(LOGDIR)/${LOGFILE}
	chmod 640 $(LOGDIR)/${LOGFILE}
	mkdir -p		$(LOGROT)
	install -m 644 ${CONF} $(LOGROT)/rpmorphan

# doc install is not in install target as it is not necessary 
# for rpm packages
installdoc : $(DOC)
	mkdir -p                $(DOCDIR)
	install -m 644 ${DOC}	$(DOCDIR)

uninstall :
	cd $(BINDIR) && rm $(SCRIPTS) $(PROGS)
	cd $(MAN1DIR) && rm ${MANPAGES1}
	rm -rf $(DATADIR)
	rm -f $(LOGROT)/rpmorphan

uninstalldoc :
	rm -rf $(DOCDIR)

dist : $(DOC) $(MANPAGES1) $(SCRIPTS)
	mkdir $(PACKAGE)-$(VERSION)
	cp ${CONF} $(DATA) $(DOC) $(MANPAGES1) $(SCRIPTS) $(PACKAGE)-$(VERSION)
	tar cvfz $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
	rm -rf $(PACKAGE)-$(VERSION)

rpm : dist
	rpmbuild -ta --sign $(PACKAGE)-$(VERSION).tar.gz
	
clean :
	rm -f $(MANPAGES1)
	rm -f $(PACKAGE)-$(VERSION).tar.gz
	rm -f pod2*
	rm -f *.html

# to be done on root account juster after the package install

html : $(HTMLPAGES)
