vdr/Makefile
Klaus Schmidinger f82cdfed40 Version 2.1.10
VDR developer version 2.1.10 is now available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.10.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.9-2.1.10.diff

MD5 checksums:

889f053463e2720f1ad6517cc19e82f6  vdr-2.1.10.tar.bz2
c126fb89a79db55867ae9d9a869569aa  vdr-2.1.9-2.1.10.diff

Approaching version 2.2.0:
==========================

I have decided to release one more developer version because there were
complaints about missing functionality from the "jumpingseconds" and
"binary skip" patches regarding the Green/Yellow and Prev/Next keys, and
I didn't want to cause another "patch frenzy" in this newly refurbished
area of VDR. The other (more important) reason for this additional
developer release was the change in the return value of cOsd::RenderPixmaps(),
which is very important for plugins that implement their own version of
cPixmap, e.g. for use with fast graphics hardware.

If there are no more serious bug reports, the final version 2.2.0 of VDR
shall be released on February 19, 2015, which marks the 15th anniversary
of VDR.
So please test this developer version intensely and report any problems
you might encounter as soon as possible.

The following language files still have the given number of untranslated texts:

ar.po: 54
ca_ES.po: 54
cs_CZ.po: 54
da_DK.po: 187
el_GR.po: 250
es_ES.po: 54
et_EE.po: 3
fi_FI.po: 3
hr_HR.po: 187
hu_HU.po: 4
it_IT.po: 3
lt_LT.po: 3
mk_MK.po: 3
nn_NO.po: 315
pl_PL.po: 54
pt_PT.po: 82
ro_RO.po: 3
ru_RU.po: 54
sk_SK.po: 54
sl_SI.po: 55
sr_RS.po: 54
sv_SE.po: 54
tr_TR.po: 187
uk_UA.po: 3
zh_CN.po: 54

If nobody takes care of these, they will remain untranslated in version 2.2.0.

DEADLINE FOR SUBMITTING TRANSLATIONS IS WEDNESDAY, FEBRUARY 18!

From the HISTORY file:
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Added "#REMOTE=LIRC" to Make.config.template (suggested by Martin Dauskardt).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Increased the width of the left text column in the Setup menus to avoid cutting
  off German texts.
- Added an empty target to the Makefile to make sure the sub-make for libsi is always
  called (thanks to Sören Moch).
- Updated the Italian OSD texts (thanks to Diego Pierotto and Nino Gerbino).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- The new options "Setup/Replay/Skip distance with Green/Yellow keys" and
  "Setup/Replay/Skip distance with Green/Yellow keys in repeat" can be used to
  configure the number of seconds to skip when pressing these keys once or pressing
  and holding them (based on a patch from Matthias Senzel, originally from Tobias
  Faust).
- The new option "Setup/Replay/Use Prev/Next keys for adaptive skipping" can be used
  to change the behavior of these keys during replay. They normally jump between
  editing marks, but with this option set to 'yes' they will do adaptive skipping.
- The new command line option --chartab can be used to set the default character
  table to use for strings in the DVB data stream that don't begin with a proper
  character table indicator (suggested by Christopher Reimer). The old mechanism
  of using the environment variable VDR_CHARSET_OVERRIDE still works, but is now
  deprecated and may be removed in a future version. The value given in the --chartab
  option takes precedence over that in VDR_CHARSET_OVERRIDE.
- cOsd::RenderPixmaps() now returns a pointer to cPixmap instead of cPixmapMemory
  (suggested by Thomas Reufer). This is necessary to allow plugins with derived
  cPixmap implementations to use this function. Plugins that use this function
  with cPixmapMemory now need to add a dynamic cast to the call, as in

    cPixmapMemory *pm = dynamic_cast<cPixmapMemory *>(RenderPixmaps()));

  They also need to call DestroyPixmap(pm) instead of "delete pm" to properly release
  the resulting pixmap after use.
  The dvbhddevice plugin has been modified accordingly.
- A cPixmap with a negative layer no longer marks any portion of the OSD's view port
  as "dirty" when drawing on it. This may improve performance when drawing on a
  hidden pixmap, because it avoids unnecessary refreshes of the OSD.
- Added a missing initialization of "panning" to the constructor of cPixmapMemory.
- Updated the Dutch OSD texts (thanks to Erik Oomen).
- Updated the French OSD texts (thanks to Régis Bossut).
- Fixed the German translation of "Zap timeout".
2015-02-11 21:42:20 +01:00

332 lines
9.7 KiB
Makefile

#
# Makefile for the Video Disk Recorder
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: Makefile 3.6 2015/02/09 12:28:24 kls Exp $
.DELETE_ON_ERROR:
# Compiler flags:
CC ?= gcc
CFLAGS ?= -g -O3 -Wall
CXX ?= g++
CXXFLAGS ?= -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses
CDEFINES = -D_GNU_SOURCE
CDEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
LIBS = -ljpeg -lpthread -ldl -lcap -lrt $(shell pkg-config --libs freetype2 fontconfig)
INCLUDES ?= $(shell pkg-config --cflags freetype2 fontconfig)
# Directories:
CWD ?= $(shell pwd)
LSIDIR ?= $(CWD)/libsi
PLUGINDIR ?= $(CWD)/PLUGINS
DESTDIR ?=
VIDEODIR ?= /srv/vdr/video
CONFDIR ?= /var/lib/vdr
ARGSDIR ?= /etc/vdr/conf.d
CACHEDIR ?= /var/cache/vdr
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
INCDIR ?= $(PREFIX)/include
LIBDIR ?= $(PREFIX)/lib/vdr
LOCDIR ?= $(PREFIX)/share/locale
MANDIR ?= $(PREFIX)/share/man
PCDIR ?= $(PREFIX)/lib/pkgconfig
RESDIR ?= $(PREFIX)/share/vdr
# Source documentation
DOXYGEN ?= /usr/bin/doxygen
DOXYFILE = Doxyfile
# User configuration
-include Make.config
# Mandatory compiler flags:
CFLAGS += -fPIC
CXXFLAGS += -fPIC
# Common include files:
ifdef DVBDIR
CINCLUDES += -I$(DVBDIR)
endif
# Object files
SILIB = $(LSIDIR)/libsi.a
OBJS = args.o audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o dvbci.o\
dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o font.o i18n.o interface.o keys.o\
lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o positioner.o\
receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o shutdown.o\
skinclassic.o skinlcars.o skins.o skinsttng.o sourceparams.o sources.o spu.o status.o svdrp.o themes.o thread.o\
timers.o tools.o transfer.o vdr.o videodir.o
DEFINES += $(CDEFINES)
INCLUDES += $(CINCLUDES)
ifdef HDRDIR
HDRDIR := -I$(HDRDIR)
endif
ifndef NO_KBD
DEFINES += -DREMOTE_KBD
endif
ifdef REMOTE
DEFINES += -DREMOTE_$(REMOTE)
endif
ifdef VDR_USER
DEFINES += -DVDR_USER=\"$(VDR_USER)\"
endif
ifdef BIDI
INCLUDES += $(shell pkg-config --cflags fribidi)
DEFINES += -DBIDI
LIBS += $(shell pkg-config --libs fribidi)
endif
ifdef SDNOTIFY
INCLUDES += $(shell pkg-config --cflags libsystemd-daemon)
DEFINES += -DSDNOTIFY
LIBS += $(shell pkg-config --libs libsystemd-daemon)
endif
LIRC_DEVICE ?= /var/run/lirc/lircd
DEFINES += -DLIRC_DEVICE=\"$(LIRC_DEVICE)\"
DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
DEFINES += -DCONFDIR=\"$(CONFDIR)\"
DEFINES += -DARGSDIR=\"$(ARGSDIR)\"
DEFINES += -DCACHEDIR=\"$(CACHEDIR)\"
DEFINES += -DRESDIR=\"$(RESDIR)\"
DEFINES += -DPLUGINDIR=\"$(LIBDIR)\"
DEFINES += -DLOCDIR=\"$(LOCDIR)\"
# The version numbers of VDR and the plugin API (taken from VDR's "config.h"):
VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h)
APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h)
all: vdr i18n plugins
# Implicit rules:
%.o: %.c
$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<
# Dependencies:
MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
-include $(DEPFILE)
# The main program:
vdr: $(OBJS) $(SILIB)
$(CXX) $(CXXFLAGS) -rdynamic $(LDFLAGS) $(OBJS) $(LIBS) $(SILIB) -o vdr
# The libsi library:
$(SILIB): make-libsi
@$(MAKE) --no-print-directory -C $(LSIDIR) CXXFLAGS="$(CXXFLAGS)" DEFINES="$(CDEFINES)" all
make-libsi: # empty rule makes sure the sub-make for libsi is always called
# pkg-config file:
.PHONY: vdr.pc
vdr.pc:
@echo "bindir=$(BINDIR)" > $@
@echo "mandir=$(MANDIR)" >> $@
@echo "videodir=$(VIDEODIR)" >> $@
@echo "configdir=$(CONFDIR)" >> $@
@echo "argsdir=$(ARGSDIR)" >> $@
@echo "cachedir=$(CACHEDIR)" >> $@
@echo "resdir=$(RESDIR)" >> $@
@echo "libdir=$(LIBDIR)" >> $@
@echo "locdir=$(LOCDIR)" >> $@
@echo "plgcfg=$(PLGCFG)" >> $@
@echo "apiversion=$(APIVERSION)" >> $@
@echo "cflags=$(CFLAGS) $(CDEFINES) $(CINCLUDES) $(HDRDIR)" >> $@
@echo "cxxflags=$(CXXFLAGS) $(CDEFINES) $(CINCLUDES) $(HDRDIR)" >> $@
@echo "" >> $@
@echo "Name: VDR" >> $@
@echo "Description: Video Disk Recorder" >> $@
@echo "URL: http://www.tvdr.de/" >> $@
@echo "Version: $(VDRVERSION)" >> $@
@echo "Cflags: \$${cflags}" >> $@
# Internationalization (I18N):
PODIR = po
LOCALEDIR = locale
I18Npo = $(wildcard $(PODIR)/*.po)
I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr.mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/vdr.pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=VDR --package-version=$(VDRVERSION) --msgid-bugs-address='<vdr-bugs@tvdr.de>' -o $@ `ls $^`
%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
@touch $@
$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr.mo: $(PODIR)/%.mo
install -D -m644 $< $@
.PHONY: i18n
i18n: $(I18Nmsgs)
install-i18n: i18n
@mkdir -p $(DESTDIR)$(LOCDIR)
cp -r $(LOCALEDIR)/* $(DESTDIR)$(LOCDIR)
# The 'include' directory (for plugins):
include-dir:
@mkdir -p include/vdr
@(cd include/vdr; for i in ../../*.h; do ln -fs $$i .; done)
@mkdir -p include/libsi
@(cd include/libsi; for i in ../../libsi/*.h; do ln -fs $$i .; done)
# Plugins:
plugins: include-dir vdr.pc
@failed="";\
noapiv="";\
oldmakefile="";\
for i in `ls $(PLUGINDIR)/src | grep -v '[^a-z0-9]'`; do\
echo; echo "*** Plugin $$i:";\
# No APIVERSION: Skip\
if ! grep -q "\$$(LIBDIR)/.*\$$(APIVERSION)" "$(PLUGINDIR)/src/$$i/Makefile" ; then\
echo "ERROR: plugin $$i doesn't honor APIVERSION - not compiled!";\
noapiv="$$noapiv $$i";\
continue;\
fi;\
# Old Makefile\
if ! grep -q "PKGCFG" "$(PLUGINDIR)/src/$$i/Makefile" ; then\
echo "WARNING: plugin $$i is using an old Makefile!";\
oldmakefile="$$oldmakefile $$i";\
$(MAKE) --no-print-directory -C "$(PLUGINDIR)/src/$$i" CFLAGS="$(CFLAGS) $(CDEFINES) $(CINCLUDES)" CXXFLAGS="$(CXXFLAGS) $(CDEFINES) $(CINCLUDES)" LIBDIR="$(PLUGINDIR)/lib" VDRDIR="$(CWD)" all || failed="$$failed $$i";\
continue;\
fi;\
# New Makefile\
INCLUDES="-I$(CWD)/include"\
$(MAKE) --no-print-directory -C "$(PLUGINDIR)/src/$$i" VDRDIR="$(CWD)" || failed="$$failed $$i";\
if [ -n "$(LCLBLD)" ] ; then\
(cd $(PLUGINDIR)/src/$$i; for l in `find -name "libvdr-*.so" -o -name "lib$$i-*.so"`; do install $$l $(LIBDIR)/`basename $$l`.$(APIVERSION); done);\
if [ -d $(PLUGINDIR)/src/$$i/po ]; then\
for l in `ls $(PLUGINDIR)/src/$$i/po/*.mo`; do\
install -D -m644 $$l $(LOCDIR)/`basename $$l | cut -d. -f1`/LC_MESSAGES/vdr-$$i.mo;\
done;\
fi;\
fi;\
done;\
# Conclusion\
if [ -n "$$noapiv" ] ; then echo; echo "*** plugins without APIVERSION:$$noapiv"; echo; fi;\
if [ -n "$$oldmakefile" ] ; then\
echo; echo "*** plugins with old Makefile:$$oldmakefile"; echo;\
echo "**********************************************************************";\
echo "*** While this currently still works, it is strongly recommended";\
echo "*** that you convert old Makefiles to the new style used since";\
echo "*** VDR version 1.7.36. Support for old style Makefiles may be dropped";\
echo "*** in future versions of VDR.";\
echo "**********************************************************************";\
fi;\
if [ -n "$$failed" ] ; then echo; echo "*** failed plugins:$$failed"; echo; exit 1; fi
clean-plugins:
@for i in `ls $(PLUGINDIR)/src | grep -v '[^a-z0-9]'`; do $(MAKE) --no-print-directory -C "$(PLUGINDIR)/src/$$i" VDRDIR="$(CWD)" clean; done
@-rm -f $(PLUGINDIR)/lib/lib*-*.so.$(APIVERSION)
# Install the files (note that 'install-pc' must be first!):
install: install-pc install-bin install-dirs install-conf install-doc install-plugins install-i18n install-includes
# VDR binary:
install-bin: vdr
@mkdir -p $(DESTDIR)$(BINDIR)
@cp --remove-destination vdr svdrpsend $(DESTDIR)$(BINDIR)
# Configuration files:
install-dirs:
@mkdir -p $(DESTDIR)$(VIDEODIR)
@mkdir -p $(DESTDIR)$(CONFDIR)
@mkdir -p $(DESTDIR)$(ARGSDIR)
@mkdir -p $(DESTDIR)$(CACHEDIR)
@mkdir -p $(DESTDIR)$(RESDIR)
install-conf:
@cp -pn *.conf $(DESTDIR)$(CONFDIR)
# Documentation:
install-doc:
@mkdir -p $(DESTDIR)$(MANDIR)/man1
@mkdir -p $(DESTDIR)$(MANDIR)/man5
@gzip -c vdr.1 > $(DESTDIR)$(MANDIR)/man1/vdr.1.gz
@gzip -c vdr.5 > $(DESTDIR)$(MANDIR)/man5/vdr.5.gz
@gzip -c svdrpsend.1 > $(DESTDIR)$(MANDIR)/man1/svdrpsend.1.gz
# Plugins:
install-plugins: plugins
@-for i in `ls $(PLUGINDIR)/src | grep -v '[^a-z0-9]'`; do\
$(MAKE) --no-print-directory -C "$(PLUGINDIR)/src/$$i" VDRDIR=$(CWD) DESTDIR=$(DESTDIR) install;\
done
@if [ -d $(PLUGINDIR)/lib ] ; then\
for i in `find $(PLUGINDIR)/lib -name 'lib*-*.so.$(APIVERSION)'`; do\
install -D $$i $(DESTDIR)$(LIBDIR);\
done;\
fi
# Includes:
install-includes: include-dir
@mkdir -p $(DESTDIR)$(INCDIR)
@cp -pLR include/vdr include/libsi $(DESTDIR)$(INCDIR)
# pkg-config file:
install-pc: vdr.pc
if [ -n "$(PCDIR)" ] ; then\
mkdir -p $(DESTDIR)$(PCDIR) ;\
cp vdr.pc $(DESTDIR)$(PCDIR) ;\
fi
# Source documentation:
srcdoc:
@cat $(DOXYFILE) > $(DOXYFILE).tmp
@echo PROJECT_NUMBER = $(VDRVERSION) >> $(DOXYFILE).tmp
$(DOXYGEN) $(DOXYFILE).tmp
@rm $(DOXYFILE).tmp
# Housekeeping:
clean:
@$(MAKE) --no-print-directory -C $(LSIDIR) clean
@-rm -f $(OBJS) $(DEPFILE) vdr vdr.pc core* *~
@-rm -rf $(LOCALEDIR) $(PODIR)/*.mo $(PODIR)/*.pot
@-rm -rf include
@-rm -rf srcdoc
CLEAN: clean
distclean: clean-plugins clean