Commit | Line | Data |
---|---|---|
1a7628a4 MW |
1 | ### -*-makefile-*- |
2 | ### | |
3 | ### Standard Makefile for Python packages. | |
4 | ||
5 | default: all | |
6 | ||
7 | PYTHON ?= python | |
0ebebfc0 | 8 | PYTHONS ?= $(PYTHON) |
1a7628a4 MW |
9 | prefix ?= /usr/local |
10 | ||
11 | ###-------------------------------------------------------------------------- | |
12 | ### Version information. | |
13 | ||
14 | distdir := $(shell $(PYTHON) setup.py -q distdir) | |
15 | ||
16 | ###-------------------------------------------------------------------------- | |
17 | ### Useful targets implemented by the `setup.py' program. | |
18 | ||
0ebebfc0 | 19 | SINGLE_PYTARGETS += gen |
36bcba75 MW |
20 | CMD-gen ?= build_gen |
21 | ||
1a7628a4 MW |
22 | PYTARGETS += all |
23 | CMD-all ?= build | |
0ebebfc0 | 24 | $(foreach p,$(PYTHONS),all/$p):: all/%: gen |
1a7628a4 MW |
25 | |
26 | PYTARGETS += clean | |
27 | OPTS-clean ?= --all | |
28 | clean-hook::; rm -f MANIFEST RELEASE | |
29 | ||
0ebebfc0 | 30 | SINGLE_PYTARGETS += dist |
1a7628a4 MW |
31 | CMD-dist ?= sdist |
32 | OPTS-dist += --dist-dir . | |
33 | ||
34 | PYTARGETS += install | |
35 | OPTS-install += --prefix $(prefix) | |
36 | ||
37 | PYTARGETS += check | |
38 | ||
39 | ###-------------------------------------------------------------------------- | |
40 | ### Interfacing `setup.py' to make. | |
41 | ||
0ebebfc0 | 42 | pysetup = $(or $2,$(PYTHON)) setup.py \ |
1a7628a4 | 43 | $(if $(filter-out undefined,$(origin CMD-$1)),$(CMD-$1),$1) \ |
0ebebfc0 | 44 | $(OPTS-$1) $(OPTS-$1/$(or $2,$(PYTHON))) |
1a7628a4 | 45 | |
0ebebfc0 MW |
46 | PYTHON_PYTARGETS = $(foreach t, $(PYTARGETS), \ |
47 | $(foreach p, $(PYTHONS), \ | |
48 | $t/$p)) | |
49 | ALL_PYTARGETS = $(PYTARGETS) | |
50 | ALL_PYTARGETS += $(SINGLE_PYTARGETS) $(PYTHON_PYTARGETS) | |
51 | ||
52 | $(foreach t, $(ALL_PYTARGETS), $t-hook):: %: | |
53 | ||
54 | $(SINGLE_PYTARGETS):: %: %-hook setup.py | |
1a7628a4 | 55 | $(call pysetup,$*) |
0ebebfc0 MW |
56 | $(PYTARGETS):: %: %-hook $(foreach p, $(PYTHONS), %/$p) |
57 | $(PYTHON_PYTARGETS):: %: %-hook setup.py | |
58 | $(call pysetup,$(patsubst %/,%,$(dir $*)),$(notdir $*)) | |
1a7628a4 | 59 | |
0ebebfc0 | 60 | .PHONY: $(ALL_PYTARGETS) |
1a7628a4 MW |
61 | |
62 | ###-------------------------------------------------------------------------- | |
63 | ### Release builds. | |
64 | ||
65 | distcheck: | |
66 | rm -rf _distcheck | |
67 | $(PYTHON) setup.py sdist --dist-dir _distcheck | |
68 | cd _distcheck && tar xvfz $(distdir).tar.gz | |
e465fcf3 | 69 | cd _distcheck/$(distdir) && $(MAKE) && $(MAKE) check && $(MAKE) dist |
1a7628a4 MW |
70 | cp _distcheck/$(distdir)/$(distdir).tar.gz . |
71 | rm -rf _distcheck | |
72 | ||
73 | ###----- That's all, folks -------------------------------------------------- |