1# Values: debian:<version>, ubuntu:<version> 2BASE_IMAGE ?= debian:buster 3# Values: python, python3 4PYTHON ?= python3 5# Values: rpi, aarch64, native 6TENSORFLOW_TARGET ?= native 7# Values: n, y 8BUILD_DEB ?= n 9# Values: according to https://www.python.org/dev/peps/pep-0440/ 10VERSION_SUFFIX ?= 11 12MAKEFILE_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) 13TENSORFLOW_DIR := $(MAKEFILE_DIR)/../../../.. 14OUT_DIR := $(CURDIR)/out/$(PYTHON)/$(subst :,-,$(BASE_IMAGE)) 15TAG_IMAGE := "tflite-runtime-builder-$(subst :,-,$(BASE_IMAGE))" 16 17.PHONY: help \ 18 docker-image \ 19 docker-shell \ 20 docker-build \ 21 clean 22 23help: 24 @echo "make docker-image -- build docker image" 25 @echo "make docker-shell -- run shell inside the docker image" 26 @echo "make docker-build -- build wheel and deb inside the docker image" 27 @echo "make clean -- remove wheel and deb files" 28 29docker-image: 30ifeq ($(BASE_IMAGE),ubuntu:16.04) 31 docker build -t $(TAG_IMAGE) --build-arg IMAGE=$(BASE_IMAGE) --build-arg PYTHON_VERSION=3.8 -f Dockerfile.py3 . 32else 33 docker build -t $(TAG_IMAGE) --build-arg IMAGE=$(BASE_IMAGE) . 34endif 35 36docker-shell: docker-image 37 docker run --rm --interactive --tty \ 38 --volume $(TENSORFLOW_DIR):/tensorflow \ 39 --workdir /tensorflow \ 40 $(TAG_IMAGE) 41 42docker-build: docker-image 43 mkdir -p $(OUT_DIR) 44 docker run --user $(shell id -u):$(shell id -g) \ 45 --rm --interactive $(shell tty -s && echo --tty) \ 46 --env "PYTHON=$(PYTHON)" \ 47 --env "TENSORFLOW_TARGET=$(TENSORFLOW_TARGET)" \ 48 --env "BUILD_DEB=$(BUILD_DEB)" \ 49 --env "VERSION_SUFFIX=$(VERSION_SUFFIX)" \ 50 --volume $(TENSORFLOW_DIR):/tensorflow \ 51 --volume $(OUT_DIR):/out \ 52 $(TAG_IMAGE) \ 53 /bin/bash -c "/tensorflow/tensorflow/lite/tools/pip_package/build_pip_package_with_cmake.sh && \ 54 (cp /tensorflow/tensorflow/lite/tools/pip_package/gen/tflite_pip/*.deb \ 55 /tensorflow/tensorflow/lite/tools/pip_package/gen/tflite_pip/${PYTHON}/dist/{*.whl,*.tar.gz} \ 56 /out 2>/dev/null || true)" 57 58clean: 59 rm -rf $(CURDIR)/out