|
| 1 | +PYTHON ?= python3 |
| 2 | +VIRTUAL_ENV ?= |
| 3 | +ifeq ($(VIRTUAL_ENV),) |
| 4 | + FLAGS ?= --no-use-pep517 -e |
| 5 | + PIP_FLAGS ?= --user |
| 6 | +else |
| 7 | + PYTHON = python |
| 8 | + FLAGS ?= -e |
| 9 | + PIP_FLAGS ?= |
| 10 | +endif |
| 11 | +TEST_RESULTS ?= index.html |
| 12 | + |
| 13 | + |
| 14 | +install : |
| 15 | + $(PYTHON) -m pip install packageTools/. && \ |
| 16 | + $(PYTHON) -m pip install base/. && \ |
| 17 | + $(PYTHON) -m pip install metisCy/. && \ |
| 18 | + $(PYTHON) -m pip install fem/. && \ |
| 19 | + $(PYTHON) -m pip install multilevelSolver/. && \ |
| 20 | + $(PYTHON) -m pip install nl/. && \ |
| 21 | + $(PYTHON) -m pip install . |
| 22 | + |
| 23 | + |
| 24 | +clean : |
| 25 | + $(PYTHON) -m pip uninstall PyNucleus_packageTools PyNucleus_base PyNucleus_metisCy PyNucleus_fem PyNucleus_multilevelSolver PyNucleus_nl |
| 26 | + |
| 27 | +dev : dev_packageTools dev_base dev_metisCy dev_fem dev_multilevelSolver dev_nl dev_package |
| 28 | + |
| 29 | +dev_packageTools : |
| 30 | + @ echo "Entering directory \`packageTools/'" |
| 31 | + cd packageTools; $(PYTHON) -m pip install $(FLAGS) . |
| 32 | +dev_base_build : |
| 33 | + @ echo "Entering directory \`base'" |
| 34 | + cd base; $(PYTHON) -m pip install $(FLAGS) . |
| 35 | +dev_base : |
| 36 | + make dev_base_build |
| 37 | + $(PYTHON) -c "import PyNucleus_base" || (make clean_base && make dev_base_build) |
| 38 | +dev_metisCy_build : |
| 39 | + @ echo "Entering directory \`metisCy'" |
| 40 | + cd metisCy; $(PYTHON) -m pip install $(FLAGS) . |
| 41 | +dev_metisCy : |
| 42 | + make dev_metisCy_build |
| 43 | + $(PYTHON) -c "import PyNucleus_metisCy" || (make clean_metisCy && make dev_metisCy_build) |
| 44 | +dev_fem_build : |
| 45 | + @ echo "Entering directory \`fem'" |
| 46 | + cd fem; $(PYTHON) -m pip install $(FLAGS) . |
| 47 | +dev_fem : |
| 48 | + make dev_fem_build |
| 49 | + $(PYTHON) -c "import PyNucleus_fem" || (make clean_fem && make dev_fem_build) |
| 50 | +dev_multilevelSolver_build : |
| 51 | + @ echo "Entering directory \`multilevelSolver'" |
| 52 | + cd multilevelSolver; $(PYTHON) -m pip install $(FLAGS) . |
| 53 | +dev_multilevelSolver : |
| 54 | + make dev_multilevelSolver_build |
| 55 | + $(PYTHON) -c "import PyNucleus_multilevelSolver" || (make clean_multilevelSolver && make dev_multilevelSolver_build) |
| 56 | +dev_nl_build : |
| 57 | + @ echo "Entering directory \`nl'" |
| 58 | + cd nl; $(PYTHON) -m pip install $(FLAGS) . |
| 59 | +dev_nl : |
| 60 | + make dev_nl_build |
| 61 | + $(PYTHON) -c "import PyNucleus_nl" || (make clean_nl && make dev_nl_build) |
| 62 | +dev_package : |
| 63 | + $(PYTHON) -m pip install $(FLAGS) . |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +clean_dev: clean_package clean_packageTools clean_base clean_metisCy clean_fem clean_multilevelSolver clean_nl |
| 68 | +clean_packageTools : |
| 69 | + $(PYTHON) -m pip uninstall PyNucleus_packageTools -y |
| 70 | +clean_base : |
| 71 | + $(PYTHON) -m pip uninstall PyNucleus_base -y |
| 72 | + cd base/PyNucleus_base && \ |
| 73 | + rm -f *.so *.c *.pyc && \ |
| 74 | + rm -rf __pycache__ |
| 75 | + cd base && rm -rf build __pycache__ *.egg-info |
| 76 | +clean_metisCy : |
| 77 | + $(PYTHON) -m pip uninstall PyNucleus_metisCy -y |
| 78 | + cd metisCy/PyNucleus_metisCy && \ |
| 79 | + rm -f *.so *.c *.pyc && \ |
| 80 | + rm -rf __pycache__ |
| 81 | + cd metisCy && rm -rf build __pycache__ *.egg-info |
| 82 | +clean_fem : |
| 83 | + $(PYTHON) -m pip uninstall PyNucleus_fem -y |
| 84 | + cd fem/PyNucleus_fem && \ |
| 85 | + rm -f *.so *.c *.pyc && \ |
| 86 | + rm -rf __pycache__ |
| 87 | + cd fem && rm -rf build __pycache__ *.egg-info |
| 88 | +clean_multilevelSolver : |
| 89 | + $(PYTHON) -m pip uninstall PyNucleus_multilevelSolver -y |
| 90 | + cd multilevelSolver/PyNucleus_multilevelSolver && \ |
| 91 | + rm -f *.so *.c *.pyc && \ |
| 92 | + rm -rf __pycache__ |
| 93 | + cd multilevelSolver && rm -rf build __pycache__ *.egg-info |
| 94 | +clean_nl : |
| 95 | + $(PYTHON) -m pip uninstall PyNucleus_nl -y |
| 96 | + cd nl/PyNucleus_nl && \ |
| 97 | + rm -rf *.so *.c *.pyc *.html __pycache__ kernelsCy.cpp adaptiveQuad.cpp |
| 98 | + cd nl && rm -rf build __pycache__ *.egg-info |
| 99 | +clean_package : |
| 100 | + $(PYTHON) -m pip uninstall PyNucleus -y |
| 101 | + |
| 102 | +.PHONY: docs |
| 103 | +docs : |
| 104 | + cd docs && make |
| 105 | + sphinx-build -b html docs docs/build |
| 106 | + |
| 107 | +clean_docs : |
| 108 | + cd docs; rm -rf build |
| 109 | + |
| 110 | +createVirtualEnv: |
| 111 | + $(PYTHON) -m virtualenv --python=$(PYTHON) venv --system-site-packages |
| 112 | + |
| 113 | + |
| 114 | +list-tests: |
| 115 | + $(PYTHON) -m pytest --collect-only tests/ tests/test.py |
| 116 | + |
| 117 | +.PHONY: tests |
| 118 | +tests: |
| 119 | + $(PYTHON) -m pytest -rA --html=$(TEST_RESULTS) --self-contained-html tests/ tests/test.py |
| 120 | + |
| 121 | +docker: |
| 122 | + ./build-docker.sh |
| 123 | + |
| 124 | +docker-linux: |
| 125 | + ./run-docker-linux.sh |
| 126 | + |
| 127 | +docker-mac: |
| 128 | + ./run-docker-mac.sh |
| 129 | + |
| 130 | + |
| 131 | +prereq: |
| 132 | + $(PYTHON) -m pip install $(PIP_FLAGS) Cython cython numpy scipy matplotlib pyyaml h5py pybind11 MeshPy tabulate modepy mpi4py scikit-sparse pyamg |
| 133 | + |
| 134 | +prereq-extra: |
| 135 | + $(PYTHON) -m pip install $(PIP_FLAGS) pytest pytest-html pytest-xdist Sphinx sphinxcontrib-programoutput |
0 commit comments