@@ -3,6 +3,9 @@ PIP=$(VENV_NAME)/bin/pip
33TOX =` which tox `
44GARDEN =$(VENV_NAME ) /bin/garden
55PYTHON =$(VENV_NAME ) /bin/python
6+ # using full path so it can be used outside the root dir
7+ SPHINXBUILD =$(shell realpath venv/bin/sphinx-build)
8+ DOCS_DIR =doc
69SYSTEM_DEPENDENCIES = \
710 build-essential \
811 cmake \
@@ -21,13 +24,19 @@ PYTHON_WITH_VERSION=python$(PYTHON_VERSION)
2124# python3 has a "m" suffix for both include path and library
2225PYTHON_M =$(PYTHON_WITH_VERSION )
2326SITE_PACKAGES_DIR =$(VENV_NAME ) /lib/$(PYTHON_WITH_VERSION ) /site-packages
27+ TMPDIR ?= /tmp
28+ DOWNLOAD_DIR = $(TMPDIR ) /downloads
2429OPENCV_VERSION =4.0.1
25- OPENCV_ARCHIVE =$(OPENCV_BASENAME ) .tar.gz
2630OPENCV_BASENAME =opencv-$(OPENCV_VERSION )
27- OPENCV_BUILD_LIB_DIR =$(OPENCV_BASENAME ) /build/lib
31+ OPENCV_ARCHIVE =$(OPENCV_BASENAME ) .tar.gz
32+ OPENCV_ARCHIVE_PATH =$(DOWNLOAD_DIR ) /$(OPENCV_ARCHIVE )
33+ OPENCV_EXTRACT_PATH =$(DOWNLOAD_DIR ) /$(OPENCV_BASENAME )
34+ OPENCV_BUILD_LIB_DIR =$(OPENCV_EXTRACT_PATH ) /build/lib
2835OPENCV_BUILD =$(OPENCV_BUILD_LIB_DIR ) /python$(PYTHON_MAJOR_VERSION ) /cv2*.so
2936OPENCV_DEPLOY =$(SITE_PACKAGES_DIR ) /cv2*.so
3037NPROC =` grep -c ' ^processor' /proc/cpuinfo `
38+
39+
3140ifeq ($(PYTHON_MAJOR_VERSION ) , 3)
3241 PYTHON_M := $(PYTHON_M)m
3342endif
@@ -38,7 +47,7 @@ all: system_dependencies virtualenv opencv
3847venv :
3948 test -d venv || virtualenv -p python$(PYTHON_MAJOR_VERSION ) venv
4049 . venv/bin/activate
41- $(PIP ) install Cython==0.26.1
50+ $(PIP ) install Cython==0.28.6
4251 $(PIP ) install -r requirements/requirements.txt
4352 $(GARDEN ) install xcamera
4453
@@ -49,14 +58,15 @@ ifeq ($(OS), Ubuntu)
4958 sudo apt install --yes --no-install-recommends $(SYSTEM_DEPENDENCIES)
5059endif
5160
52- $(OPENCV_ARCHIVE ) :
61+ $(OPENCV_ARCHIVE_PATH ) :
62+ mkdir -p $(DOWNLOAD_DIR )
5363 curl --location https://github.com/opencv/opencv/archive/$(OPENCV_VERSION ) .tar.gz \
54- --progress-bar --output $(OPENCV_ARCHIVE )
64+ --progress-bar --output $(OPENCV_ARCHIVE_PATH )
5565
5666# The build also relies on virtualenv, because we make references to it.
5767# Plus numpy is required to build OpenCV Python module.
58- $(OPENCV_BUILD ) : $(OPENCV_ARCHIVE ) virtualenv
59- tar -xf $(OPENCV_BASENAME ) .tar.gz
68+ $(OPENCV_BUILD ) : $(OPENCV_ARCHIVE_PATH ) virtualenv
69+ tar -xf $(OPENCV_ARCHIVE_PATH ) --directory $( DOWNLOAD_DIR )
6070 cmake \
6171 -D CMAKE_SHARED_LINKER_FLAGS=-l$(PYTHON_M ) \
6272 -D BUILD_SHARED_LIBS=ON \
@@ -90,20 +100,23 @@ $(OPENCV_BUILD): $(OPENCV_ARCHIVE) virtualenv
90100 -D WITH_JASPER=OFF \
91101 -D WITH_OPENEXR=OFF \
92102 -D WITH_PVAPI=OFF \
93- -B$(OPENCV_BASENAME ) /build -H$(OPENCV_BASENAME )
94- cmake --build $(OPENCV_BASENAME ) /build -- -j$(NPROC )
103+ -B$(OPENCV_EXTRACT_PATH ) /build -H$(OPENCV_EXTRACT_PATH )
104+ cmake --build $(OPENCV_EXTRACT_PATH ) /build -- -j$(NPROC )
95105
96106$(OPENCV_DEPLOY ) : $(OPENCV_BUILD ) virtualenv
97107 cp $(OPENCV_BUILD ) $(SITE_PACKAGES_DIR )
98108
99109opencv : $(OPENCV_DEPLOY )
100110
101111clean :
102- rm -rf $(VENV_NAME ) .tox/ $(OPENCV_BASENAME )
112+ rm -rf $(VENV_NAME ) .tox/ $(DOWNLOAD_DIR ) $( DOCS_DIR ) /build/ dist/ build/
103113
104114test :
105115 $(TOX )
106116
107117uitest : virtualenv
108118 $(PIP ) install -r requirements/test_requirements.txt
109119 $(PYTHON ) -m unittest discover --top-level-directory=. --start-directory=tests/ui/
120+
121+ docs :
122+ cd $(DOCS_DIR ) && SPHINXBUILD=$(SPHINXBUILD ) make html
0 commit comments