summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile268
1 files changed, 268 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b7a7406
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,268 @@
+#
+# Makefile
+#
+# See the README file for copyright information and how to reach the author.
+#
+
+include Make.config
+
+TARGET = epgd
+HTTPTARGET = epghttpd
+HISTFILE = "HISTORY.h"
+
+BASELIBS = -lrt -lz -larchive -ldl -lcrypto -luuid
+BASELIBS += $(shell mysql_config --libs_r) $(shell python-config --libs) $(shell pkg-config --cflags --libs jansson)
+
+HLIB = -L./lib -lhorchi
+DLIBS = $(HLIB) $(BASELIBS) -lcurl $(shell xml2-config --libs) $(shell xslt-config --libs) -lexslt
+HTTPLIBS = $(HLIB) -lmicrohttpd $(BASELIBS) -lcurl $(shell xml2-config --libs) $(shell xslt-config --libs) -lexslt -ljpeg $(shell imlib2-config --libs)
+CFLAGS += $(shell mysql_config --include)
+
+VERSION = $(shell grep 'define _VERSION ' $(HISTFILE) | awk '{ print $$3 }' | sed -e 's/[";]//g')
+ARCHIVE = $(TARGET)-$(VERSION)
+
+LASTHIST = $(shell grep '^20[0-3][0-9]' $(HISTFILE) | head -1)
+LASTCOMMENT = $(subst |,\n,$(shell sed -n '/$(LASTHIST)/,/^ *$$/p' $(HISTFILE) | tr '\n' '|'))
+LASTTAG = $(shell git describe --tags --abbrev=0)
+BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
+GIT_REV = $(shell git describe --always 2>/dev/null)
+
+HLIBDEP = ./lib/libhorchi.a
+
+export DESTDIR
+
+ifdef GIT_REV
+ DEFINES += -DGIT_REV='"$(GIT_REV)"'
+endif
+
+ifdef SYSD_NOTIFY
+ ifdef SYSDLIB_210
+ BASELIBS += $(shell pkg-config --libs libsystemd)
+ else
+ BASELIBS += $(shell pkg-config --libs libsystemd-daemon)
+ endif
+endif
+
+# object files
+
+OBJS += main.o update.o plugin.o epgdconfig.o channelmap.o series.o svdrpclient.o levenshtein.o episode.o
+OBJS += tvdbmanager.o moviedbmanager.o
+
+OBJS += tools/fuzzy.o tools/stringhelpers.o scraper/thetvdbscraper/thetvdbscraper.o
+OBJS += scraper/thetvdbscraper/tvdbseries.o scraper/thetvdbscraper/tvdbmirrors.o
+OBJS += scraper/thetvdbscraper/tvdbmedia.o scraper/thetvdbscraper/tvdbactor.o
+OBJS += scraper/thetvdbscraper/tvdbepisode.o
+OBJS += scraper/themoviedbscraper/themoviedbscraper.o scraper/themoviedbscraper/moviedbmovie.o
+OBJS += scraper/themoviedbscraper/moviedbactor.o
+
+HTTPOBJS += epgdconfig.o webstore.o webdo.o webauth.o webtools.o httpd.o svdrpclient.o
+
+# rules:
+
+all: hlib $(TARGET) $(HTTPTARGET) plugins lv
+
+eptest: eptest.c episode.c
+ $(CC) $(CFLAGS) $(DEFINES) eptest.c episode.c svdrpclient.c -L./lib -lhorchi $(DLIBS) -o eptst
+
+hlib:
+ (cd lib && $(MAKE) lib)
+
+$(TARGET) : hlib $(OBJS)
+ $(CC) $(CFLAGS) -rdynamic $(OBJS) $(DLIBS) -o $@
+
+$(HTTPTARGET) : hlib $(HTTPOBJS)
+ $(CC) $(CFLAGS) -rdynamic $(HTTPOBJS) $(HTTPLIBS) -o $@
+
+lv:
+ (cd epglv && $(MAKE))
+
+clean: clean-plugins
+ @-rm -f $(OBJS) $(HTTPOBJS) core* *~ */*~ *.so
+ @-rm -f scraper/themoviedbscraper/*~ scraper/themoviedbscraper/*~ scraper/thetvdbscraper/*~
+ (cd epglv; $(MAKE) clean)
+ rm -f $(TARGET) $(ARCHIVE).tgz
+ rm -f $(HTTPTARGET) pytst
+ rm -f last.json eptst
+ (cd lib && $(MAKE) clean)
+
+dist: clean
+ @-rm -rf $(TMPDIR)/$(ARCHIVE)
+ @mkdir $(TMPDIR)/$(ARCHIVE)
+ @cp -a * $(TMPDIR)/$(ARCHIVE)
+ @tar czf $(ARCHIVE).tgz -C $(TMPDIR) $(ARCHIVE)
+ @-rm -rf $(TMPDIR)/$(ARCHIVE)
+ @echo Distribution package created as $(ARCHIVE).tgz
+
+install: install-epgd install-epglv install-epghttpd
+ make install-$(INIT_SYSTEM)
+
+install-epgd: hlib $(TARGET) $(HTTPTARGET) install-scripts install-config install-plugins
+ install -D $(TARGET) $(_BINDEST)/
+
+install-epghttpd: install-http
+ install -D $(HTTPTARGET) $(_BINDEST)/
+
+install-epglv:
+ (cd epglv; $(MAKE) install)
+
+install-none:
+
+install-upstart:
+ cat contrib/epgd.conf | sed s:"<BINDEST>":"$(BINDEST)":g | sed s:"<PLGDEST>":"$(PLGDEST)":g | install -C -D /dev/stdin $(UPSTARTDEST)/epgd.conf
+ chmod a+r $(UPSTARTDEST)/epgd.conf
+ cat contrib/epghttpd.conf | sed s:"<BINDEST>":"$(BINDEST)":g | install -C -D /dev/stdin $(UPSTARTDEST)/epghttpd.conf
+ chmod a+r $(UPSTARTDEST)/epghttpd.conf
+
+install-systemd:
+ cat contrib/epgd.service | sed s:"<BINDEST>":"$(BINDEST)":g | sed s:"<AFTER>":"$(INIT_AFTER)":g | sed s:"<PLGDEST>":"$(PLGDEST)":g | install -C -D /dev/stdin $(SYSTEMDDEST)/epgd.service
+ chmod a+r $(SYSTEMDDEST)/epgd.service
+ cat contrib/epghttpd.service | sed s:"<BINDEST>":"$(BINDEST)":g | install -C -D /dev/stdin $(SYSTEMDDEST)/epghttpd.service
+ chmod a+r $(SYSTEMDDEST)/epghttpd.service
+ ifeq ($(DESTDIR),)
+ systemctl daemon-reload
+ endif
+
+cppchk:
+ cppcheck --language=c++ --template="{file}:{line}:{severity}:{message}" --quiet --force *.c *.h \
+ scraper/thetvdbscraper/*.c scraper/thetvdbscraper/*.h scraper/themoviedbscraper/*.c scraper/themoviedbscraper/*.h \
+ tools/*.c tools/*.h
+
+#--------------------------------------------------------
+# dependencies
+#--------------------------------------------------------
+
+HEADER = lib/db.h lib/common.h lib/config.h epgd.h series.h svdrpclient.h lib/curl.h
+
+channelmap.o : channelmap.c $(HEADER)
+episode.o : episode.c $(HEADER) levenshtein.h
+
+levenshtein.o : levenshtein.c $(HEADER) levenshtein.h
+main.o : main.c $(HEADER)
+series.o : series.c $(HEADER) series.h levenshtein.h
+svdrpclient.o : svdrpclient.c $(HEADER) svdrpclient.h
+update.o : update.c $(HEADER)
+plugin.o : plugin.c $(HEADER)
+httpd.o : httpd.c $(HEADER) httpd.h
+webdo.o : webdo.c $(HEADER) httpd.h
+webauth.o : webauth.c $(HEADER) httpd.h
+webtools.o : webtools.c $(HEADER) httpd.h
+
+SCRHEADER = tools/stringhelpers.h lib/curl.h
+
+tvdbmanager.o : $(SCRHEADER) tvdbmanager.h tvdbmanager.c lib/epgservice.h lib/epgservice.c lib/db.h lib/db.c
+moviedbmanager.o : $(SCRHEADER) moviedbmanager.h moviedbmanager.c lib/epgservice.h lib/epgservice.c lib/db.h lib/db.c
+scraper/thetvdbscraper/thetvdbscraper.o : $(SCRHEADER) scraper/thetvdbscraper/thetvdbscraper.h scraper/thetvdbscraper/thetvdbscraper.c scraper/thetvdbscraper/tvdbseries.h scraper/thetvdbscraper/tvdbmirrors.h
+scraper/thetvdbscraper/tvdbseries.o : $(SCRHEADER) scraper/thetvdbscraper/tvdbseries.h scraper/thetvdbscraper/tvdbseries.c scraper/thetvdbscraper/tvdbmirrors.h scraper/thetvdbscraper/tvdbmedia.h scraper/thetvdbscraper/tvdbactor.h scraper/thetvdbscraper/tvdbepisode.h
+scraper/thetvdbscraper/tvdbmirrors.o : $(SCRHEADER) scraper/thetvdbscraper/tvdbmirrors.h scraper/thetvdbscraper/tvdbmirrors.c
+scraper/thetvdbscraper/tvdbmedia.o : $(SCRHEADER) scraper/thetvdbscraper/tvdbmedia.h scraper/thetvdbscraper/tvdbmedia.c scraper/thetvdbscraper/tvdbmirrors.h
+scraper/thetvdbscraper/tvdbactor.o : $(SCRHEADER) scraper/thetvdbscraper/tvdbactor.h scraper/thetvdbscraper/tvdbactor.c scraper/thetvdbscraper/tvdbmirrors.h
+scraper/thetvdbscraper/tvdbepisodes.o : $(SCRHEADER) scraper/thetvdbscraper/tvdbepisode.h scraper/thetvdbscraper/tvdbepisode.c scraper/thetvdbscraper/tvdbmirrors.h
+scraper/themoviedbscraper/themoviedbscraper.o : $(SCRHEADER) scraper/themoviedbscraper/themoviedbscraper.h scraper/themoviedbscraper/themoviedbscraper.c scraper/themoviedbscraper/moviedbmovie.h scraper/themoviedbscraper/moviedbactor.h
+scraper/themoviedbscraper/moviedbmovie.o : $(SCRHEADER) scraper/themoviedbscraper/moviedbmovie.h scraper/themoviedbscraper/moviedbmovie.c scraper/themoviedbscraper/moviedbactor.h tools/fuzzy.h
+scraper/themoviedbscraper/ moviedbactors.o : $(SCRHEADER) scraper/themoviedbscraper/moviedbactor.h scraper/themoviedbscraper/moviedbactor.c
+tools/fuzzy.o : tools/fuzzy.h tools/fuzzy.c
+tools/stringhelpers.o : tools/stringhelpers.h tools/stringhelpers.c
+
+
+# ------------------------------------------------------
+# Plugins
+# ------------------------------------------------------
+
+plugins:
+ @find $(PLGSRCDIR) -maxdepth 1 -type d -name "[a-z0-9]*" -exec \
+ $(MAKE) \-\-no-print-directory -C {} \;
+
+clean-plugins:
+ @find $(PLGSRCDIR) -maxdepth 1 -type d -name "[a-z0-9]*" -exec \
+ $(MAKE) \-\-no-print-directory -C {} clean \;
+
+install-plugins: plugins
+ mkdir -p "$(_PLGDEST)"
+ for i in ${PLGSRCDIR}/*/Makefile; do\
+ grep -q "PLUGIN.*=" "$$i" || continue;\
+ i=`dirname $$i`;\
+ (cd "$$i" && $(MAKE) install);\
+ done;
+
+# ------------------------------------------------------
+# Install
+# ------------------------------------------------------
+
+install-scripts:
+ if ! test -d $(_BINDEST); then \
+ mkdir -p "$(_BINDEST)" \
+ chmod a+rx $(_BINDEST); \
+ fi
+ install -D ./scripts/epgd-*[!~] $(_BINDEST)/
+ install -D ./scripts/epgh-*[!~] $(_BINDEST)/
+ install -D ./scripts/epgsearchdone.pl $(_BINDEST)/
+
+install-http:
+ (cd "http/" && make install)
+
+install-config:
+ if ! test -d $(CONFDEST); then \
+ mkdir -p $(CONFDEST); \
+ chmod a+rx $(CONFDEST); \
+ fi
+ install --mode=644 -D ./configs/getupdflg.sql $(CONFDEST)
+ install --mode=644 -D ./configs/getcrosslvr.sql $(CONFDEST)
+ install --mode=644 -D ./configs/getlvrmin.sql $(CONFDEST)
+ install --mode=644 -D ./configs/mergeepg.sql $(CONFDEST)
+ install --mode=644 -D ./configs/reverseepg.sql $(CONFDEST)
+ install --mode=644 -D ./configs/thetvdbview.sql $(CONFDEST)
+ install --mode=644 -D ./configs/epg.dat $(CONFDEST)
+
+ for i in ./configs/eventsview*.sql; do\
+ if ! test -f "$(CONFDEST)/`basename $$i`"; then\
+ install --mode=644 -D "$$i" $(CONFDEST)/; \
+ fi;\
+ done;
+ if ! test -f $(CONFDEST)/epgd.conf; then \
+ install --mode=644 -D ./configs/epgd.conf $(CONFDEST)/; \
+ fi
+ if ! test -f $(CONFDEST)/recording.py; then \
+ install --mode=644 -D ./configs/recording.py $(CONFDEST)/; \
+ else \
+ install --mode=644 -D ./configs/recording.py $(CONFDEST)/recording.py.dist; \
+ fi
+ if ! test -f $(CONFDEST)/channelmap.conf; then \
+ install --mode=644 -D ./configs/channelmap.conf $(CONFDEST)/; \
+ fi
+
+# ------------------------------------------------------
+# Git / Versioning / Tagging
+# ------------------------------------------------------
+
+vcheck:
+ git fetch
+ if test "$(LASTTAG)" = "$(VERSION)"; then \
+ echo "Warning: tag/version '$(VERSION)' already exists, update HISTORY first. Aborting!"; \
+ exit 1; \
+ fi
+
+push: vcheck
+ echo "tagging git with $(VERSION)"
+ git tag $(VERSION)
+ git push --tags
+ git push
+
+commit: vcheck
+ git commit -m "$(LASTCOMMENT)" -a
+
+git: commit push
+
+showv:
+ @echo "Git ($(BRANCH)):\\n Version: $(LASTTAG) (tag)"
+ @echo "Local:"
+ @echo " Version: $(VERSION)"
+ @echo " Change:"
+ @echo -n " $(LASTCOMMENT)"
+
+upd: update
+
+update:
+ git pull
+ @make clean install
+ restart epgd
+ restart epghttpd