summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucian Muresan <lucianm@users.sourceforge.net>2013-01-07 01:34:55 +0100
committerLucian Muresan <lucianm@users.sourceforge.net>2013-01-07 01:34:55 +0100
commit5dd523093775adbf86a2500b11606d11ac6b2280 (patch)
tree4c171a5632d7410bffb4b9a1629be021aa0ececb
parent329c31bb8afa45b0f25adafce3f01722715eb53f (diff)
downloadvdr-plugin-graphlcd-5dd523093775adbf86a2500b11606d11ac6b2280.tar.gz
vdr-plugin-graphlcd-5dd523093775adbf86a2500b11606d11ac6b2280.tar.bz2
graphlcd Makefile for vdr >= 1.7.34
-rw-r--r--Makefile182
1 files changed, 112 insertions, 70 deletions
diff --git a/Makefile b/Makefile
index 132fff5..337ec2f 100644
--- a/Makefile
+++ b/Makefile
@@ -6,74 +6,94 @@
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
# By default the main source file also carries this name.
-#
-PLUGIN = graphlcd
-
-# define this if you built graphlcd-base with freetype:
-HAVE_FREETYPE2 = 1
-# define this if femon-plugin <= 1.7.7 is used AND which has already been patched (see README)
-# either define this setting here or in $VDRDIR/Make.config or in $VDRDIR/Make.global
-# HAVE_VALID_FEMON = 1
-
-# defines the location of the graphlcd.conf file. if not defined, location = "/etc/graphlcd.conf"
-#PLUGIN_GRAPHLCDCONF = "/usr/local/etc/graphlcd.conf"
+PLUGIN = graphlcd
### The version number of this plugin (taken from the main source file):
VERSION = $(shell grep 'static const char \*VERSION *=' plugin.c | awk '{ print $$6 }' | sed -e 's/[";]//g')
-### The C++ compiler and options:
-
-CXX ?= g++
-CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
-
### The directory environment:
-DVBDIR = ../../../../DVB
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+# Use package data if installed...otherwise assume we're under the VDR source directory:
+PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
+LIBDIR = $(DESTDIR)$(call PKGCFG,libdir)
+LOCDIR = $(DESTDIR)$(call PKGCFG,locdir)
+PLGCFG = $(call PKGCFG,plgcfg)
+#
+TMPDIR ?= /tmp
-export INSTALLPREFIX = /usr
-export INSTALLDOCDIR = $(INSTALLPREFIX)/share/doc
+### The compiler options:
-### Make sure that necessary options are included:
+export CFLAGS = $(call PKGCFG,cflags)
+export CXXFLAGS = $(call PKGCFG,cxxflags)
--include $(VDRDIR)/Make.global
+### The version number of VDR's plugin API:
+
+APIVERSION = $(call PKGCFG,apiversion)
### Allow user defined options to overwrite defaults:
--include $(VDRDIR)/Make.config
+ifeq ($(PLGCFG),)
+ VDRDIR ?= ../../..
+ PLGCFG = $(VDRDIR)/Make.config
+endif
+-include $(PLGCFG)
-### The version number of VDR (taken from VDR's "config.h"):
+# make sure to have a correct RESDIR
+MYRESDIR = $(call PKGCFG,resdir)
+ifeq ($(MYRESDIR),)
+ MYRESDIR = /usr/share/vdr
+endif
+RESDIR := $(DESTDIR)$(MYRESDIR)/plugins/$(PLUGIN)
-VDRVERSION = $(shell grep 'define VDRVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
-APIVERSION = $(shell grep 'define APIVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
+# make sure to always have a correct APIVERSION
ifeq ($(strip $(APIVERSION)),)
- APIVERSION = $(VDRVERSION)
+ APIVERSION = $(shell grep 'define APIVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
endif
+# define this if you built graphlcd-base with freetype:
+HAVE_FREETYPE2 ?= 1
+
+# define this if femon-plugin <= 1.7.7 is used AND which has already been patched (see README)
+# either define this setting here or in $VDRDIR/Make.config or in $VDRDIR/Make.global
+HAVE_VALID_FEMON ?= 0
+
+# defines the path to the graphlcd.conf file. if not defined, path = "< plugin cfg dir >/graphlcd.conf"
+PLUGIN_GRAPHLCDCONF ?= "$(CONFDIR)/plugins/$(PLUGIN)/graphlcd.conf"
+
+# defines if installing of TTF should be omitted (default is to install)
+SKIP_INSTALL_TTF ?= 0
+
+# defines if installing of documentation should be omitted (default is to install)
+SKIP_INSTALL_DOC ?= 0
+
+# if we install the documentation ourselves, do it here:
+export INSTALLDOCDIR = $(DESTDIR)$(PREFIX)/share/doc/vdr-$(PLUGIN)-$(VERSION)
+
### The name of the distribution archive:
ARCHIVE = $(PLUGIN)-$(VERSION)
PACKAGE = vdr-$(ARCHIVE)
+### The name of the shared object file:
+
+SOFILE = libvdr-$(PLUGIN).so
### Includes and Defines (add further entries here):
-INCLUDES += -I./graphlcd-base/ -I$(VDRDIR)/include -I$(INSTALLPREFIX)/include
+INCLUDES += -I./graphlcd-base/ -I$(INCDIR)/include -I$(PREFIX)/include
-DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
+DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
-ifdef HAVE_FREETYPE2
- INCLUDES += -I$(INSTALLPREFIX)/include/freetype2
+ifneq ($(HAVE_FREETYPE2), 0)
+ INCLUDES += -I$(PREFIX)/include/freetype2
DEFINES += -DHAVE_FREETYPE2
endif
# if a valid and/or fixed femon-plugin is available
-ifdef HAVE_VALID_FEMON
+ifneq ($(HAVE_VALID_FEMON), 0)
DEFINES += -DGRAPHLCD_SERVICE_FEMON_VALID
endif
@@ -82,87 +102,109 @@ ifdef PLUGIN_GRAPHLCDCONF
DEFINES += -DPLUGIN_GRAPHLCDCONF='${PLUGIN_GRAPHLCDCONF}'
endif
+# if we add TTF to additional install targets
+ifeq ($(SKIP_INSTALL_TTF), 0)
+ INS_TARGET_TTF = ttf-fonts
+endif
+
+# if we add documentations to additional install targets
+ifeq ($(SKIP_INSTALL_DOC), 0)
+ INS_TARGET_DOCS = docs
+endif
### The object files (add further files here):
-#OBJS = alias.o common.o display.o i18n.o menu.o plugin.o setup.o skinconfig.o state.o strfct.o
OBJS = alias.o common.o display.o menu.o plugin.o setup.o skinconfig.o state.o strfct.o service.o extdata.o
-### The main target:
-TARGETS = libvdr-$(PLUGIN).so
-ifneq ($(shell grep -l 'Phrases' $(VDRDIR)/i18n.c),$(VDRDIR)/i18n.c)
-TARGETS += i18n
-else
-OBJS += i18n.o
-endif
+GETTEXTSUPPORT := $(shell if [ "$(APIVERSION)" \< "1.6.0" ]; then echo true; fi)
+#ifdef GETTEXTSUPPORT
+ I18NTARGET = i18n
+#else
+# OBJS += i18n.o
+#endif
+### The main target:
-all: $(TARGETS)
+all: $(SOFILE) $(I18NTARGET)
### Implicit rules:
%.o: %.c
$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
+### Dependencies:
-# Dependencies:
-
-MAKEDEP = g++ -MM -MG
+MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
-include $(DEPFILE)
-
### Internationalization (I18N):
PODIR = po
-LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
-
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<nobody@domain.com>' -o $@ $^
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^`
-$(I18Npo): $(I18Npot)
- msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+%.po: $(I18Npot)
+ msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
@touch $@
-i18n: $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ install -D -m644 $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmo) $(I18Npot)
+
+install-i18n: $(I18Nmsgs)
### Targets:
-libvdr-$(PLUGIN).so: $(OBJS)
- $(CXX) $(CXXFLAGS) -L$(INSTALLPREFIX)/lib -L./graphlcd-base/glcddrivers/ -L./graphlcd-base/glcdgraphics/ -L./graphlcd-base/glcdskin/ -shared $(OBJS) -lglcddrivers -lglcdgraphics -lglcdskin -lstdc++ -o $@
- @cp $@ $(LIBDIR)/$@.$(APIVERSION)
+$(SOFILE): $(OBJS)
+ $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -lglcddrivers -lglcdgraphics -lglcdskin -lstdc++ -o $@
+
+install-lib: $(SOFILE)
+ install -D $^ $(LIBDIR)/$^.$(APIVERSION)
-dist: clean
+install: install-lib install-i18n resources $(INS_TARGET_TTF) $(INS_TARGET_DOCS)
+
+docs:
+ @install -d $(INSTALLDOCDIR)
+ @install -m 644 README $(INSTALLDOCDIR)
+ @install -m 644 HISTORY $(INSTALLDOCDIR)
+
+ttf-fonts:
+ @install -d $(RESDIR)/fonts
+ @install -m 644 $(PLUGIN)/fonts/*.ttf $(RESDIR)/fonts
+
+resources:
+ @install -d $(RESDIR)/fonts
+ @install -m 644 $(PLUGIN)/channels.alias $(RESDIR)
+ @cp -a $(PLUGIN)/logos $(RESDIR)
+ @cp -a $(PLUGIN)/skins $(RESDIR)
+ @install -m 644 $(PLUGIN)/fonts/*.fnt $(RESDIR)/fonts
+
+dist: $(I18Npo) clean
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@mkdir $(TMPDIR)/$(ARCHIVE)
@cp -a * $(TMPDIR)/$(ARCHIVE)
- @tar czf $(PACKAGE).tgz --exclude .svn --exclude *.cbp --exclude *.layout -C $(TMPDIR) $(ARCHIVE)
+ @tar czf $(PACKAGE).tgz --exclude .git --exclude *.cbp --exclude *.layout -C $(TMPDIR) $(ARCHIVE)
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@echo Distribution package created as $(PACKAGE).tgz
clean:
@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
- @-rm -f *.o $(DEPFILE) *.so *.tgz core* *~
-
-install: all
- @install -d $(INSTALLDOCDIR)/$(PLUGIN)
- @install -m 644 README $(INSTALLDOCDIR)/$(PLUGIN)
+ @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
uninstall:
- @rm -rf $(INSTALLDOCDIR)/$(PLUGIN)
+ @rm -rf $(INSTALLDOCDIR)
+ @rm -rf $(RESDIR)