hyperbot/Makefile
2017-06-02 15:44:54 -03:00

147 lines
7.0 KiB
Makefile

# -*- coding: utf-8 -*-
###########################################################################
# #
# envbot - an IRC bot in bash #
# Copyright (C) 2007-2008 Arvid Norlander #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###########################################################################
# This file is used to generate some, uh, generated files.
# Also some other tasks
# Useful targets:
# all: Builds numerics file and generates example config
# man: Generates man page using help2man
# apidocs: Generates API docs from code for public functions
# apidocs-all: Generates API docs from code for public and internal functions.
# install: Installs to a DESTDIR (don't confuse with DISTDIR),
# See variables below.
# dist-dir: Generates a clean checkout of current version, ready to be
# tared up. Can only be done in a bzr branch/checkout
ENVBOT_VERSION = 0.1-beta1
# For make dest-dir, defaults
DISTDIR ?= dist
# For make install, defaults
DESTDIR ?= DEST
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
CONFDIR ?= $(PREFIX)/etc
LIBDIR ?= $(PREFIX)/lib
DATADIR ?= $(PREFIX)/share
MANDIR ?= $(DATADIR)/man
# And now for actual place of stuff
ENVBOT_LIBDIR ?= $(LIBDIR)/envbot
ENVBOT_TRANSPORTDIR ?= $(ENVBOT_LIBDIR)/transport
ENVBOT_LIBRARYDIR ?= $(ENVBOT_LIBDIR)/lib
ENVBOT_MODULESDIR ?= $(ENVBOT_LIBDIR)/modules
ENVBOT_DATADIR ?= $(DATADIR)/envbot/data
ENVBOT_LOGDIR ?= $(DATADIR)/envbot/logs
ENVBOT_CONFDIR ?= $(CONFDIR)/envbot
ENVBOT_DOCDIR ?= $(DATADIR)/doc/envbot-$(ENVBOT_VERSION)
# Now for some commands
INSTALL ?= install -p
SED ?= sed
RM ?= rm
all: numerics config
config:
$(SED) "s|@@moddir@@|modules|;s|@@transportdir@@|transport|;s|@@datadir@@|data|;s|@@logdir@@|logs|" doc/bot_settings.sh.example.in > bot_settings.sh.example
numerics:
tools/build_numerics.sh > lib/numerics.sh
# Used by developers to update man page.
man:
help2man -NS envbot -n 'An advanced modular IRC bot in bash' "/usr/bin/env bash envbot" > doc/envbot.1
clean:
$(RM) -vf *~ */*~ */*/*~ */*/*/*~ bot_settings.sh.example
cleandocs:
$(RM) -rf doc/api/private-core
$(RM) -rf doc/api/public-core
$(RM) -rf doc/api/private-modules
$(RM) -rf doc/api/public-modules
cleanlogs:
$(RM) -vrf logs/*
apidocs-private:
./tools/bashdoc/bashdoc.sh -p "envbot Core API (private functions) for "$(ENVBOT_VERSION) -o doc/api/private-core lib/*.sh
./tools/bashdoc/bashdoc.sh -p "envbot module-provided API (private functions) for "$(ENVBOT_VERSION) -o doc/api/private-modules modules/*.sh
apidocs-public:
./tools/bashdoc/bashdoc.sh -e "Type=API" -p "envbot Core API for "$(ENVBOT_VERSION) -o doc/api/public-core lib/*.sh
./tools/bashdoc/bashdoc.sh -e "Type=API" -p "envbot module-provided API for "$(ENVBOT_VERSION) -o doc/api/public-modules modules/*.sh
apidocs: apidocs-public
apidocs-all: apidocs-private apidocs-public
checkvars:
@if [ "$(ENV_USERNAME)" = "" ]; then \
echo "Please call this script with the ENV_USERNAME environment variable set"; \
exit 1; \
fi
@if [ "$(ENV_PATH)" = "" ]; then \
echo "Please call this script with the ENV_PATH environment variable set"; \
exit 1; \
fi
apidocs-upload: checkvars
rsync -hhzcrv --progress --delete --stats -e ssh doc/api/ $(ENV_USERNAME)@envbot.org:$(ENV_PATH)/
dist-dir:
$(RM) -rf $(DISTDIR)
bzr export $(DISTDIR)
install: cleandocs all apidocs-public
@echo "#########################################################################"
@echo "# #"
@echo "# Installing... Note that running from source directory is recommended! #"
@echo "# #"
@echo "#########################################################################"
$(INSTALL) -d $(DESTDIR)$(PREFIX) $(DESTDIR)$(BINDIR)
$(INSTALL) -d $(DESTDIR)$(ENVBOT_LIBDIR) $(DESTDIR)$(ENVBOT_CONFDIR)
$(INSTALL) -d $(DESTDIR)$(ENVBOT_DATADIR) $(DESTDIR)$(ENVBOT_TRANSPORTDIR)
$(INSTALL) -d $(DESTDIR)$(ENVBOT_LIBRARYDIR) $(DESTDIR)$(ENVBOT_MODULESDIR)
$(INSTALL) -d $(DESTDIR)$(ENVBOT_DOCDIR) $(DESTDIR)$(MANDIR)/man1
$(INSTALL) -d $(DESTDIR)$(ENVBOT_LOGDIR) $(DESTDIR)$(ENVBOT_DOCDIR)/api
$(INSTALL) -d $(DESTDIR)$(ENVBOT_DOCDIR)/api/core $(DESTDIR)$(ENVBOT_DOCDIR)/api/modules
$(INSTALL) -m 644 lib/*.sh $(DESTDIR)$(ENVBOT_LIBRARYDIR)
$(INSTALL) -m 644 modules/*.sh $(DESTDIR)$(ENVBOT_MODULESDIR)
$(INSTALL) -m 644 transport/*.sh $(DESTDIR)$(ENVBOT_TRANSPORTDIR)
$(INSTALL) -m 644 README AUTHORS GPL3.txt $(DESTDIR)$(ENVBOT_DOCDIR)
$(INSTALL) -m 644 doc/*.sql $(DESTDIR)$(ENVBOT_DOCDIR)
$(INSTALL) -m 644 doc/*.txt $(DESTDIR)$(ENVBOT_DOCDIR)
$(INSTALL) -m 644 doc/api/public-core/*.html $(DESTDIR)$(ENVBOT_DOCDIR)/api/core/
$(INSTALL) -m 644 doc/api/public-core/*.css $(DESTDIR)$(ENVBOT_DOCDIR)/api/core/
$(INSTALL) -m 644 doc/api/public-modules/*.html $(DESTDIR)$(ENVBOT_DOCDIR)/api/modules/
$(INSTALL) -m 644 doc/api/public-modules/*.css $(DESTDIR)$(ENVBOT_DOCDIR)/api/modules/
$(INSTALL) -m 644 doc/envbot.1 $(DESTDIR)$(MANDIR)/man1
$(INSTALL) -m 644 data/{faq.txt.example,quotes.txt.example.pqf} $(DESTDIR)$(ENVBOT_DATADIR)
$(SED) "s|^library_dir=.*|library_dir='$(ENVBOT_LIBRARYDIR)'|;s|^config_file=.*|config_file='$(ENVBOT_CONFDIR)/bot_settings.sh'|" envbot > envbot.tmp
$(INSTALL) envbot.tmp $(DESTDIR)$(BINDIR)/envbot
$(RM) envbot.tmp
$(SED) "s|@@moddir@@|$(ENVBOT_MODULESDIR)|;s|@@transportdir@@|$(ENVBOT_TRANSPORTDIR)|;s|@@datadir@@|$(ENVBOT_DATADIR)|;s|@@logdir@@|$(ENVBOT_LOGDIR)|" doc/bot_settings.sh.example.in > bot_settings.tmp
$(INSTALL) -m 644 bot_settings.tmp $(DESTDIR)$(ENVBOT_CONFDIR)/bot_settings.sh.example
$(RM) bot_settings.tmp
.PHONY: all apidocs apidocs-private apidocs-public checkvars apidocs-upload numerics clean cleanlogs cleandocs dist-dir