Makefile 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. PYTHON=`which python3`
  2. DESTDIR=/
  3. PROJECT=python-scattnlay
  4. VERSION=2.2
  5. BUILDIR=$(CURDIR)/debian/$(PROJECT)
  6. SRCDIR=$(CURDIR)/src
  7. MULTIPREC=100
  8. CXX_NMIE_HEADERS=$(SRCDIR)/nmie.hpp $(SRCDIR)/nmie-impl.hpp $(SRCDIR)/nmie-precision.hpp
  9. all:
  10. @echo "make src - Create source package for Python extension"
  11. @echo "make ext - Create Python extension in place"
  12. @echo "make install - Install Python extension on local system"
  13. @echo "make rpm - Generate a rpm package for Python extension"
  14. @echo "make deb - Generate a deb package for Python extension"
  15. @echo "make standalone - Create standalone programs (scattnlay and fieldnlay)"
  16. @echo "make clean - Delete temporal files"
  17. # make standalone
  18. src:
  19. $(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../
  20. ext: $(SRCDIR)/nmie.cc $(SRCDIR)/nmie-pybind11.cc $(SRCDIR)/pb11_wrapper.cc
  21. $(PYTHON) setup.py build_ext --inplace
  22. install:
  23. $(PYTHON) setup.py install --root $(DESTDIR) $(COMPILE)
  24. rpm:
  25. #$(PYTHON) setup.py bdist_rpm --post-install=rpm/postinstall --pre-uninstall=rpm/preuninstall
  26. $(PYTHON) setup.py bdist_rpm --dist-dir=../
  27. deb:
  28. # build the source package in the parent directory
  29. # then rename it to project_version.orig.tar.gz
  30. $(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../ --prune
  31. rename -f 's/$(PROJECT)-(.*)\.tar\.gz/$(PROJECT)_$$1\.orig\.tar\.gz/' ../*
  32. # build the package
  33. dpkg-buildpackage -i -I -rfakeroot
  34. standalone: scattnlay fieldnlay scattnlay-mp fieldnlay-mp
  35. # standalone programs with DP
  36. scattnlay: $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  37. $(CXX) -DNDEBUG -O2 -Wall -std=c++11 $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc -lm -o scattnlay-dp $(CXXFLAGS) $(LDFLAGS)
  38. fieldnlay: $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  39. $(CXX) -DNDEBUG -O2 -Wall -std=c++11 $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc -lm -o fieldnlay-dp $(CXXFLAGS) $(LDFLAGS)
  40. # standalone programs with MP
  41. scattnlay-mp: $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  42. $(CXX) -DNDEBUG -DMULTI_PRECISION=$(MULTIPREC) -O2 -Wall -std=c++11 $(SRCDIR)/farfield.cc $(SRCDIR)/nmie.cc -lm -o scattnlay-mp $(CXXFLAGS) $(LDFLAGS)
  43. fieldnlay-mp: $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
  44. $(CXX) -DNDEBUG -DMULTI_PRECISION=$(MULTIPREC) -O2 -Wall -std=c++11 $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc -lm -o fieldnlay-mp $(CXXFLAGS) $(LDFLAGS)
  45. wasm: $(SRCDIR)/nmie-js-wrapper.cc $(CXX_NMIE_HEADERS)
  46. emcc --bind -lm -Wall -O2 -std=c++11 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
  47. # @cp nmie.js web/
  48. # @cp nmie.wasm web/
  49. clean:
  50. $(PYTHON) setup.py clean
  51. $(MAKE) -f $(CURDIR)/debian/rules clean
  52. rm -rf build/ MANIFEST
  53. find . -name '*.pyc' -delete
  54. find . -name '*.o' -delete
  55. find . -name '*.so' -delete