mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
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".
332 lines
9.7 KiB
Makefile
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
|