default: all
PYTHON ?= python
+PYTHONS ?= $(PYTHON)
prefix ?= /usr/local
###--------------------------------------------------------------------------
###--------------------------------------------------------------------------
### Useful targets implemented by the `setup.py' program.
+SINGLE_PYTARGETS += gen
+CMD-gen ?= build_gen
+
PYTARGETS += all
CMD-all ?= build
+$(foreach p,$(PYTHONS),all/$p):: all/%: gen
PYTARGETS += clean
OPTS-clean ?= --all
clean-hook::; rm -f MANIFEST RELEASE
-PYTARGETS += dist
+SINGLE_PYTARGETS += dist
CMD-dist ?= sdist
OPTS-dist += --dist-dir .
OPTS-install += --prefix $(prefix)
PYTARGETS += check
+CMD-check ?= test
+$(foreach p,$(PYTHONS),check/$p):: check/%: all/%
###--------------------------------------------------------------------------
### Interfacing `setup.py' to make.
-pysetup = $(PYTHON) setup.py \
+pysetup = $(or $2,$(PYTHON)) setup.py \
$(if $(filter-out undefined,$(origin CMD-$1)),$(CMD-$1),$1) \
- $(OPTS-$1)
+ $(OPTS-$1) $(OPTS-$1/$(or $2,$(PYTHON)))
+
+PYTHON_PYTARGETS = $(foreach t, $(PYTARGETS), \
+ $(foreach p, $(PYTHONS), \
+ $t/$p))
+ALL_PYTARGETS = $(PYTARGETS)
+ALL_PYTARGETS += $(SINGLE_PYTARGETS) $(PYTHON_PYTARGETS)
+
+$(foreach t, $(ALL_PYTARGETS), $t-hook):: %:
-$(foreach t, $(PYTARGETS), $t-hook):: %:
-$(PYTARGETS):: %: %-hook setup.py
+$(SINGLE_PYTARGETS):: %: %-hook setup.py
$(call pysetup,$*)
+$(PYTARGETS):: %: %-hook $(foreach p, $(PYTHONS), %/$p)
+$(PYTHON_PYTARGETS):: %: %-hook setup.py
+ $(call pysetup,$(patsubst %/,%,$(dir $*)),$(notdir $*))
-.PHONY: $(PYTARGETS)
+.PHONY: $(ALL_PYTARGETS)
###--------------------------------------------------------------------------
### Release builds.
rm -rf _distcheck
$(PYTHON) setup.py sdist --dist-dir _distcheck
cd _distcheck && tar xvfz $(distdir).tar.gz
- cd _distcheck/$(distdir) && make && make check && make dist
+ cd _distcheck/$(distdir) && $(MAKE) && $(MAKE) check && $(MAKE) dist
cp _distcheck/$(distdir)/$(distdir).tar.gz .
rm -rf _distcheck