1.PHONY: default
2default: build test clean
3
4PYTHON = python$(py)
5PYTHON_CONFIG = ${PYTHON} ../python-config
6MPI4PY_INCLUDE = ${shell ${PYTHON} -c 'import mpi4py; print( mpi4py.get_include() )'}
7
8
9SWIG = swig
10SWIG_PY = ${SWIG} -python
11.PHONY: src
12src: helloworld_wrap.c
13helloworld_wrap.c: helloworld.i
14	${SWIG_PY} -I${MPI4PY_INCLUDE} -o $@ $<
15
16MPICC = mpicc
17CFLAGS = -fPIC ${shell ${PYTHON_CONFIG} --includes}
18LDFLAGS = -shared ${shell ${PYTHON_CONFIG} --libs}
19SO = ${shell ${PYTHON_CONFIG} --extension-suffix}
20.PHONY: build
21build: _helloworld${SO}
22_helloworld${SO}: helloworld_wrap.c
23	${MPICC} ${CFLAGS} -I${MPI4PY_INCLUDE} -o $@ $< ${LDFLAGS}
24
25
26MPIEXEC = mpiexec
27NP_FLAG = -n
28NP = 5
29.PHONY: test
30test: build
31	${MPIEXEC} ${NP_FLAG} ${NP} ${PYTHON} test.py
32
33
34.PHONY: clean
35clean:
36	${RM} helloworld_wrap.c helloworld.py* _helloworld${SO}
37