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