Makefile
author nathan
Sat, 29 Dec 2007 13:19:16 +0100
branchtrunk
changeset 20 bc64e11172f5
parent 19 5686936eefc5
child 21 bc68e23ad6d5
permissions -rw-r--r--
versioning based on hg identify
nathan@0
     1
#
nathan@0
     2
# PremiereEpg plugin to VDR
nathan@0
     3
#
nathan@14
     4
# (C) 2005-2007 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@20
    29
RELEASE := $(shell grep 'define PLUGIN_RELEASE' version.h | awk '{ print $$3 }' | sed -e 's/[";]//g')
nathan@20
    30
VERSION := $(shell if test -d .hg; then echo -n '$(RELEASE)-'; (hg identify 2>/dev/null || echo -n Unknown) | sed -e 's/ .*//'; else echo -n '$(RELEASE)'; fi)
nathan@0
    31
nathan@0
    32
### The C++ compiler and options:
nathan@0
    33
nathan@0
    34
CXX      ?= g++
nathan@8
    35
CXXFLAGS ?= -O2 -fPIC -Wall -Woverloaded-virtual
nathan@0
    36
nathan@0
    37
### The directory environment:
nathan@0
    38
nathan@0
    39
VDRDIR = ../../..
nathan@0
    40
LIBDIR = ../../lib
nathan@0
    41
TMPDIR = /tmp
nathan@0
    42
nathan@0
    43
### Allow user defined options to overwrite defaults:
nathan@0
    44
nathan@0
    45
-include $(VDRDIR)/Make.config
nathan@20
    46
-include Make.config
nathan@0
    47
nathan@0
    48
### The version number of VDR (taken from VDR's "config.h"):
nathan@0
    49
nathan@20
    50
VDRVERSION := $(shell sed -ne '/define VDRVERSION/ s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
nathan@20
    51
APIVERSION := $(shell sed -ne '/define APIVERSION/ s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
nathan@10
    52
ifeq ($(strip $(APIVERSION)),)
nathan@10
    53
   APIVERSION = $(VDRVERSION)
nathan@10
    54
endif
nathan@0
    55
nathan@0
    56
### The name of the distribution archive:
nathan@0
    57
nathan@0
    58
ARCHIVE = $(PLUGIN)-$(VERSION)
nathan@0
    59
PACKAGE = vdr-$(ARCHIVE)
nathan@0
    60
nathan@0
    61
### Includes and Defines (add further entries here):
nathan@0
    62
nathan@10
    63
INCLUDES += -I$(VDRDIR)/include
nathan@0
    64
nathan@0
    65
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
nathan@0
    66
nathan@0
    67
### The object files (add further files here):
nathan@0
    68
nathan@20
    69
OBJS = $(PLUGIN).o version.o
nathan@0
    70
nathan@2
    71
ifdef DBG
nathan@2
    72
CXXFLAGS += -g
nathan@2
    73
endif
nathan@2
    74
nathan@14
    75
### Internationalization (I18N):
nathan@0
    76
nathan@14
    77
PODIR     = po
nathan@14
    78
I18Npot   = $(PODIR)/$(PLUGIN).pot
nathan@14
    79
I18Nmsgs  = $(addprefix $(LOCALEDIR)/,$(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo,$(notdir $(foreach file, $(wildcard $(PODIR)/*.po), $(basename $(file))))))
nathan@14
    80
LOCALEDIR = $(VDRDIR)/locale
nathan@0
    81
nathan@0
    82
# Dependencies:
nathan@0
    83
nathan@0
    84
MAKEDEP = $(CXX) -MM -MG
nathan@0
    85
DEPFILE = .dependencies
nathan@20
    86
DEPFILES = $(subst version.c,,$(OBJS:%.o=%.c) $(OBJS2:%.o=%.c))
nathan@20
    87
$(DEPFILE): Makefile $(DEPFILES) $(wildcard *.h)
nathan@20
    88
	@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(DEPFILES) > $@
nathan@0
    89
nathan@0
    90
-include $(DEPFILE)
nathan@0
    91
nathan@0
    92
### Targets:
nathan@0
    93
nathan@14
    94
TARGETS = libvdr-$(PLUGIN).so
nathan@14
    95
ifneq ($(shell grep -l 'Phrases' $(VDRDIR)/i18n.c),$(VDRDIR)/i18n.c)
nathan@14
    96
TARGETS += i18n
nathan@14
    97
endif
nathan@14
    98
nathan@14
    99
all: $(TARGETS)
nathan@14
   100
.PHONY: i18n
nathan@14
   101
nathan@14
   102
%.o: %.c
nathan@14
   103
	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
nathan@0
   104
nathan@0
   105
libvdr-$(PLUGIN).so: $(OBJS)
nathan@0
   106
	$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
nathan@10
   107
	@cp $@ $(LIBDIR)/$@.$(APIVERSION)
nathan@0
   108
nathan@14
   109
$(I18Npot): $(shell grep -rl '\(tr\|trNOOP\)(\".*\")' *.c $(SYSDIR))
nathan@19
   110
	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<s.huelswitt@gmx.de>' -o $@ $^
nathan@14
   111
nathan@14
   112
%.po: $(I18Npot)
nathan@19
   113
	msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
nathan@14
   114
	@touch $@
nathan@14
   115
nathan@14
   116
%.mo: %.po
nathan@14
   117
	msgfmt -c -o $@ $<
nathan@14
   118
nathan@14
   119
$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
nathan@14
   120
	@mkdir -p $(dir $@)
nathan@14
   121
	cp $< $@
nathan@14
   122
nathan@14
   123
i18n: $(I18Nmsgs)
nathan@14
   124
nathan@20
   125
version.c: FORCE
nathan@20
   126
	@echo >$@.new "/* this file will be overwritten without warning */"; \
nathan@20
   127
	 echo >>$@.new 'const char *PluginVersion =' '"'$(VERSION)'";'; \
nathan@20
   128
	 diff $@.new $@ >$@.diff 2>&1; \
nathan@20
   129
	 if test -s $@.diff; then mv -f $@.new $@; fi; \
nathan@20
   130
	 rm -f $@.new $@.diff;
nathan@20
   131
nathan@0
   132
dist: clean
nathan@0
   133
	@-rm -rf $(TMPDIR)/$(ARCHIVE)
nathan@0
   134
	@mkdir $(TMPDIR)/$(ARCHIVE)
nathan@0
   135
	@cp -a * $(TMPDIR)/$(ARCHIVE)
nathan@4
   136
	@tar czf $(PACKAGE).tar.gz -C $(TMPDIR) $(ARCHIVE)
nathan@0
   137
	@-rm -rf $(TMPDIR)/$(ARCHIVE)
nathan@2
   138
	@echo Distribution package created as $(PACKAGE).tar.gz
nathan@0
   139
nathan@0
   140
clean:
nathan@2
   141
	@-rm -f $(OBJS) $(DEPFILE) *.so *.tar.gz core* *~
nathan@20
   142
	@-rm -f version.c
nathan@20
   143
	@-rm -f $(PODIR)/*.mo
nathan@20
   144
nathan@20
   145
FORCE: