--- fritzbox/Makefile_orig 2013-01-05 19:48:43.000000000 +0100 +++ fritzbox/Makefile 2012-04-25 11:30:17.000000000 +0200 @@ -6,26 +6,40 @@ # 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') -# 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) +### 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 -### The compiler options: -export CFLAGS = $(call PKGCFG,cflags) -export CXXFLAGS = $(call PKGCFG,cxxflags) +### 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 = $(call PKGCFG,apiversion) +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 @@ -34,12 +48,11 @@ ARCHIVE = $(PLUGIN)-$(VERSION) PACKAGE = vdr-$(ARCHIVE) -### The name of the shared object file: -SOFILE = libvdr-$(PLUGIN).so - ### Includes and Defines (add further entries here): -DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' +INCLUDES += -I$(VDRDIR)/include + +DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' ### libfritz++ LIBFRITZ = libfritz++ @@ -48,28 +61,16 @@ ### The object files (add further files here): -OBJS = $(PLUGIN).o fritzeventhandler.o log.o menu.o notifyosd.o setup.o - -### Internationalization (I18N): - -PODIR = po -I18Npo = $(wildcard $(PODIR)/*.po) -I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) -I18Nmsgs = $(addprefix $(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) -I18Npot = $(PODIR)/$(PLUGIN).pot +OBJS = $(PLUGIN).o fritzeventhandler.o log.o menu.o notifyosd.o setup.o ### Targets: -all: $(SOFILE) i18n test $(LIBFRITZ) - +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) - -install-lib: $(SOFILE) - install -D $^ $(LIBDIR)/$^.$(APIVERSION) - -install: install-lib install-i18n - + $(LIBFRITZ): @$(MAKE) -C $(LIBFRITZ) @@ -80,7 +81,7 @@ @-rm -rf $(TMPDIR)/$(ARCHIVE) @mkdir $(TMPDIR)/$(ARCHIVE) @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar czf $(PACKAGE).tgz --exclude=.* --exclude=test --exclude=test.old --exclude=*.launch -C $(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 @@ -89,26 +90,34 @@ @-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 \ - --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='' -o $@ `ls $^` + --msgid-bugs-address='' -o $@ $^ grep -v POT-Creation $(I18Npot) > $(I18Npot)~ mv $(I18Npot)~ $(I18Npot) %.po: $(I18Npot) - msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $< + msgmerge -U --no-wrap -s --backup=none -q $@ $< @touch $@ -$(I18Nmsgs): $(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo - install -D -m644 $< $@ - -i18n: $(I18Nmo) $(I18Npot) +$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo + @mkdir -p $(dir $@) + cp $< $@ -install-i18n: $(I18Nmsgs) +.PHONY: i18n test $(LIBFRITZ) +i18n: $(I18Nmsgs) test: @-make -C test @@ -118,8 +127,6 @@ @echo PROJECT_NUMBER = $(VERSION) >> $(DOXYFILE).tmp $(DOXYGEN) $(DOXYFILE).tmp @rm $(DOXYFILE).tmp - -.PHONY: i18n test $(LIBFRITZ) # Dependencies: