BINDIR=/usr/bin MODDIR=/usr/share/fhem VARDIR=/var/log/fhem DOCDIR=/usr/share/doc/fhem MANDIR=/usr/share/man/man1 ETCDIR=/etc # Used for .deb package creation RBINDIR=$(ROOT)$(BINDIR) RMODDIR=$(ROOT)$(MODDIR) RVARDIR=$(ROOT)$(VARDIR) RDOCDIR=$(ROOT)$(DOCDIR) RMANDIR=$(ROOT)$(MANDIR) RETCDIR=$(ROOT)$(ETCDIR) # Destination Directories DEST=$(RETCDIR) $(RBINDIR) $(RDOCDIR) $(RMODDIR) $(RMANDIR) $(RVARDIR) VERS=5.2 DATE=2011-12-31 DESTDIR=fhem-$(VERS) all: @echo "fhem $(VERS) - $(DATE)" @echo @echo "Use 'make ', where is" @echo " install - to install base files for fhem" @echo " install-pgm2 - to install base files and webgui pgm2 for fhem" @echo " dist - to create a compressed archivfile of fhem" @echo " deb - to create a .deb file of fhem" @echo " fb7390 - to create an imagefile for AVM Fritz!Box 7390" @echo " fb7270 - to create an imagefile for AVM Fritz!Box 7270" @echo " backup - to backup current installation of fhem" @echo " uninstall - to uninstall an existing fhem installation (with backup)" @echo @echo "Examples:" @echo " make install-pgm2" @echo " make deb" @echo @echo "Check Makefile for default installation paths!" @echo prepare: @echo "Preparing installation for fhem..." @echo "- create directories" @-$(foreach DIR,$(DEST), if [ ! -e $(DIR) ]; then mkdir -p $(DIR); fi; ) @echo "- fix permissions" @find ./FHEM -type f -print | xargs chmod 644 @find ./docs -type f -print | xargs chmod 644 @find ./examples -type f -print | xargs chmod 644 @echo "- modify examples" @rm -rf examples_changed @cp -r examples examples_changed @perl -pi -e 's,modpath \.,modpath $(MODDIR),' examples_changed/[a-z]* @perl -pi -e 's,([^h]) /tmp,$$1 $(VARDIR),' examples_changed/[a-z]* @-if [ -e $(RETCDIR)/fhem.cfg ]; then \ echo "- move existing configuration to fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`"; \ mv $(RETCDIR)/fhem.cfg $(RETCDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`; fi; @echo install:prepare install-base install-note install-pgm2:prepare install-base pgm2 install-note install-base: @echo "Install base files of fhem..." cp examples_changed/sample_fhem $(RETCDIR)/fhem.cfg cp fhem.pl $(RBINDIR) cp -r FHEM $(RMODDIR) cp -rp contrib $(RMODDIR) cp -rp docs/* $(RDOCDIR) cp docs/fhem.man $(RMANDIR)/fhem.pl.1 gzip -f -9 $(RMANDIR)/fhem.pl.1 install-note: @echo @echo "Housekeeping..." @rm -rf examples_changed @echo "- remove .svn stuff" find $(RMODDIR) -name .svn -print | xargs rm -rf find $(RDOCDIR) -name .svn -print | xargs rm -rf @echo @echo "Installation of fhem completed!" @echo @echo "To start fhem use" @echo "" @echo backup: @echo @echo "Backup current installation of fhem to .backup directory.." @-if [ ! -e .backup ]; then mkdir .backup; fi; @tar czf .backup/fhem-backup_`date +%y%m%d%H%M`.tar.gz \ $(RETCDIR)/fhem* $(RBINDIR)/fhem* $(RDOCDIR) $(RMODDIR) $(RMANDIR)/fhem* $(RVARDIR) uninstall:backup @echo @echo "Remove fhem installation..." rm -rf $(RETCDIR)/fhem.cfg rm -rf $(RBINDIR)/fhem.pl rm -rf $(RDOCDIR) rm -rf $(RMODDIR) rm -rf $(RMANDIR)/fhem.pl.* rm -rf $(RVARDIR) @echo done @echo pgm2: @echo @echo "Install files of fhem webfrontend pgm2..." @-if [ ! -e $(RMODDIR)/www/pgm2 ]; then mkdir -p $(RMODDIR)/www/pgm2; fi; @echo "- fix permissions" @find ./webfrontend/pgm2/* -type f -print | xargs chmod 644 cp -r webfrontend/pgm2/*.pm $(RMODDIR)/FHEM cp -r webfrontend/pgm2/*?[!pm] $(RMODDIR)/www/pgm2 cp docs/commandref.html docs/faq.html docs/HOWTO.html $(RMODDIR)/www/pgm2 cp docs/*.png docs/*.jpg $(RMODDIR)/www/pgm2 cp examples_changed/sample_pgm2 $(RETCDIR)/fhem.cfg dist: @echo "fhem $(VERS) - $(DATE)" @echo @echo "Make distribution..." @echo "- copy files" @mkdir .f @cp -r CHANGED FHEM HISTORY Makefile README.SVN\ TODO contrib docs examples fhem.pl webfrontend .f @echo @echo "Housekeeping..." @echo "- remove misc developing stuff" @find .f -name .svn -print | xargs rm -rf @find .f -name \*.orig -print | xargs rm -f @find .f -name .#\* -print | xargs rm -f @find .f -type f -print | grep -v Makefile |\ xargs perl -pi -e 's/=VERS=/$(VERS)/g;s/=DATE=/$(DATE)/g' @mv .f $(DESTDIR) @echo @echo "Distribution..." @echo "- create archiv" @tar cf - $(DESTDIR) | gzip > $(DESTDIR).tar.gz @echo "- copy main documentation files" @mv $(DESTDIR)/docs/*.html . @echo "- Housekeeping" @rm -rf $(DESTDIR) @echo @echo "Done. Provided files: $(DESTDIR).tar.gz *.html" @echo dist-clean: @echo @echo "Housekeeping..." @echo "- remove distribution files" @rm -rf *.html $(DESTDIR).tar.gz @echo done @echo deb: @echo @echo "Make debian package..." @echo $(PWD) @rm -rf .f @echo make ROOT=`pwd`/.f install @echo @echo "- copy files" @cp -r contrib/DEBIAN .f @echo "- housekeeping" @rm -rf .f/$(MODDIR)/contrib/FB7*/var @rm -rf .f/$(MODDIR)/contrib/FB7*/*.image @rm -rf .f/$(MODDIR)/contrib/FB7*/*.zip @find .f -name .svn -print | xargs rm -rf @find .f -name \*.orig -print | xargs rm -f @find .f -name .#\* -print | xargs rm -f @echo "- modify fhem version and date" @find .f -type f -print | grep -v Makefile |\ xargs perl -pi -e 's/=VERS=/$(VERS)/g;s/=DATE=/$(DATE)/g' @echo "- fix permissions" @find .f -type f | xargs chmod 644 @find .f -type d | xargs chmod 755 @chmod 755 `cat contrib/executables` @gzip -9 .f/$(DOCDIR)/changelog @echo "- fix ownership" @chown -R root:root .f @echo "- housekeeping" @mv .f $(DESTDIR) @echo @echo "Build package..." @dpkg-deb --build $(DESTDIR) @echo @echo "Housekeeping..." @rm -rf $(DESTDIR) @echo @echo "Done. Provided file: $(DESTDIR).deb" @echo fb7390: cd contrib/FB7390 && ./makeimage $(DESTDIR) fb7270: cd contrib/FB7270 && ./makeimage $(DESTDIR)