diff options
| author | Mattias Andrée <maandree@kth.se> | 2021-02-19 20:30:41 +0100 | 
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2021-02-19 20:30:49 +0100 | 
| commit | c27fd70b5e4c3efe5ad034069108414d36f9bd9e (patch) | |
| tree | ec0befb659ebeca4a68c45b052e713fb2ad26f05 /Makefile | |
| parent | improve readme (diff) | |
| download | python-bus-bfa11a3fc99c8cec62ad2251b4c70c3be2f291cc.tar.gz python-bus-bfa11a3fc99c8cec62ad2251b4c70c3be2f291cc.tar.bz2 python-bus-bfa11a3fc99c8cec62ad2251b4c70c3be2f291cc.tar.xz | |
some improvments + license change3.1.2
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 159 | 
1 files changed, 21 insertions, 138 deletions
| @@ -1,152 +1,35 @@ -# The package path prefix, if you want to install to another root, set DESTDIR to that root -PREFIX = /usr -# The library path excluding prefix -LIB = /lib -# The resource path excluding prefix -DATA = /share -# The library path including prefix -LIBDIR = ${PREFIX}${LIB} -# The resource path including prefix -DATADIR = ${PREFIX}${DATA} -# The generic documentation path including prefix -DOCDIR = ${DATADIR}/doc -# The license base path including prefix -LICENSEDIR = ${DATADIR}/licenses +.POSIX: +CONFIGFILE = config.mk +include $(CONFIGFILE) -# The major version number of the current Python installation -PY_MAJOR = $(shell python -V | cut -d ' ' -f 2 | cut -d . -f 1) -# The minor version number of the current Python installation -PY_MINOR = $(shell python -V | cut -d ' ' -f 2 | cut -d . -f 2) -# The version number of the current Python installation without a dot -PY_VER = ${PY_MAJOR}${PY_MINOR} -# The version number of the current Python installation with a dot -PY_VERSION = ${PY_MAJOR}.${PY_MINOR} +PY_MAJOR   = $$(python --version 2>&1 | cut -d . -f 1 | cut -d ' ' -f 2) +PY_MINOR   = $$(python$(PYTHON_MAJOR) --version 2>&1 | cut -d . -f 2) -# The directory for python modules -PYTHONDIR = ${LIBDIR}/python${PY_VERSION} +all: native_bus.so +native_bus.so: native_bus.o +	$(CC) -o $@ native_bus.o -shared $(LDFLAGS) -# The name of the package as it should be installed -PKGNAME = python-bus - - -# The installed pkg-config command -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 = python${PY_MAJOR} - - -# The C standard for C code compilation -STD = c99 -# Optimisation settings for C code compilation -OPTIMISE = -O2 - - -# Flags to use when compiling -CC_FLAGS = $$(${PKGCONFIG} --cflags ${LIBS}) -std=${STD} ${OPTIMISE} -fPIC ${CFLAGS} ${CPPFLAGS} - -# Flags to use when linking -LD_FLAGS = $$(${PKGCONFIG} --libs ${LIBS}) -lbus -std=${STD} ${OPTIMISE} -shared ${LDFLAGS} - - -# The suffixless basename of the .py-files -PYTHON_SRC = bus - -# The suffixless basename of the .py-files -CYTHON_SRC = native_bus - - -# Filename extension for -OO optimised python files -ifeq ($(shell test $(PY_VER) -ge 35 ; echo $$?),0) -PY_OPT2_EXT = opt-2.pyc -else -PY_OPT2_EXT = pyo -endif - - - -all: pyc-files pyo-files so-files - -pyc-files: $(foreach M,${PYTHON_SRC},src/__pycache__/${M}.cpython-${PY_VER}.pyc) -pyo-files: $(foreach M,${PYTHON_SRC},src/__pycache__/${M}.cpython-${PY_VER}.$(PY_OPT2_EXT)) -so-files: $(foreach M,${CYTHON_SRC},bin/${M}.so) - -bin/%.so: obj/%.o -	@mkdir -p bin -	${CC} ${LD_FLAGS} -o $@ $^ - -obj/%.o: obj/%.c -	${CC} ${CC_FLAGS} -iquote"src" -c -o $@ $< - -obj/%.c: obj/%.pyx -	if ! ${CYTHON} -3 -v $< ; then rm $@ ; false ; fi - -obj/%.pyx: src/%.pyx -	@mkdir -p obj -	cp $< $@ - -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 $< - - - -install: install-base - -install-all: install-base -install-base: install-lib install-copyright -install-lib: install-source install-compiled install-optimised install-native - -install-source: $(foreach M,$(PYTHON_SRC),src/$(M).py) -	install -dm755 -- "$(DESTDIR)$(PYTHONDIR)" -	install -m644 $^ -- "$(DESTDIR)$(PYTHONDIR)" - -install-compiled: $(foreach M,$(PYTHON_SRC),src/__pycache__/$(M).cpython-$(PY_VER).pyc) -	install -dm755 -- "$(DESTDIR)$(PYTHONDIR)/__pycache__" -	install -m644 $^ -- "$(DESTDIR)$(PYTHONDIR)/__pycache__" - -install-optimised: $(foreach M,$(PYTHON_SRC),src/__pycache__/$(M).cpython-$(PY_VER).$(PY_OPT2_EXT)) -	install -dm755 -- "$(DESTDIR)$(PYTHONDIR)/__pycache__" -	install -m644 $^ -- "$(DESTDIR)$(PYTHONDIR)/__pycache__" - -install-native: $(foreach M,$(CYTHON_SRC),bin/$(M).so) -	install -dm755 -- "$(DESTDIR)$(PYTHONDIR)" -	install -m755 $^ -- "$(DESTDIR)$(PYTHONDIR)" - -install-copyright: install-license - -install-license: LICENSE -	install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" -	install -m644 $^ -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" +.c.o: +	$(CC) -fPIC -c -o $@ $< $$(pkg-config --cflags python$(PY_MAJOR)) $(CFLAGS) $(CPPFLAGS) +.pyx.c: +	if ! $(CYTHON) -$(PY_MAJOR) -v $< -o $@ ; then rm $@; false; fi +install: native_bus.so +	mkdir -p -- "$(DESTDIR)$(PYTHONDIR)/site-packages" +	cp -- bus.py native_bus.so "$(DESTDIR)$(PYTHONDIR)/site-packages"  uninstall: -	-rm -- "${DESTDIR}${LICENSEDIR}/${PKGNAME}/LICENSE" -	-rmdir -- "${DESTDIR}${LICENSEDIR}/${PKGNAME}" -	-rm -- $(foreach M,${PYTHON_SRC},"${DESTDIR}${PYTHONDIR}/__pycache__/${M}.cpython-${PY_VER}.$(PY_OPT2_EXT)") -	-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") - - +	-rm -f -- "$(DESTDIR)$(PYTHONDIR)/site-packages/native_bus.so" +	-rm -f -- "$(DESTDIR)$(PYTHONDIR)/site-packages/bus"  clean: -	-rm -r obj bin src/__pycache__ - - +	-rm -rf -- __pycache__ *.pyc *.pyo *.o *.so -.PHONY: all pyc-files pyo-files so-files install install-all install-base \ -        install-lib install-source install-compiled install-optimised \ -        install-native install-copyright install-license uninstall clean +.SUFFIXES: +.SUFFIXES: .o .c .pyx +.PHONY: all install uninstall clean | 
