PREFIX ?= /usr/local
SBINDIR = $(DESTDIR)$(PREFIX)/sbin
MANDIR  = $(DESTDIR)$(PREFIX)/share/man/man
MENUDIR = $(DESTDIR)$(PREFIX)/share/applications
ICONDIR = $(DESTDIR)$(PREFIX)/share/icons/hicolor/64x64/apps
LIBEXECDIR = $(DESTDIR)$(PREFIX)/libexec

ifeq ("$(PREFIX)", "/usr")
PERLDIR = $(DESTDIR)$(PREFIX)/share/perl5
else
PERLDIR = $(DESTDIR)$(PREFIX)/lib/site_perl
endif

perl_modules = Multistate LSB
pm_files = $(addsuffix .pm,$(addprefix lib/App/SysVRcConf/,$(perl_modules)))
pm_manpages = $(addsuffix .3perl,$(addprefix App::SysVRcConf::,$(perl_modules)))

xdg_entries = sysv-rc-conf

stripdest = $(patsubst $(DESTDIR)%,%,$1)
pathsubsts = $(addprefix -e,s,/usr/sbin,$(call stripdest,$(SBINDIR)),g \
                            s,/usr/libexec,$(call stripdest,$(LIBEXECDIR)),g)

all: man sysv-rc-conf.png

.PHONY: man
man:
	pod2man -s 8 -c ' ' sysv-rc-conf.pl sysv-rc-conf.8
	pod2man -s 3perl -c ' ' $(foreach pm,$(perl_modules),lib/App/SysVRcConf/$(pm).pm App::SysVRcConf::$(pm).3perl)

sysv-rc-conf.png: sysv-rc-conf.svg
	rsvg-convert --width 64 --output $@ $<

.PHONY: install
install: man
	mkdir -p $(SBINDIR) $(MANDIR)8 $(MENUDIR) $(ICONDIR) $(LIBEXECDIR)
	install -m644 -D -t $(PERLDIR)/App/SysVRcConf $(pm_files)
	install -m755 sysv-rc-conf.pl $(SBINDIR)/sysv-rc-conf
	install -m644 sysv-rc-conf.8 $(MANDIR)8
	install -m644 sysv-rc-conf.png $(ICONDIR)
	sed $(pathsubsts) sysv-rc-conf.desktop > $(MENUDIR)/sysv-rc-conf.desktop
	sed $(pathsubsts) sysv-rc-conf-desktop-wrapper > $(LIBEXECDIR)/sysv-rc-conf-desktop-wrapper
	chmod +x $(LIBEXECDIR)/sysv-rc-conf-desktop-wrapper

install-dev: install
	mkdir -p $(MANDIR)3
	install -m644 $(pm_manpages) $(MANDIR)3

.PHONY: uninstall
uninstall:
	$(RM) $(SBINDIR)/sysv-rc-conf
	$(RM) $(MANDIR)8/sysv-rc-conf.8.gz
	$(RM) $(addprefix $(MANDIR)3/,$(pm_manpages))
	$(RM) $(foreach pm,$(perl_modules),$(PERLDIR)/App/SysVRcConf/$(pm).pm)
	$(RM) $(foreach xdg,$(xdg_entries),$(MENUDIR)/$(xdg).desktop)
	$(RM) $(ICONDIR)/sysv-rc-conf.png
	$(RM) $(LIBEXECDIR)/sysv-rc-conf-desktop-wrapper

.PHONY: clean
clean:
	$(RM) *.8 $(pm_manpages) sysv-rc-conf.png
