blob: b3988747980a3887978348caa7eb8e2d463bb36d (
plain) (
tree)
|
|
PREFIX = /usr
LIBDIR = $(PREFIX)$(LIB)
DATADIR = $(PREFIX)$(DATA)
LICENSEDIR = $(DATADIR)/licenses
PKGNAME = pylibcoopgamma
GPP = gpp
CYTHON = cython
PKGCONFIG = pkg-config
PYTHON = python3
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)
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
.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
$(GPP) -s '$$$$' -i src/libcoopgamma_native.pyx.gpp -o $@
obj/%.c: obj/%.pyx
if ! $(CYTHON) -3 -v $< ; then rm $@ ; false ; fi
obj/%.o: obj/%.c src/*.h
$(CC) $(CC_FLAGS) -iquote"src" -c -o $@ $<
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__
|