1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
#
# Makefile for a Video Disk Recorder plugin
# This Makefile version is for VDR < 1.7.34 and is no longer supported.
#
# $Id$
# 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.
# IPORTANT: the presence of this macro is important for the Make.config
# file. So it must be defined, even if it is not used here!
#
PLUGIN = fritzbox
### 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 -ggdb -O2 -Wall -Woverloaded-virtual
### Make sure that necessary options are included:
ifeq ($(strip $(wildcard $(VDRDIR)/Make.global)),)
CXXFLAGS += -fPIC
else
include $(VDRDIR)/Make.global
endif
### The directory environment:
VDRDIR ?= ../../..
LIBDIR = $(VDRDIR)/PLUGINS/lib
TMPDIR = /tmp
### Allow user defined options to overwrite defaults:
-include $(VDRDIR)/Make.config
### The version number of VDR's plugin API (taken from VDR's "config.h"):
APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
VDRVERSNUM = $(shell grep 'define VDRVERSNUM ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
DOXYFILE = Doxyfile
DOXYGEN = doxygen
### The name of the distribution archive:
ARCHIVE = $(PLUGIN)-$(VERSION)
PACKAGE = vdr-$(ARCHIVE)
### Includes and Defines (add further entries here):
INCLUDES += -I$(VDRDIR)/include
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
### libfritz++
LIBFRITZ = libfritz++
INCLUDES += -I$(LIBFRITZ)
LIBS += $(LIBFRITZ)/$(LIBFRITZ).a -lgcrypt -lccgnu2
### The object files (add further files here):
OBJS = $(PLUGIN).o fritzeventhandler.o log.o menu.o notifyosd.o setup.o
### Targets:
all: libvdr-$(PLUGIN).so i18n test $(LIBFRITZ)
@-cp --remove-destination libvdr-$(PLUGIN).so $(LIBDIR)/libvdr-$(PLUGIN).so.$(APIVERSION)
## TODO: Prevent so file from beeing build every time
libvdr-$(PLUGIN).so: $(OBJS) $(LIBFRITZ)
$(CXX) $(CXXFLAGS) -shared $(OBJS) $(LIBS) -o $@
ar ru libvdr-$(PLUGIN).a $(OBJS)
$(LIBFRITZ):
@$(MAKE) -C $(LIBFRITZ)
%.o: %.c
$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
dist: clean
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@mkdir $(TMPDIR)/$(ARCHIVE)
@cp -a * $(TMPDIR)/$(ARCHIVE)
@tar czf $(PACKAGE).tgz --exclude=.* --exclude=test --exclude=test.old -C $(TMPDIR) $(ARCHIVE)
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@echo Distribution package created as $(PACKAGE).tgz
clean:
@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
@-rm -f $(OBJS) $(DEPFILE) *.so *.a *.tgz core* *~
@-make -C $(LIBFRITZ) clean
@-make -C test clean
### Internationalization (I18N):
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c) $(wildcard libfritz++/*.cpp)
xgettext -C -cTRANSLATORS --no-wrap -s --no-location -k -ktr -ktrNOOP -kI18N_NOOP \
--msgid-bugs-address='<vdr@joachim-wilke.de>' -o $@ $^
grep -v POT-Creation $(I18Npot) > $(I18Npot)~
mv $(I18Npot)~ $(I18Npot)
%.po: $(I18Npot)
msgmerge -U --no-wrap -s --backup=none -q $@ $<
@touch $@
$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
@mkdir -p $(dir $@)
cp $< $@
.PHONY: i18n test $(LIBFRITZ)
i18n: $(I18Nmsgs)
test:
@-make -C test
srcdoc:
@cp $(DOXYFILE) $(DOXYFILE).tmp
@echo PROJECT_NUMBER = $(VERSION) >> $(DOXYFILE).tmp
$(DOXYGEN) $(DOXYFILE).tmp
@rm $(DOXYFILE).tmp
# Dependencies:
MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
-include $(DEPFILE)
|