aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile111
1 files changed, 109 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index e3dd8b8..b398874 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,21 @@
+PREFIX = /usr
+LIBDIR = $(PREFIX)$(LIB)
+DATADIR = $(PREFIX)$(DATA)
+LICENSEDIR = $(DATADIR)/licenses
+
+PKGNAME = pylibcoopgamma
+
GPP = gpp
CYTHON = cython
PKGCONFIG = pkg-config
+PYTHON = python3
-PY_MAJOR = 3
+PY_MAJOR = $(shell $(PYTHON) --version | cut -d ' ' -f 2 | cut -d . -f 1)
+PY_MINOR = $(shell $(PYTHON) --version | cut -d ' ' -f 2 | cut -d . -f 2)
+PY_VER = $(PY_MAJOR)$(PY_MINOR)
+PY_VERSION = $(PY_MAJOR).$(PY_MINOR)
+
+PYTHONDIR = $(LIBDIR)/python$(PY_VERSION)
OPTIMISE = -O2
LIBS = python$(PY_MAJOR)
@@ -10,8 +23,31 @@ LIBS = python$(PY_MAJOR)
CC_FLAGS = $$($(PKGCONFIG) --cflags $(LIBS)) -std=c99 $(OPTIMISE) -fPIC $(CFLAGS) $(CPPFLAGS)
LD_FLAGS = $$($(PKGCONFIG) --libs $(LIBS)) -lcoopgamma -std=c99 $(OPTIMISE) -shared $(LDFLAGS)
+ifeq ($(shell test $(PY_VER) -ge 35 ; echo $$?),0)
+PY_OPT2_EXT = opt-2.pyc
+else
+PY_OPT2_EXT = pyo
+endif
+
+
+
+.PHONY: all
+all: base
+
+.PHONY: base
+base: lib
+
+.PHONY: lib
+lib: compiled optimised native
-all: bin/libcoopgamma_native.so
+.PHONY: compiled
+compiled: src/__pycache__/libcoopgamma.cpython-$(PY_VER).pyc
+
+.PHONY: optimised
+optimised: src/__pycache__/libcoopgamma.cpython-$(PY_VER).$(PY_OPT2_EXT)
+
+.PHONY: so-files
+native: bin/libcoopgamma_native.so
obj/libcoopgamma_native.pyx: src/libcoopgamma_native.pyx.gpp
@mkdir -p obj
@@ -27,3 +63,74 @@ bin/%.so: obj/%.o
@mkdir -p bin
$(CC) $(LD_FLAGS) -o $@ $^
+src/__pycache__/%.cpython-$(PY_VER).pyc: src/%.py
+ $(PYTHON) -m compileall $<
+
+src/__pycache__/%.cpython-$(PY_VER).$(PY_OPT2_EXT): src/%.py
+ $(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: src/libcoopgamma.py
+ mkdir -p -- "$(DESTDIR)$(PYTHONDIR)"
+ cp $^ -- "$(DESTDIR)$(PYTHONDIR)"
+
+.PHONY: install-compiled
+install-compiled: src/__pycache__/libcoopgamma.cpython-$(PY_VER).pyc
+ mkdir -p -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+ cp $^ -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+
+.PHONY: install-optimised
+install-optimised: src/__pycache__/libcoopgamma.cpython-$(PY_VER).$(PY_OPT2_EXT)
+ mkdir -p -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+ cp $^ -- "$(DESTDIR)$(PYTHONDIR)/__pycache__"
+
+.PHONY: install-native
+install-native: bin/libcoopgamma_native.so
+ mkdir -p -- "$(DESTDIR)$(PYTHONDIR)"
+ cp $^ -- "$(DESTDIR)$(PYTHONDIR)"
+
+.PHONY: install-copyright
+install-copyright: install-copying install-license
+
+.PHONY: install-copying
+install-copying: COPYING
+ mkdir -p -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ cp $^ -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+
+.PHONY: install-license
+install-license: LICENSE
+ mkdir -p -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ cp $^ -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+
+
+
+.PHONY: uninstall
+uninstall:
+ -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
+ -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
+ -rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ -rm -- "$(DESTDIR)$(PYTHONDIR)/__pycache__/libcoopgamma.cpython-$(PY_VER).$(PY_OPT2_EXT)"
+ -rm -- "$(DESTDIR)$(PYTHONDIR)/__pycache__/libcoopgamma.cpython-$(PY_VER).pyc"
+ -rm -- "$(DESTDIR)$(PYTHONDIR)/libcoopgamma.py"
+ -rm -- "$(DESTDIR)$(PYTHONDIR)/libcoopgamma_native.so"
+
+
+
+.PHONY: clean
+clean:
+ -rm -r obj bin src/__pycache__
+