Makefile 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. PYTHON=`which python`
  2. CYTHON=`which cython`
  3. DESTDIR=/
  4. PROJECT=python-scattnlay
  5. VERSION=2.2
  6. BUILDIR=$(CURDIR)/debian/$(PROJECT)
  7. SRCDIR=$(CURDIR)/src
  8. MULTIPREC=100
  9. CXX_NMIE_HEADERS=$(SRCDIR)/nmie.hpp $(SRCDIR)/nmie-impl.hpp $(SRCDIR)/nmie-precision.hpp
  10. all:
  11. @echo "make source - Create source package for Python extension"
  12. @echo "make cython - Convert Cython code to C++"
  13. @echo "make python_ext_pb11 - Create Python extension using pybind11"
  14. @echo "make python_ext - Create Python extension using C++ code"
  15. @echo "make cython_ext - Create Python extension using Cython code"
  16. @echo "make install - Install Python extension on local system"
  17. @echo "make buildrpm - Generate a rpm package for Python extension"
  18. @echo "make builddeb - Generate a deb package for Python extension"
  19. @echo "make standalone - Create standalone programs (scattnlay and fieldnlay)"
  20. @echo "make clean - Delete temporal files"
  21. # make standalone
  22. source:
  23. $(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../
  24. cython: $(SRCDIR)/scattnlay.pyx
  25. # create c++ code for double precision module
  26. $(CYTHON) --cplus $(SRCDIR)/scattnlay.pyx -o $(SRCDIR)/scattnlay.cpp
  27. # create c++ code for MP module
  28. ln -s $(SRCDIR)/scattnlay.pyx $(SRCDIR)/scattnlay_mp.pyx
  29. $(CYTHON) --cplus $(SRCDIR)/scattnlay_mp.pyx -o $(SRCDIR)/scattnlay_mp.cpp
  30. rm $(SRCDIR)/scattnlay_mp.pyx
  31. python_ext_pb11: $(SRCDIR)/nmie.cc $(SRCDIR)/pb11_nmie.cc $(SRCDIR)/pb11_wrapper.cc $(SRCDIR)/pb11_wrapper_mp.cc
  32. $(PYTHON) setup_pb11.py build_ext --inplace
  33. python_ext: $(SRCDIR)/nmie.cc $(SRCDIR)/py_nmie.cc $(SRCDIR)/scattnlay.cpp $(SRCDIR)/scattnlay_mp.cpp
  34. $(PYTHON) setup.py build_ext --inplace
  35. cython_ext: cython python_ext
  36. install:
  37. $(PYTHON) setup.py install --root $(DESTDIR) $(COMPILE)
  38. buildrpm:
  39. #$(PYTHON) setup.py bdist_rpm --post-install=rpm/postinstall --pre-uninstall=rpm/preuninstall
  40. $(PYTHON) setup.py bdist_rpm --dist-dir=../
  41. builddeb:
  42. # build the source package in the parent directory
  43. # then rename it to project_version.orig.tar.gz
  44. $(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../ --prune
  45. rename -f 's/$(PROJECT)-(.*)\.tar\.gz/$(PROJECT)_$$1\.orig\.tar\.gz/' ../*
  46. # build the package
  47. dpkg-buildpackage -i -I -rfakeroot
  48. standalone: scattnlay fieldnlay scattnlay-mp fieldnlay-mp
  49. # standalone programs with DP
  50. scattnlay: $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  51. $(CXX) -DNDEBUG -O2 -Wall -std=c++11 $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc -lm -o scattnlay $(CXXFLAGS) $(LDFLAGS)
  52. fieldnlay: $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  53. $(CXX) -DNDEBUG -O2 -Wall -std=c++11 $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc -lm -o fieldnlay $(CXXFLAGS) $(LDFLAGS)
  54. # standalone programs with MP
  55. scattnlay-mp: $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  56. $(CXX) -DNDEBUG -DMULTI_PRECISION=$(MULTIPREC) -O2 -Wall -std=c++11 $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc -lm -o scattnlay-mp $(CXXFLAGS) $(LDFLAGS)
  57. fieldnlay-mp: $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  58. $(CXX) -DNDEBUG -DMULTI_PRECISION=$(MULTIPREC) -O2 -Wall -std=c++11 $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc -lm -o fieldnlay-mp $(CXXFLAGS) $(LDFLAGS)
  59. clean:
  60. $(PYTHON) setup.py clean
  61. $(MAKE) -f $(CURDIR)/debian/rules clean
  62. rm -rf build/ MANIFEST
  63. find . -name '*.pyc' -delete
  64. find . -name '*.o' -delete
  65. find . -name '*.so' -delete