install i18n files, and allow controlling via LINGUAS make var
[bitcoin:spesmilo.git] / Makefile
1 APP := spesmilo
2 PREFIX := /usr/local/
3 BINDIR := $(PREFIX)/bin
4 LIBEXECDIR := $(PREFIX)/libexec/$(APP)
5 DATADIR := $(PREFIX)/share
6 ICONDIR := $(DATADIR)/icons/hicolor
7 XDGDATADIR := $(DATADIR)
8 XDGAPPDIR := $(XDGDATADIR)/applications
9 KDESERVICEDIR := 
10 DISABLE_FALLBACK_ICONS := 
11 LINGUAS := $(patsubst i18n/%.ts,%,$(wildcard i18n/*.ts))
12
13 DESTDIR := 
14
15 INSTALL := install -v
16 PYTHON := python
17 PYTHON_O := $(PYTHON) -OO -m py_compile
18 IMGCONVERT := convert -background none
19
20 qm = $(patsubst %,i18n/%.qm,$(LINGUAS))
21 pyo = $(patsubst %.py,%.pyo,$(wildcard *.py jsonrpc/*.py))
22 exescript = $(APP).exescript
23 icon = icons/bitcoin32.png
24 ifeq ($(DISABLE_FALLBACK_ICONS),)
25         fallback_icons = $(patsubst %.svg,%.png,$(wildcard icons/*.svg))
26 endif
27
28 GIT_POC = if [ -e $(2) ]; then ( cd $(2) && git pull; ); else git clone $(1) $(2); $(3); fi
29
30 all: $(APP) $(qm) $(pyo) $(icon) $(fallback_icons)
31
32 %.qm: %.ts
33         lrelease $<
34
35 lang: $(qm)
36
37 %.pyo: %.py
38         $(PYTHON_O) $<
39
40 pyo: $(pyo)
41
42 %.xpm: %.svg
43         $(IMGCONVERT) $< $@
44
45 %.png: %.xpm
46         $(IMGCONVERT) $< $@
47
48 %.ico: %.xpm
49         $(IMGCONVERT) $< $@
50
51 $(APP):
52         make exescript exescript="$@" LIBEXECDIR=.
53         chmod +x $@
54
55 exescript:
56         { \
57                 echo '#!'"`which sh`"; \
58                 echo "PYTHONPATH=\"\$${PYTHONPATH}:$(LIBEXECDIR)/lib\" \\"; \
59                 echo "exec \"`which python`\" -O \"$(LIBEXECDIR)/main.pyo\" \"\$$@\""; \
60         } \
61         >"$(exescript)"
62
63 local:
64         mkdir -p lib
65         svn co http://svn.json-rpc.org/trunk/python-jsonrpc/jsonrpc lib/jsonrpc
66         $(call GIT_POC, \
67                 git://gitorious.org/anynumber/python.git, lib/anynumber, \
68                 ln -s anynumber.py lib/anynumber/__init__.py)
69
70 winprep: all icons/bitcoin32.ico icons/go-next.ico
71
72 clean:
73         rm -vf $(qm) $(pyo) $(APP) $(exescript) $(icon) $(fallback_icons)
74
75 install: $(qm) $(pyo) exescript $(icon) $(fallback_icons)
76         $(INSTALL) -d "$(DESTDIR)/$(LIBEXECDIR)"
77         for pyo in $(pyo); do \
78                 $(INSTALL) -D "$$pyo" "$(DESTDIR)/$(LIBEXECDIR)/$$pyo"; \
79         done
80         $(INSTALL) -d "$(DESTDIR)/$(ICONDIR)/32x32/apps"
81         $(INSTALL) "$(icon)" "$(DESTDIR)/$(ICONDIR)/32x32/apps/bitcoin.png"
82         for xicon in $(fallback_icons); do \
83                 $(INSTALL) -D "$$xicon" "$(DESTDIR)/$(LIBEXECDIR)/$$xicon"; \
84         done
85         for xqm in $(qm); do \
86                 $(INSTALL) -D "$$xqm" "$(DESTDIR)/$(LIBEXECDIR)/$$xqm"; \
87         done
88         $(INSTALL) -d "$(DESTDIR)/$(BINDIR)"
89         $(INSTALL) --mode=0755 "$(exescript)" "$(DESTDIR)/$(BINDIR)/$(APP)"
90         $(INSTALL) -d "$(DESTDIR)/$(XDGAPPDIR)"
91         $(INSTALL) "$(APP).desktop" "$(DESTDIR)/$(XDGAPPDIR)/"
92         if [ -n "$(KDESERVICEDIR)" ]; then \
93                 $(INSTALL) -d "$(DESTDIR)/$(KDESERVICEDIR)"; \
94                 $(INSTALL) "$(APP).protocol" "$(DESTDIR)/$(KDESERVICEDIR)/"; \
95         fi
96
97 .PHONY: lang clean install pyo local