use bitcoinrpc for "make local"
[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         $(call GIT_POC, \
66                 git://github.com/jgarzik/python-bitcoinrpc.git, lib/bitcoinrpc, \
67                 true)
68         @if [ -e "lib/jsonrpc" ]; then \
69                 if ! [ -L "lib/jsonrpc" ]; then \
70                         echo '*** You may wish to delete lib/jsonrpc and re-run "make local".'; \
71                 fi \
72         else \
73                 ln -s bitcoinrpc/jsonrpc lib/jsonrpc; \
74         fi
75         $(call GIT_POC, \
76                 git://gitorious.org/anynumber/python.git, lib/anynumber, \
77                 ln -s anynumber.py lib/anynumber/__init__.py)
78
79 winprep: all icons/bitcoin32.ico icons/go-next.ico
80
81 winexe:
82         makensis -NOCD windows/spesmilo.nsis
83
84 clean:
85         rm -vf $(qm) $(pyo) $(APP) $(exescript) $(icon) $(fallback_icons)
86
87 install: $(qm) $(pyo) exescript $(icon) $(fallback_icons)
88         $(INSTALL) -d "$(DESTDIR)/$(LIBEXECDIR)"
89         for pyo in $(pyo); do \
90                 $(INSTALL) -D "$$pyo" "$(DESTDIR)/$(LIBEXECDIR)/$$pyo"; \
91         done
92         $(INSTALL) -d "$(DESTDIR)/$(ICONDIR)/32x32/apps"
93         $(INSTALL) "$(icon)" "$(DESTDIR)/$(ICONDIR)/32x32/apps/bitcoin.png"
94         for xicon in $(fallback_icons); do \
95                 $(INSTALL) -D "$$xicon" "$(DESTDIR)/$(LIBEXECDIR)/$$xicon"; \
96         done
97         for xqm in $(qm); do \
98                 $(INSTALL) -D "$$xqm" "$(DESTDIR)/$(LIBEXECDIR)/$$xqm"; \
99         done
100         $(INSTALL) -d "$(DESTDIR)/$(BINDIR)"
101         $(INSTALL) --mode=0755 "$(exescript)" "$(DESTDIR)/$(BINDIR)/$(APP)"
102         $(INSTALL) -d "$(DESTDIR)/$(XDGAPPDIR)"
103         $(INSTALL) "$(APP).desktop" "$(DESTDIR)/$(XDGAPPDIR)/"
104         if [ -n "$(KDESERVICEDIR)" ]; then \
105                 $(INSTALL) -d "$(DESTDIR)/$(KDESERVICEDIR)"; \
106                 $(INSTALL) "$(APP).protocol" "$(DESTDIR)/$(KDESERVICEDIR)/"; \
107         fi
108
109 .PHONY: lang clean install pyo local