# project and version
PROJECT = masterkey
VERSION = 0.5.1

# debian package names
MKEY = masterkey
MKEYCORE = masterkey-core
MKEYGUI_DEFAULT = masterkey-gui-default
MKEYAUTH = masterkey-auth
MKEYEXAMPLE = masterkey-gui-example

#overridable from command line like this:
#  make PREFIX=/some/dest/dir install
PREFIX ?= /usr/local

FILES_ROOT = Makefile LICENSE README ChangeLog

FILES_DEB = \
   debian/changelog \
   debian/compat \
   debian/control \
   debian/copyright \
   debian/masterkey-auth.dirs \
   debian/masterkey-auth.docs \
   debian/masterkey-auth.postinst \
   debian/masterkey-auth.postrm \
   debian/masterkey-auth.preinst \
   debian/masterkey-core.dirs \
   debian/masterkey-core.docs \
   debian/masterkey-core.postinst \
   debian/masterkey-core.postrm \
   debian/masterkey-core.preinst \
   debian/masterkey-gui-default.dirs \
   debian/masterkey-gui-default.docs \
   debian/masterkey-gui-default.postinst \
   debian/masterkey-gui-default.postrm \
   debian/masterkey-gui-default.preinst \
   debian/masterkey-gui-example.dirs \
   debian/masterkey-gui-example.docs \
   debian/README.Debian \
   debian/rules

PROPEL_RUNTIME = masterkey-auth/propel
PROPEL_BUILD = masterkey-auth/php/propel_build
PROPEL_SOURCE = /usr/share/php/propel

DISTCLEAN = $(PROPEL_BUILD) $(PROPEL_RUNTIME)

FINDSUFFIXES = -type f \
   -name '*.conf' \
   -o -name '*.css' \
   -o -name '*.gif' \
   -o -name '*.html' \
   -o -name '*.js' \
   -o -name '*.map' \
   -o -name '*.php' \
   -o -name '*.phpi' \
   -o -name '*.sh' \
   -o -name '*.sql' \
   -o -name '*.xml' \
   -o -name '*.xsl'

FILES_ETC_MKEYCORE := $(shell find masterkey-core/etc $(FINDSUFFIXES))
FILES_SHARE_MKEYCORE := $(shell find masterkey-core $(FINDSUFFIXES))

FILES_ETC_MKEYGUI_DEFAULT := \
   $(shell find masterkey-gui-default/etc $(FINDSUFFIXES))
FILES_SHARE_MKEYGUI_DEFAULT := \
   $(shell find masterkey-gui-default $(FINDSUFFIXES))

FILES_ETC_MKEYAUTH := $(shell find masterkey-auth/etc $(FINDSUFFIXES))
FILES_SHARE_MKEYAUTH := $(shell find masterkey-auth $(FINDSUFFIXES))


###############################################################################
# DO NOT EDIT BELOW THIS LINE
###############################################################################

# distribution package names
DISTNAME = $(PROJECT)-$(VERSION)
SOURCENAME_MKEY = $(MKEY)-$(VERSION)
PACKNAME_MKEYCORE = $(MKEYCORE)-$(VERSION)
SOURCENAME_MKEY = $(MKEY)-$(VERSION)
PACKNAME_MKEYGUI_DEFAULT = $(MKEYGUI_DEFAULT)-$(VERSION)
PACKNAME_MKEYAUTH = $(MKEYAUTH)-$(VERSION)
PACKNAME_MKEYEXAMPLE = $(MKEYEXAMPLE)-$(VERSION)

# /usr => /etc . Other, say /usr/local => /usr/local/etc
ifeq ($(PREFIX), /usr)
ETC_DIR=/etc/masterkey
else
ETC_DIR=$(PREFIX)/etc/masterkey
endif

DEST_ETC_MKEYCORE = $(DEST_MKEYCORE)$(ETC_DIR)
DEST_SHARE_MKEYCORE = $(DEST_MKEYCORE)$(PREFIX)/share/$(MKEYCORE)
DEST_ETC_MKEYGUI_DEFAULT = $(DEST_MKEYGUI_DEFAULT)$(ETC_DIR)
DEST_SHARE_MKEYGUI_DEFAULT = $(DEST_MKEYGUI_DEFAULT)$(PREFIX)/share/$(MKEYGUI_DEFAULT)
DEST_ETC_MKEYAUTH = $(DEST_MKEYAUTH)$(ETC_DIR)
DEST_SHARE_MKEYAUTH = $(DEST_MKEYAUTH)$(PREFIX)/share/$(MKEYAUTH)
DEST_SHARE_MKEYEXAMPLE = $(DEST_MKEYEXAMPLE)$(PREFIX)/share/$(MKEYEXAMPLE)

INSTALLS_ETC_MKEYCORE = $(FILES_ETC_MKEYCORE:masterkey-core/etc%=%)
DIRS_ETC_MKEYCORE  = $(sort $(dir $(INSTALLS_ETC_MKEYCORE)))
INSTALLS_SHARE_MKEYCORE = $(FILES_SHARE_MKEYCORE:masterkey-core%=%)
DIRS_SHARE_MKEYCORE  = $(sort $(dir $(INSTALLS_SHARE_MKEYCORE)))

INSTALLS_ETC_MKEYGUI_DEFAULT = $(FILES_ETC_MKEYGUI_DEFAULT:masterkey-gui-default/etc%=%)
DIRS_ETC_MKEYGUI_DEFAULT  = $(sort $(dir $(INSTALLS_ETC_MKEYGUI_DEFAULT)))
INSTALLS_SHARE_MKEYGUI_DEFAULT = $(FILES_SHARE_MKEYGUI_DEFAULT:masterkey-gui-default%=%)
DIRS_SHARE_MKEYGUI_DEFAULT  = $(sort $(dir $(INSTALLS_SHARE_MKEYGUI_DEFAULT)))


INSTALLS_ETC_MKEYAUTH = $(FILES_ETC_MKEYAUTH:masterkey-auth/etc%=%)
DIRS_ETC_MKEYAUTH  = $(sort $(dir $(INSTALLS_ETC_MKEYAUTH)))
INSTALLS_SHARE_MKEYAUTH = $(FILES_SHARE_MKEYAUTH:masterkey-auth%=%)
DIRS_SHARE_MKEYAUTH  = $(sort $(dir $(INSTALLS_SHARE_MKEYAUTH)))




FILES_DIST = $(FILES_ROOT) $(FILES_DEB) \
             $(FILES_ETC_MKEYCORE) $(FILES_SHARE_MKEYCORE) \
             $(FILES_ETC_MKEYGUI_DEFAULT) $(FILES_SHARE_MKEYGUI_DEFAULT) \
             $(FILES_ETC_MKEYAUTH) $(FILES_SHARE_MKEYAUTH) 



DIRS_DIST = $(sort $(dir $(FILES_DIST)))

build: 
	@echo "source: " $(DISTNAME)
	@echo "package:" $(PACKNAME_MKEYCORE)
	@echo "package:" $(PACKNAME_MKEYGUI_DEFAULT)
	@echo "package:" $(PACKNAME_MKEYAUTH)
	@test -d $(PROPEL_BUILD)  \
           || { \
              echo "building Propel generated classes" ; \
              masterkey-auth/conf/build/perform-build.sh ; \
              }
	@test -d $(PROPEL_RUNTIME) \
	   || { \
              echo "copying PEAR Propel runtime classes" ; \
              test -d $(PROPEL_SOURCE) \
              || { echo "You need to have installed PEAR Propel!!!"; exit 1; } ; \
	      mkdir $(PROPEL_RUNTIME); \
              cp -rv $(PROPEL_SOURCE)/* $(PROPEL_RUNTIME) ; \
              }
	@echo "package:" $(PACKNAME_MKEYEXAMPLE)
	$(MAKE) example


clean:
	rm -rf $(DISTNAME)
	rm -f debian/files
	rm -rf debian/$(MKEYCORE)
	rm -rf debian/$(MKEYGUI_DEFAULT)
	rm -rf debian/$(MKEYAUTH)
	rm -rf debian/$(MKEYEXAMPLE)
	rm -rf debian/$(PROJECT)
	rm -f $(MKEYEXAMPLE).tar.gz 

distclean: clean
	rm -rf $(DISTCLEAN)

show:

install: 
	@echo "install:" $(MKEYCORE)
	@echo "     in:" $(DEST_ETC_MKEYCORE)
	test -d  $(PROPEL_BUILD) \
           || { echo "You need to run 'make' first!!!"; exit 1; }
	test -d  $(PROPEL_RUNTIME) \
           || { echo "You need to run 'make' first!!!"; exit 1; }
	@for DIR in $(DIRS_ETC_MKEYCORE); do \
            echo  "     in:" $(DEST_ETC_MKEYCORE)$$DIR; \
            mkdir -p $(DEST_ETC_MKEYCORE)$$DIR; \
        done
	@for FILE in $(INSTALLS_ETC_MKEYCORE); do \
            echo masterkey-core/etc$$FILE "-->" $(DEST_ETC_MKEYCORE)$$FILE; \
            cp masterkey-core/etc$$FILE  $(DEST_ETC_MKEYCORE)$$FILE; \
        done
	@echo "     in:" $(DEST_SHARE_MKEYCORE)
	@for DIR in $(DIRS_SHARE_MKEYCORE); do \
            echo  "     in:" $(DEST_SHARE_MKEYCORE)$$DIR; \
            mkdir -p $(DEST_SHARE_MKEYCORE)$$DIR; \
        done
	@for FILE in $(INSTALLS_SHARE_MKEYCORE); do \
            echo masterkey-core$$FILE "-->" $(DEST_SHARE_MKEYCORE)$$FILE; \
            cp masterkey-core$$FILE  $(DEST_SHARE_MKEYCORE)$$FILE; \
        done
	@echo ""

	@echo "install:" $(MKEYGUI_DEFAULT)
	@echo "     in:" $(DEST_ETC_MKEYGUI_DEFAULT)
	@for DIR in $(DIRS_ETC_MKEYGUI_DEFAULT); do \
            echo  "     in:" $(DEST_ETC_MKEYGUI_DEFAULT)$$DIR; \
            mkdir -p $(DEST_ETC_MKEYGUI_DEFAULT)$$DIR; \
        done
	@for FILE in $(INSTALLS_ETC_MKEYGUI_DEFAULT); do \
            echo masterkey-gui-default/etc$$FILE "-->" $(DEST_ETC_MKEYGUI_DEFAULT)$$FILE; \
            cp masterkey-gui-default/etc$$FILE  $(DEST_ETC_MKEYGUI_DEFAULT)$$FILE; \
        done
	@echo "     in:" $(DEST_SHARE_MKEYGUI_DEFAULT)
	@for DIR in $(DIRS_SHARE_MKEYGUI_DEFAULT); do \
            echo  "     in:" $(DEST_SHARE_MKEYGUI_DEFAULT)$$DIR; \
            mkdir -p $(DEST_SHARE_MKEYGUI_DEFAULT)$$DIR; \
        done
	@for FILE in $(INSTALLS_SHARE_MKEYGUI_DEFAULT); do \
            echo masterkey-gui-default$$FILE "-->" $(DEST_SHARE_MKEYGUI_DEFAULT)$$FILE; \
            cp masterkey-gui-default$$FILE  $(DEST_SHARE_MKEYGUI_DEFAULT)$$FILE; \
        done
	@echo ""

	@echo "install:" $(MKEYAUTH)
	@echo "     in:" $(DEST_ETC_MKEYAUTH)
	@echo "     in:" $(DEST_SHARE_MKEYAUTH)
	@for DIR in $(DIRS_ETC_MKEYAUTH); do \
            echo  "     in:" $(DEST_ETC_MKEYAUTH)$$DIR; \
            mkdir -p $(DEST_ETC_MKEYAUTH)$$DIR; \
        done
	@for FILE in $(INSTALLS_ETC_MKEYAUTH); do \
            echo masterkey-auth/etc$$FILE "-->" $(DEST_ETC_MKEYAUTH)$$FILE; \
            cp masterkey-auth/etc$$FILE  $(DEST_ETC_MKEYAUTH)$$FILE; \
        done
	@for DIR in $(DIRS_SHARE_MKEYAUTH); do \
            echo  "     in:" $(DEST_SHARE_MKEYAUTH)$$DIR; \
            mkdir -p $(DEST_SHARE_MKEYAUTH)$$DIR; \
        done
	@for FILE in $(INSTALLS_SHARE_MKEYAUTH); do \
            echo masterkey-auth$$FILE "-->" $(DEST_SHARE_MKEYAUTH)$$FILE; \
            cp masterkey-auth$$FILE  $(DEST_SHARE_MKEYAUTH)$$FILE; \
        done
	@echo ""
	@echo "install:" $(MKEYEXAMPLE)
	@echo "     in:" $(DEST_SHARE_MKEYEXAMPLE)
	cp $(MKEYEXAMPLE).tar.gz $(DEST_SHARE_MKEYEXAMPLE)
	@echo ""


dist:
	@echo "Building distribution" $(DISTNAME)
	@test -d  $(PROPEL_RUNTIME) \
           || { echo "You need to run 'make' first!!!"; exit 1; }
	@test -d  $(PROPEL_BUILD) \
           || { echo "You need to run 'make' first!!!"; exit 1; }
	@mkdir -p $(DISTNAME)
	@for DIR in $(DIRS_DIST); do \
            #echo "Creating subdirectory" $(DISTNAME)/$$DIR; \
            mkdir -p  $(DISTNAME)/$$DIR; \
        done
	cvs2cl
	@for FILE in $(FILES_DIST); do \
            #echo $$FILE "-->" $(DISTNAME)/$$FILE; \
            cp $$FILE $(DISTNAME)/$$FILE; \
        done
	@tar cvzf $(DISTNAME).tar.gz $(DISTNAME)


example:
	@echo "Building example tarball" $(MKEYEXAMPLE).tar.gz
	ln -s $(MKEYGUI_DEFAULT) $(MKEYEXAMPLE)
	tar cvzhf $(MKEYEXAMPLE).tar.gz --exclude=CVS $(MKEYEXAMPLE)
	rm -f $(MKEYEXAMPLE)


debian:
	dpkg-buildpackage -rfakeroot



.PHONY : build clean install dist debian example

