aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile80
1 files changed, 73 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 15c2b98..48c4ea0 100644
--- a/Makefile
+++ b/Makefile
@@ -6,12 +6,12 @@
# The package path prefix, if you want to install to another root, set DESTDIR to that root
PREFIX ?= /usr
-# The command path excluding prefix
-BIN ?= /bin
+# The library path excluding prefix
+LIB ?= /lib
# The resource path excluding prefix
DATA ?= /share
-# The command path including prefix
-BINDIR ?= $(PREFIX)$(BIN)
+# The library path including prefix
+LIBDIR ?= $(PREFIX)$(LIB)
# The resource path including prefix
DATADIR ?= $(PREFIX)$(DATA)
# The generic documentation path including prefix
@@ -33,6 +33,9 @@ PY_VER = $(PY_MAJOR)$(PY_MINOR)
# The version number of the current Python installation with a dot
PY_VERSION = $(PY_MAJOR).$(PY_MINOR)
+# The directory for python modules
+PYTHONDIR = $(LIBDIR)/python$(PY_VERSION)
+
# The name of the package as it should be installed
PKGNAME = pylibgamma
@@ -41,10 +44,12 @@ PKGNAME = pylibgamma
PKGCONFIG ?= pkg-config
# The installed cython command
CYTHON ?= cython
+# The installed python command
+PYTHON = python$(PY_MAJOR)
# Libraries to link with using pkg-config
-LIBS = python3
+LIBS = python$(PY_MAJOR)
# The C standard for C code compilation
STD = c99
@@ -69,6 +74,7 @@ PYTHON_SRC = libgamma_error libgamma_facade libgamma_method libgamma
CYTHON_SRC = libgamma_native_error libgamma_native_facade libgamma_native_method
+
.PHONY: all pyx-files py-files
all: pyc-files pyo-files so-files
pyc-files: $(foreach M,$(PYTHON_SRC),src/__pycache__/$(M).cpython-$(PY_VER).pyc)
@@ -104,10 +110,70 @@ obj/libgamma_native_error.pyx: src/libgamma_native_error.pyx
endif
src/__pycache__/%.cpython-$(PY_VER).pyc: src/%.py
- python -m compileall $<
+ $(PYTHON) -m compileall $<
src/__pycache__/%.cpython-$(PY_VER).pyo: src/%.py
- python -OO -m compileall $<
+ $(PYTHON) -OO -m compileall $<
+
+
+.PHONY: install
+install: install-base
+
+.PHONY: install-all
+install-all: install-base
+
+.PHONY: install-base
+install-base: install-lib install-copyright
+
+
+.PHONY: install-lib
+install-lib: install-source install-compiled install-optimised install-native
+
+.PHONY: install-source
+install-source: $(foreach M,$(PYTHON_SRC),src/$(M).py)
+ install -dm755 -- "$(DESTDIR)$(PYTHONDIR)"
+ install -m644 $^ -- "$(DESTDIR)$(PYTHONDIR)"
+
+.PHONY: install-compiled
+install-compiled: $(foreach M,$(PYTHON_SRC),src/__pycache__/$(M).cpython-$(PY_VER).pyc)
+ install -dm755 -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+ install -m644 $^ -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+
+.PHONY: install-optimised
+install-optimised: $(foreach M,$(PYTHON_SRC),src/__pycache__/$(M).cpython-$(PY_VER).pyo)
+ install -dm755 -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+ install -m644 $^ -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+
+.PHONY: install-native
+install-native: $(foreach M,$(CYTHON_SRC),bin/$(M).so)
+ install -dm755 -- "$(DESTDIR)$(PYTHONDIR)"
+ install -m755 $^ -- "$(DESTDIR)$(PYTHONDIR)"
+
+
+.PHONY: install-copyright
+install-copyright: install-copying install-license
+
+.PHONY: install-copying
+install-copying: COPYING
+ install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ install -m644 $^ -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+
+.PHONY: install-license
+install-license: LICENSE
+ install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ install -m644 $^ -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+
+
+
+.PHONY: uninstall
+uninstall:
+ -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
+ -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
+ -rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ -rm -- $(foreach M,$(PYTHON_SRC),"$(DESTDIR)$(PYTHONDIR)/__pycache__/$(M).cpython-$(PY_VER).pyo")
+ -rm -- $(foreach M,$(PYTHON_SRC),"$(DESTDIR)$(PYTHONDIR)/__pycache__/$(M).cpython-$(PY_VER).pyc")
+ -rm -- $(foreach M,$(PYTHON_SRC),"$(DESTDIR)$(PYTHONDIR)/$(M).py")
+ -rm -- $(foreach M,$(CYTHON_SRC),"$(DESTDIR)$(PYTHONDIR)/$(M).so")
.PHONY: clean