diff options
author | Lucian Muresan <lucianm@users.sourceforge.net> | 2013-01-07 01:34:55 +0100 |
---|---|---|
committer | Lucian Muresan <lucianm@users.sourceforge.net> | 2013-01-07 01:34:55 +0100 |
commit | 5dd523093775adbf86a2500b11606d11ac6b2280 (patch) | |
tree | 4c171a5632d7410bffb4b9a1629be021aa0ececb | |
parent | 329c31bb8afa45b0f25adafce3f01722715eb53f (diff) | |
download | vdr-plugin-graphlcd-5dd523093775adbf86a2500b11606d11ac6b2280.tar.gz vdr-plugin-graphlcd-5dd523093775adbf86a2500b11606d11ac6b2280.tar.bz2 |
graphlcd Makefile for vdr >= 1.7.34
-rw-r--r-- | Makefile | 182 |
1 files changed, 112 insertions, 70 deletions
@@ -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) |