# # Makefile for a Video Disk Recorder plugin # # See the main source file 'xineliboutput.c' for copyright information and # how to reach the author. # # $Id: Makefile,v 1.120 2015-04-22 08:23:48 phintuka Exp $ # # 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 = xineliboutput _default: all # Keep VDR Makefile happy - it requires $(LIBDIR)/.$(APIVERSION) somewhere in this file ... # check for Apple Darwin ARCH_APPLE_DARWIN = no ifeq ($(shell gcc -dumpmachine | grep -q 'apple-darwin' && echo "1" || echo "0"), 1) ARCH_APPLE_DARWIN = yes endif # # Override configuration here or in ../../../Make.config # #NOSIGNAL_IMAGE_FILE=/usr/share/vdr/xineliboutput/nosignal.mpv #STARTUP_IMAGE_FILE=/usr/share/vdr/xineliboutput/logodisplay.mpv XINELIBOUTPUT_CONFIGURE_OPTS = ### ### The version number of this plugin (taken from the main source file): ### VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | cut -d'"' -f2) ### ### The C++ compiler and options: ### CXX ?= g++ CC ?= gcc OPTFLAGS ?= ifeq ($(ARCH_APPLE_DARWIN), yes) CXXFLAGS ?= -O3 -pipe -Wall -Woverloaded-virtual -fPIC -g -fno-common -bundle -flat_namespace -undefined suppress CFLAGS ?= -O3 -pipe -Wall -fPIC -g -fno-common -bundle -flat_namespace -undefined suppress LDFLAGS_SO ?= -fvisibility=hidden else CXXFLAGS ?= -O3 -pipe -Wall -Woverloaded-virtual -fPIC -g CFLAGS ?= -O3 -pipe -Wall -fPIC -g LDFLAGS_SO ?= -fvisibility=hidden LDFLAGS_SO += -shared endif ### ### The directory environment: ### # 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_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr)) LIBDIR = $(call PKGCFG,libdir) LOCDIR = $(call PKGCFG,locdir) PLGCFG = $(call PKGCFG,plgcfg) VIDEODIR = $(call PKGCFG,videodir) TMPDIR ?= /tmp BINDIR ?= /usr/bin INSTALL ?= install ### ### Allow user defined options to overwrite defaults: ### -include Make.config ### ### check for VDR ### APIVERSION = $(call PKGCFG,apiversion) VDR_TREE = no ifeq ($(strip $(APIVERSION)),) $(warning ********************************************************) $(warning VDR not detected ! VDR plugins will not be compiled. ) $(warning ********************************************************) CONFIGURE_OPTS += --disable-vdr else export CFLAGS = $(call PKGCFG,cflags) export CXXFLAGS = $(call PKGCFG,cxxflags) ifeq ($(VDRDIR),) $(warning Building outside VDR source tree) else $(warning Building inside VDR source tree) VDR_TREE = yes endif endif ### Allow user defined options to overwrite defaults: -include $(PLGCFG) ### ### run configure script ### config.mak: Makefile configure @echo Running configure @sh configure --cc="$(CC)" --cxx="$(CXX)" $(CONFIGURE_OPTS) $(XINELIBOUTPUT_CONFIGURE_OPTS) -include config.mak ### ### The name of the distribution archive: ### ARCHIVE = $(PLUGIN)-$(VERSION) PACKAGE = vdr-$(ARCHIVE) ### ### The name of executable and libraries ### VDRPLUGIN = libvdr-$(PLUGIN).so.$(APIVERSION) VDRPLUGIN_SXFE = lib$(PLUGIN)-sxfe.so.$(VERSION) VDRPLUGIN_FBFE = lib$(PLUGIN)-fbfe.so.$(VERSION) VDRSXFE = vdr-sxfe VDRFBFE = vdr-fbfe XINEINPUTVDR = xineplug_inp_xvdr.so XINEPOSTAUTOCROP = xineplug_post_autocrop.so XINEPOSTSWSCALE = xineplug_post_swscale.so XINEPOSTAUDIOCHANNEL = xineplug_post_audiochannel.so ### ### which programs and libs to build ### TARGETS_VDR = TARGETS_FE = TARGETS_XINE = ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes) TARGETS_VDR += $(VDRPLUGIN) endif ifeq ($(XINELIBOUTPUT_XINEPLUGIN), yes) TARGETS_XINE += $(XINEINPUTVDR) $(XINEPOSTAUTOCROP) $(XINEPOSTSWSCALE) $(XINEPOSTAUDIOCHANNEL) endif ifeq ($(XINELIBOUTPUT_X11), yes) TARGETS_FE += $(VDRSXFE) ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes) TARGETS_VDR += $(VDRPLUGIN_SXFE) endif endif ifeq ($(XINELIBOUTPUT_FB), yes) TARGETS_FE += $(VDRFBFE) ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes) TARGETS_VDR += $(VDRPLUGIN_FBFE) endif endif ### ### Includes and Defines (add further entries here): ### ifeq ($(ARCH_APPLE_DARWIN), yes) INCLUDES += -I/sw/include LIBDIRS += -L/sw/lib LIBS += $(LIBDIRS) else LIBS += -lrt endif DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' \ -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 \ -DVIDEODIR='"$(VIDEODIR)"' -DXINELIBOUTPUT_VERSION='"$(VERSION)"' ifdef NOSIGNAL_IMAGE_FILE DEFINES += -DNOSIGNAL_IMAGE_FILE='"$(NOSIGNAL_IMAGE_FILE)"' endif ifdef STARTUP_IMAGE_FILE DEFINES += -DSTARTUP_IMAGE_FILE='"$(STARTUP_IMAGE_FILE)"' endif ### ### The object files (add further files here): ### # VDR plugin ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes) OBJS = $(PLUGIN).o device.o frontend.o osd.o config.o menu.o setup_menu.o \ menuitems.o media_player.o equalizer.o \ frontend_local.o frontend_svr.o \ tools/cxsocket.o tools/udp_pes_scheduler.o \ tools/backgroundwriter.o tools/playlist.o tools/http.o \ tools/vdrdiscovery.o tools/time_pts.o tools.o \ tools/metainfo_menu.o logdefs.o tools/rle.o OBJS_MPG = black_720x576.o nosignal_720x576.o vdrlogo_720x576.o endif # frontends OBJS_FE_SO = xine_frontend.o logdefs.o \ xine/post.o xine/vo_hook.o xine/vo_osdscaler.o xine/vo_osdreorder.o xine/vo_lastpts.o \ xine/vo_frameoutput.o \ tools/rle.o OBJS_FE = $(OBJS_FE_SO) \ xine_frontend_main.o \ xine_frontend_lirc.o xine_frontend_kbd.o xine_frontend_cec.o \ tools/vdrdiscovery.o OBJS_SXFE_SO = xine_sxfe_frontend.o $(OBJS_FE_SO) OBJS_SXFE = xine_sxfe_frontend.o $(OBJS_FE) OBJS_FBFE_SO = xine_fbfe_frontend.o $(OBJS_FE_SO) OBJS_FBFE = xine_fbfe_frontend.o $(OBJS_FE) ifneq ($(HAVE_DBUS_GLIB_1), no) OBJS_SXFE += tools/gnome_screensaver.o OBJS_SXFE_SO += tools/gnome_screensaver.o endif # xine plugins OBJS_XINEINPUTVDR = xine_input_vdr.o xine/demux_xvdr.o \ xine/ts2es.o xine/demux_xvdr_tsdata.o \ xine/adjustable_scr.o xine/xvdr_metronom.o xine/osd_manager.o \ tools/rle.o tools/ts.o tools/pes.o tools/mpeg.o tools/h264.o OBJS_XINE = $(OBJS_XINEINPUTVDR) xine_post_autocrop.o xine_post_swscale.o xine_post_audiochannel.o ### ### Implicit rules: ### %.o: %.c $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $(CFLAGS_VDR) -o $@ $< ### ### Dependencies: ### MAKEDEP = $(CXX) -MM -MG DEPFILE = .dependencies $(DEPFILE): Makefile config.mak @rm -f $@ @for i in $(OBJS:%.o=%.c) $(OBJS_SXFE:%.o=%.c) $(OBJS_FBFE:%.o=%.c) $(OBJS_XINE:%.o=%.c) ; do \ $(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) -MT "`dirname $$i`/`basename $$i .c`.o" $$i >>$@ ; \ done -include $(DEPFILE) DEFINES += -Wall ### ### Rules: ### mpg2c: mpg2c.c $(CC) $(CFLAGS) $(LDFLAGS) mpg2c.c -o $@ # data black_720x576.c: mpg2c black_720x576.mpg @./mpg2c black black_720x576.mpg black_720x576.c nosignal_720x576.c: mpg2c nosignal_720x576.mpg @./mpg2c nosignal nosignal_720x576.mpg nosignal_720x576.c vdrlogo_720x576.c: mpg2c vdrlogo_720x576.mpg @./mpg2c vdrlogo vdrlogo_720x576.mpg vdrlogo_720x576.c # C code (xine plugins and frontends) $(sort $(OBJS_SXFE) $(OBJS_FBFE) $(OBJS_XINE)): %.o: %.c $(CC) $(CFLAGS) -c $(DEFINES) $(INCLUDES) $(CFLAGS_X11) $(CFLAGS_AVUTIL) $(OPTFLAGS) -o $@ $< ### Internationalization (I18N): PODIR = po ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes) I18Npo = $(wildcard $(PODIR)/*.po) I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) I18Nmsgs = $(addprefix $(DESTDIR)$(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 --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='' -o $@ $^ %.po: $(I18Npot) msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $< @touch $@ $(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo @echo Installing $^ install -D -m644 $< $@ endif .PHONY: i18n i18n: $(I18Nmo) $(I18Npot) install-i18n: $(I18Nmsgs) ### ### targets ### XINELIBOUTPUT_INSTALL_MSG = \ $(warning *********************** xineliboutput ***************************) \ $(warning Xine plugins and frontends will not be installed automatically. ) \ $(warning To install files execute "make install" in ) \ $(warning $(shell echo `pwd`)) \ $(warning *****************************************************************) install : XINELIBOUTPUT_INSTALL_MSG = .PHONY: all all: config $(TARGETS_VDR) frontends i18n frontends: config $(TARGETS_FE) $(TARGETS_XINE) $(XINELIBOUTPUT_INSTALL_MSG) config: config.mak .PHONY: config .PHONY: frontends install dist clean # # VDR plugin # $(VDRPLUGIN): $(OBJS) $(OBJS_MPG) $(CXX) $(CXXFLAGS) $(LDFLAGS_SO) $(LDFLAGS) -shared $(OBJS) $(OBJS_MPG) $(LIBS) $(LIBS_VDR) -o $@ ifeq ($(VDR_TREE), yes) $(INSTALL) $@ $(LIBDIR)/ endif install-lib: $(TARGETS_VDR) ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes) @echo Installing $^ install -D $^ $(DESTDIR)$(LIBDIR)/ endif install: install-lib install-i18n # # vdr-sxfe # $(VDRPLUGIN_SXFE): $(OBJS_SXFE_SO) $(CC) $(CFLAGS) $(LDFLAGS_SO) $(LDFLAGS) $(OBJS_SXFE_SO) $(LIBS_X11) $(LIBS_XINE) $(LIBS_JPEG) -o $@ ifeq ($(VDR_TREE), yes) $(INSTALL) $@ $(LIBDIR)/ endif $(VDRSXFE): $(OBJS_SXFE) $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS_SXFE) $(LIBS_X11) $(LIBS_XINE) $(LIBS_JPEG) $(LIBS_CEC) $(LIBS_PTHREAD) -o $@ # # vdr-fbfe # $(VDRPLUGIN_FBFE): $(OBJS_FBFE_SO) $(CC) $(CFLAGS) $(LDFLAGS_SO) $(LDFLAGS) $(OBJS_FBFE_SO) $(LIBS_XINE) $(LIBS_JPEG) -o $@ ifeq ($(VDR_TREE), yes) $(INSTALL) $@ $(LIBDIR)/ endif $(VDRFBFE): $(OBJS_FBFE) $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS_FBFE) $(LIBS_XINE) $(LIBS_JPEG) $(LIBS_CEC) $(LIBS_PTHREAD) -o $@ # # xine plugins # $(XINEINPUTVDR): $(OBJS_XINEINPUTVDR) $(CC) $(CFLAGS) $(LDFLAGS_SO) $(LDFLAGS) $(OBJS_XINEINPUTVDR) $(LIBS_XINE) $(LIBS_AVUTIL) $(LIBS_PTHREAD) -o $@ $(XINEPOSTAUTOCROP): xine_post_autocrop.o $(CC) $(CFLAGS) $(LDFLAGS_SO) $(LDFLAGS) $< -o $@ $(LIBS_XINE) $(XINEPOSTSWSCALE): xine_post_swscale.o $(CC) $(CFLAGS) $(LDFLAGS_SO) $(LDFLAGS) $< -o $@ $(LIBS_XINE) $(XINEPOSTAUDIOCHANNEL): xine_post_audiochannel.o $(CC) $(CFLAGS) $(LDFLAGS_SO) $(LDFLAGS) $< -o $@ $(LIBS_XINE) # # install # install: all ifeq ($(XINELIBOUTPUT_XINEPLUGIN), yes) @mkdir -p $(DESTDIR)$(XINEPLUGINDIR)/post @echo Installing $(DESTDIR)$(XINEPLUGINDIR)/$(XINEINPUTVDR) @-rm -rf $(DESTDIR)$(XINEPLUGINDIR)/$(XINEINPUTVDR) @$(INSTALL) -m 0644 $(XINEINPUTVDR) $(DESTDIR)$(XINEPLUGINDIR)/$(XINEINPUTVDR) @echo Installing $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTAUTOCROP) @-rm -rf $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTAUTOCROP) @$(INSTALL) -m 0644 $(XINEPOSTAUTOCROP) $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTAUTOCROP) @echo Installing $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTSWSCALE) @-rm -rf $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTSWSCALE) @$(INSTALL) -m 0644 $(XINEPOSTSWSCALE) $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTSWSCALE) @echo Installing $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTAUDIOCHANNEL) @-rm -rf $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTAUDIOCHANNEL) @$(INSTALL) -m 0644 $(XINEPOSTAUDIOCHANNEL) $(DESTDIR)$(XINEPLUGINDIR)/post/$(XINEPOSTAUDIOCHANNEL) endif ifeq ($(XINELIBOUTPUT_FB), yes) @echo Installing $(DESTDIR)$(BINDIR)/vdr-fbfe @mkdir -p $(DESTDIR)$(BINDIR) @-rm -rf $(DESTDIR)$(BINDIR)/vdr-fbfe @$(INSTALL) -m 0755 vdr-fbfe $(DESTDIR)$(BINDIR)/vdr-fbfe endif ifeq ($(XINELIBOUTPUT_X11), yes) @echo Installing $(DESTDIR)$(BINDIR)/vdr-sxfe @mkdir -p $(DESTDIR)$(BINDIR) @-rm -rf $(DESTDIR)$(BINDIR)/vdr-sxfe @$(INSTALL) -m 0755 vdr-sxfe $(DESTDIR)$(BINDIR)/vdr-sxfe endif dist: $(I18Npo) clean @-rm -rf $(TMPDIR)/$(ARCHIVE) @mkdir $(TMPDIR)/$(ARCHIVE) @cp -a * $(TMPDIR)/$(ARCHIVE) @tar czf $(PACKAGE).tgz --exclude=CVS -C $(TMPDIR) $(ARCHIVE) @-rm -rf $(TMPDIR)/$(ARCHIVE) @echo Distribution package created as $(PACKAGE).tgz clean: @-rm -f $(DEPFILE) *.so* *.o *.tgz core* *~ *.flc *.bak \ tools/*.o tools/*~ tools/*.flc xine/*.o xine/*~ \ xine/*.flc $(VDR_FBFE) $(VDR_SXFE) mpg2c black_720x576.c \ nosignal_720x576.c vdrlogo_720x576.c vdr-sxfe vdr-fbfe \ features.h config.mak configure.log @-rm -f $(PODIR)/*.mo $(PODIR)/*.pot