@@ -3,49 +3,98 @@ PIP=$(VENV_NAME)/bin/pip
33TOX =` which tox `
44GARDEN =$(VENV_NAME ) /bin/garden
55PYTHON =$(VENV_NAME ) /bin/python
6- SYSTEM_DEPENDENCIES =virtualenv build-essential libpython2.7-dev libsdl2-dev libzbar-dev \
7- cmake python-numpy tox wget curl
6+ SYSTEM_DEPENDENCIES = \
7+ build-essential \
8+ cmake \
9+ curl \
10+ libpython$(PYTHON_VERSION ) -dev \
11+ libsdl2-dev \
12+ libzbar-dev \
13+ tox \
14+ virtualenv \
15+ wget
816OS =$(shell lsb_release -si)
9- OPENCV_VERSION =2.4.13.6
17+ PYTHON_MAJOR_VERSION =3
18+ PYTHON_MINOR_VERSION =6
19+ PYTHON_VERSION =$(PYTHON_MAJOR_VERSION ) .$(PYTHON_MINOR_VERSION )
20+ PYTHON_WITH_VERSION =python$(PYTHON_VERSION )
21+ # python3 has a "m" suffix for both include path and library
22+ PYTHON_M =$(PYTHON_WITH_VERSION )
23+ SITE_PACKAGES_DIR =$(VENV_NAME ) /lib/$(PYTHON_WITH_VERSION ) /site-packages
24+ OPENCV_VERSION =4.0.1
25+ OPENCV_ARCHIVE =$(OPENCV_BASENAME ) .tar.gz
1026OPENCV_BASENAME =opencv-$(OPENCV_VERSION )
11- OPENCV_BUILD =$(OPENCV_BASENAME ) /build/lib/cv2.so
12- OPENCV_DEPLOY =$(VENV_NAME ) /lib/python2.7/site-packages/cv2.so
27+ OPENCV_BUILD_LIB_DIR =$(OPENCV_BASENAME ) /build/lib
28+ OPENCV_BUILD =$(OPENCV_BUILD_LIB_DIR ) /python$(PYTHON_MAJOR_VERSION ) /cv2*.so
29+ OPENCV_DEPLOY =$(SITE_PACKAGES_DIR ) /cv2*.so
1330NPROC =` grep -c ' ^processor' /proc/cpuinfo `
31+ ifeq ($(PYTHON_MAJOR_VERSION ) , 3)
32+ PYTHON_M := $(PYTHON_M)m
33+ endif
1434
1535
16- all : system_dependencies opencv virtualenv
36+ all : system_dependencies virtualenv opencv
1737
18- virtualenv :
19- test -d venv || virtualenv -p python2 venv
38+ venv :
39+ test -d venv || virtualenv -p python $( PYTHON_MAJOR_VERSION ) venv
2040 . venv/bin/activate
2141 $(PIP ) install Cython==0.26.1
2242 $(PIP ) install -r requirements/requirements.txt
2343 $(GARDEN ) install xcamera
2444
45+ virtualenv : venv
46+
2547system_dependencies :
2648ifeq ($(OS ) , Ubuntu)
2749 sudo apt install --yes --no-install-recommends $(SYSTEM_DEPENDENCIES)
2850endif
2951
30- $(OPENCV_BUILD ) :
52+ $(OPENCV_ARCHIVE ) :
3153 curl --location https://github.com/opencv/opencv/archive/$(OPENCV_VERSION ) .tar.gz \
32- --progress-bar --output $(OPENCV_BASENAME ) .tar.gz
54+ --progress-bar --output $(OPENCV_ARCHIVE )
55+
56+ # The build also relies on virtualenv, because we make references to it.
57+ # Plus numpy is required to build OpenCV Python module.
58+ $(OPENCV_BUILD ) : $(OPENCV_ARCHIVE ) virtualenv
3359 tar -xf $(OPENCV_BASENAME ) .tar.gz
3460 cmake \
35- -D BUILD_DOCS=OFF -D BUILD_PACKAGE=OFF -D BUILD_PERF_TESTS=OFF \
36- -D BUILD_TESTS=OFF -D BUILD_opencv_apps=OFF \
37- -D BUILD_opencv_nonfree=OFF -D BUILD_opencv_stitching=OFF \
38- -D BUILD_opencv_superres=OFF -D BUILD_opencv_ts=OFF \
39- -D BUILD_WITH_DEBUG_INFO=OFF -D WITH_1394=OFF -D WITH_CUDA=OFF \
40- -D WITH_CUFFT=OFF -D WITH_GIGEAPI=OFF -D WITH_JASPER=OFF \
41- -D WITH_OPENEXR=OFF -D WITH_PVAPI=OFF -D WITH_GTK=OFF \
42- -D BUILD_opencv_python=ON -B$(OPENCV_BASENAME ) /build -H$(OPENCV_BASENAME )
61+ -D CMAKE_SHARED_LINKER_FLAGS=-l$(PYTHON_M ) \
62+ -D BUILD_SHARED_LIBS=ON \
63+ -D BUILD_STATIC_LIBS=OFF \
64+ -D BUILD_DOCS=OFF \
65+ -D BUILD_OPENCV_APPS=OFF \
66+ -D BUILD_OPENCV_JAVA=OFF \
67+ -D BUILD_OPENCV_JAVA_BINDINGS_GENERATOR=OFF \
68+ -D BUILD_OPENCV_NONFREE=OFF \
69+ -D BUILD_OPENCV_PYTHON2=OFF \
70+ -D BUILD_OPENCV_PYTHON3=ON \
71+ -D BUILD_OPENCV_STITCHING=OFF \
72+ -D BUILD_OPENCV_SUPERRES=OFF \
73+ -D BUILD_OPENCV_TS=OFF \
74+ -D BUILD_PACKAGE=OFF \
75+ -D BUILD_PERF_TESTS=OFF \
76+ -D BUILD_TESTS=OFF \
77+ -D BUILD_WITH_DEBUG_INFO=OFF \
78+ -D OPENCV_SKIP_PYTHON_LOADER=ON \
79+ -D OPENCV_PYTHON$(PYTHON_MAJOR_VERSION ) _INSTALL_PATH=$(SITE_PACKAGES_DIR ) \
80+ -D PYTHON$(PYTHON_MAJOR_VERSION ) _PACKAGES_PATH=$(SITE_PACKAGES_DIR ) \
81+ -D PYTHON$(PYTHON_MAJOR_VERSION ) _EXECUTABLE=$(PYTHON ) \
82+ -D PYTHON$(PYTHON_MAJOR_VERSION ) _INCLUDE_PATH=/usr/include/$(PYTHON_M ) / \
83+ -D PYTHON$(PYTHON_MAJOR_VERSION ) _LIBRARIES=/usr/lib/x86_64-linux-gnu/lib$(PYTHON_M ) .so \
84+ -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python$(PYTHON_MAJOR_VERSION ) \
85+ -D WITH_1394=OFF \
86+ -D WITH_CUDA=OFF \
87+ -D WITH_CUFFT=OFF \
88+ -D WITH_GIGEAPI=OFF \
89+ -D WITH_GTK=OFF \
90+ -D WITH_JASPER=OFF \
91+ -D WITH_OPENEXR=OFF \
92+ -D WITH_PVAPI=OFF \
93+ -B$(OPENCV_BASENAME ) /build -H$(OPENCV_BASENAME )
4394 cmake --build $(OPENCV_BASENAME ) /build -- -j$(NPROC )
4495
45- opencv_build : $(OPENCV_BUILD )
46-
47- $(OPENCV_DEPLOY ) : opencv_build virtualenv
48- cp $(OPENCV_BUILD ) $(OPENCV_DEPLOY )
96+ $(OPENCV_DEPLOY ) : $(OPENCV_BUILD ) virtualenv
97+ cp $(OPENCV_BUILD ) $(SITE_PACKAGES_DIR )
4998
5099opencv : $(OPENCV_DEPLOY )
51100
0 commit comments