Makefile
author nathan
Sun, 22 Feb 2009 21:02:54 +0800
branchtrunk
changeset 29 a0f32201f466
parent 23 3c10fdd8ccce
permissions -rw-r--r--
add italian translations
nathan@0
     1
#
nathan@0
     2
# PremiereEpg plugin to VDR
nathan@0
     3
#
nathan@21
     4
# (C) 2005-2008 Stefan Huelswitt <s.huelswitt@gmx.de>
nathan@0
     5
#
nathan@0
     6
# This code is free software; you can redistribute it and/or
nathan@0
     7
# modify it under the terms of the GNU General Public License
nathan@0
     8
# as published by the Free Software Foundation; either version 2
nathan@0
     9
# of the License, or (at your option) any later version.
nathan@0
    10
#
nathan@0
    11
# This code is distributed in the hope that it will be useful,
nathan@0
    12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
nathan@0
    13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
nathan@0
    14
# GNU General Public License for more details.
nathan@0
    15
#
nathan@0
    16
# You should have received a copy of the GNU General Public License
nathan@0
    17
# along with this program; if not, write to the Free Software
nathan@0
    18
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
nathan@0
    19
# Or, point your browser to http://www.gnu.org/copyleft/gpl.html
nathan@0
    20
nathan@0
    21
# The official name of this plugin.
nathan@0
    22
# This name will be used in the '-P...' option of VDR to load the plugin.
nathan@0
    23
# By default the main source file also carries this name.
nathan@0
    24
#
nathan@0
    25
PLUGIN = premiereepg
nathan@0
    26
nathan@20
    27
### The version number of this plugin:
nathan@0
    28
nathan@21
    29
HGARCHIVE = .hg_archival.txt
nathan@20
    30
RELEASE := $(shell grep 'define PLUGIN_RELEASE' version.h | awk '{ print $$3 }' | sed -e 's/[";]//g')
nathan@21
    31
RELSTR  := $(shell if test -d .hg; then \
nathan@21
    32
                     echo -n "-"; (hg identify 2>/dev/null || echo -n "Unknown") | sed -e 's/ .*//'; \
nathan@21
    33
                   elif test -r $(HGARCHIVE); then \
nathan@21
    34
                     echo -n "-"; grep "^node" $(HGARCHIVE) | awk '{ printf "%.12s",$$2 }'; \
nathan@21
    35
                   fi)
nathan@21
    36
VERSION := $(RELEASE)$(RELSTR)
nathan@0
    37
nathan@0
    38
### The C++ compiler and options:
nathan@0
    39
nathan@0
    40
CXX      ?= g++
nathan@8
    41
CXXFLAGS ?= -O2 -fPIC -Wall -Woverloaded-virtual
nathan@0
    42
nathan@0
    43
### The directory environment:
nathan@0
    44
nathan@0
    45
VDRDIR = ../../..
nathan@0
    46
LIBDIR = ../../lib
nathan@0
    47
TMPDIR = /tmp
nathan@0
    48
nathan@0
    49
### Allow user defined options to overwrite defaults:
nathan@0
    50
nathan@0
    51
-include $(VDRDIR)/Make.config
nathan@20
    52
-include Make.config
nathan@0
    53
nathan@0
    54
### The version number of VDR (taken from VDR's "config.h"):
nathan@0
    55
nathan@20
    56
VDRVERSION := $(shell sed -ne '/define VDRVERSION/ s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
nathan@20
    57
APIVERSION := $(shell sed -ne '/define APIVERSION/ s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
nathan@10
    58
ifeq ($(strip $(APIVERSION)),)
nathan@10
    59
   APIVERSION = $(VDRVERSION)
nathan@10
    60
endif
nathan@0
    61
nathan@0
    62
### The name of the distribution archive:
nathan@0
    63
nathan@21
    64
ARCHIVE = $(PLUGIN)-$(RELEASE)
nathan@0
    65
PACKAGE = vdr-$(ARCHIVE)
nathan@0
    66
nathan@0
    67
### Includes and Defines (add further entries here):
nathan@0
    68
nathan@10
    69
INCLUDES += -I$(VDRDIR)/include
nathan@0
    70
nathan@0
    71
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
nathan@0
    72
nathan@0
    73
### The object files (add further files here):
nathan@0
    74
nathan@20
    75
OBJS = $(PLUGIN).o version.o
nathan@0
    76
nathan@2
    77
ifdef DBG
nathan@2
    78
CXXFLAGS += -g
nathan@2
    79
endif
nathan@2
    80
nathan@14
    81
### Internationalization (I18N):
nathan@0
    82
nathan@14
    83
PODIR     = po
nathan@14
    84
I18Npot   = $(PODIR)/$(PLUGIN).pot
nathan@23
    85
I18Npots  := $(notdir $(foreach file, $(wildcard $(PODIR)/*.po), $(basename $(file))))
nathan@23
    86
ifeq ($(strip $(APIVERSION)),1.5.7)
nathan@23
    87
  I18Nmo  = $(PLUGIN).mo
nathan@23
    88
else
nathan@23
    89
  I18Nmo  = vdr-$(PLUGIN).mo
nathan@23
    90
endif
nathan@14
    91
LOCALEDIR = $(VDRDIR)/locale
nathan@23
    92
I18Nmsgs  := $(addprefix $(LOCALEDIR)/,$(addsuffix /LC_MESSAGES/$(I18Nmo),$(I18Npots)))
nathan@23
    93
nathan@23
    94
HASLOCALE = $(shell grep -l 'I18N_DEFAULT_LOCALE' $(VDRDIR)/include/vdr/i18n.h)
nathan@23
    95
ifeq ($(strip $(HASLOCALE)),)
nathan@23
    96
  OBJS += i18n.o
nathan@23
    97
endif
nathan@0
    98
nathan@21
    99
### Targets:
nathan@21
   100
nathan@21
   101
TARGETS = libvdr-$(PLUGIN).so
nathan@23
   102
ifneq ($(strip $(HASLOCALE)),)
nathan@23
   103
  TARGETS += i18n
nathan@21
   104
endif
nathan@21
   105
nathan@21
   106
all: $(TARGETS)
nathan@23
   107
.PHONY: i18n clean dist
nathan@21
   108
nathan@0
   109
# Dependencies:
nathan@0
   110
nathan@0
   111
MAKEDEP = $(CXX) -MM -MG
nathan@0
   112
DEPFILE = .dependencies
nathan@23
   113
DEPFILES = $(subst i18n.c,,$(subst version.c,,$(OBJS:%.o=%.c)))
nathan@20
   114
$(DEPFILE): Makefile $(DEPFILES) $(wildcard *.h)
nathan@20
   115
	@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(DEPFILES) > $@
nathan@0
   116
nathan@0
   117
-include $(DEPFILE)
nathan@0
   118
nathan@21
   119
# Rules
nathan@14
   120
nathan@14
   121
%.o: %.c
nathan@14
   122
	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
nathan@0
   123
nathan@0
   124
libvdr-$(PLUGIN).so: $(OBJS)
nathan@0
   125
	$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
nathan@10
   126
	@cp $@ $(LIBDIR)/$@.$(APIVERSION)
nathan@0
   127
nathan@23
   128
$(I18Npot): $(shell grep -rl '\(tr\|trNOOP\)(\".*\")' *.c )
nathan@19
   129
	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<s.huelswitt@gmx.de>' -o $@ $^
nathan@14
   130
nathan@14
   131
%.po: $(I18Npot)
nathan@19
   132
	msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
nathan@14
   133
	@touch $@
nathan@14
   134
nathan@14
   135
%.mo: %.po
nathan@14
   136
	msgfmt -c -o $@ $<
nathan@14
   137
nathan@23
   138
$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/$(I18Nmo): $(PODIR)/%.mo
nathan@14
   139
	@mkdir -p $(dir $@)
nathan@14
   140
	cp $< $@
nathan@14
   141
nathan@14
   142
i18n: $(I18Nmsgs)
nathan@14
   143
nathan@23
   144
i18n.c: $(PODIR)/*.po i18n-template.c po2i18n.pl
nathan@23
   145
	perl ./po2i18n.pl <i18n-template.c >i18n.c
nathan@23
   146
nathan@20
   147
version.c: FORCE
nathan@20
   148
	@echo >$@.new "/* this file will be overwritten without warning */"; \
nathan@20
   149
	 echo >>$@.new 'const char *PluginVersion =' '"'$(VERSION)'";'; \
nathan@20
   150
	 diff $@.new $@ >$@.diff 2>&1; \
nathan@20
   151
	 if test -s $@.diff; then mv -f $@.new $@; fi; \
nathan@20
   152
	 rm -f $@.new $@.diff;
nathan@20
   153
nathan@0
   154
dist: clean
nathan@0
   155
	@-rm -rf $(TMPDIR)/$(ARCHIVE)
nathan@0
   156
	@mkdir $(TMPDIR)/$(ARCHIVE)
nathan@0
   157
	@cp -a * $(TMPDIR)/$(ARCHIVE)
nathan@4
   158
	@tar czf $(PACKAGE).tar.gz -C $(TMPDIR) $(ARCHIVE)
nathan@0
   159
	@-rm -rf $(TMPDIR)/$(ARCHIVE)
nathan@2
   160
	@echo Distribution package created as $(PACKAGE).tar.gz
nathan@0
   161
nathan@0
   162
clean:
nathan@2
   163
	@-rm -f $(OBJS) $(DEPFILE) *.so *.tar.gz core* *~
nathan@23
   164
	@-rm -f version.c i18n.c
nathan@20
   165
	@-rm -f $(PODIR)/*.mo
nathan@20
   166
nathan@20
   167
FORCE: