-
Notifications
You must be signed in to change notification settings - Fork 75
/
build_opencv_for_esp32.sh
executable file
·99 lines (74 loc) · 4.31 KB
/
build_opencv_for_esp32.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash
# This script builds the opencv static libraries for the ESP32 and then copies the library and headers files to the asked folder. It must be runned from the opencv repository root.
# USAGE: ./build_opencv_for_esp32.sh <path-to-toolchain> <path-to-project>
set -e
# dir where the script is, no matter from where it is being called from
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# path to the cmake file containing the toolchain informations
TOOLCHAIN_CMAKE_PATH=$HOME/esp/esp-idf/tools/cmake/toolchain-esp32.cmake
# path where to copy the build libs and headers
LIB_INSTALL_PATH=$SCRIPTDIR/../lib
# list of modules to compile
OPENCV_MODULES_LIST=core,imgproc,imgcodecs
echo "################################################################################"
echo "######################## build_opencv_for_esp32 script #########################"
echo "################################################################################"
## get script arguments ###
if [ -z "$1" ]
then
echo "Using default toolchain cmake file path: ${TOOLCHAIN_CMAKE_PATH}"
else
TOOLCHAIN_CMAKE_PATH=$1
echo "Using toolchain cmake file path: ${TOOLCHAIN_CMAKE_PATH}"
fi
if [ -z "$2" ]
then
echo "Will be installed in default library install path: ${LIB_INSTALL_PATH}/opencv"
else
LIB_INSTALL_PATH=$2
echo "Will be installed in user-defined library install path: ${LIB_INSTALL_PATH}/opencv"
fi
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Release -DESP32=ON -DBUILD_SHARED_LIBS=OFF -DCV_DISABLE_OPTIMIZATION=OFF -DWITH_IPP=OFF -DWITH_TBB=OFF -DWITH_OPENMP=OFF -DWITH_PTHREADS_PF=OFF -DWITH_QUIRC=OFF -DWITH_1394=OFF -DWITH_CUDA=OFF -DWITH_OPENCL=OFF -DWITH_OPENCLAMDFFT=OFF -DWITH_OPENCLAMDBLAS=OFF -DWITH_VA_INTEL=OFF -DWITH_EIGEN=OFF -DWITH_GSTREAMER=OFF -DWITH_GTK=OFF -DWITH_JASPER=OFF -DWITH_JPEG=OFF -DWITH_WEBP=OFF -DBUILD_ZLIB=ON -DBUILD_PNG=ON -DWITH_TIFF=OFF -DWITH_V4L=OFF -DWITH_LAPACK=OFF -DWITH_ITT=OFF -DWITH_PROTOBUF=OFF -DWITH_IMGCODEC_HDR=OFF -DWITH_IMGCODEC_SUNRASTER=OFF -DWITH_IMGCODEC_PXM=OFF -DWITH_IMGCODEC_PFM=OFF -DBUILD_LIST=${OPENCV_MODULES_LIST} -DBUILD_JAVA=OFF -DBUILD_opencv_python=OFF -DBUILD_opencv_java=OFF -DBUILD_opencv_apps=OFF -DBUILD_PACKAGE=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DCV_ENABLE_INTRINSICS=OFF -DCV_TRACE=OFF -DOPENCV_ENABLE_MEMALIGN=OFF -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_CMAKE_PATH}"
### configure and build opencv ###
cd $SCRIPTDIR/../../
rm -rf build/ && mkdir -p build/ && cd build
# configure with cmake
echo "================================================================================"
echo "Configuring with cmake ${CMAKE_ARGS} :"
echo "================================================================================"
# launch cmake with args and parse list of modules to be build in a variable
OPENCV_MODULES_LIST=`cmake $CMAKE_ARGS .. | tee /dev/tty | grep 'To be built' | cut -f2 -d ':' | xargs | tr ' ' ','`
echo $OPENCV_MODULES_LIST
read -p "Don't forget to check the cmake summary! Continue ? [y/N]" prompt
if [ "${prompt}" != "y" ] && [ "${prompt}" != "Y" ] && [ "${prompt}" != "yes" ]; then
echo "aborted."
exit 1
fi
# fix of the generated file alloc.c
cp $SCRIPTDIR/resources/alloc_fix.cpp ./3rdparty/ade/ade-0.1.1f/sources/ade/source/alloc.cpp
# compiling with all power!
echo "================================================================================"
echo "Compiling with make -j"
echo "================================================================================"
make -j3
### installing in output directory ###
echo "================================================================================"
echo "Installing in ${LIB_INSTALL_PATH}"
echo "================================================================================"
# copying opencv modules libs
mkdir -p $LIB_INSTALL_PATH/opencv
cp lib/* $LIB_INSTALL_PATH/opencv
# copying 3rdparty libs
mkdir -p $LIB_INSTALL_PATH/opencv/3rdparty
cp 3rdparty/lib/* $LIB_INSTALL_PATH/opencv/3rdparty
# copying headers
mkdir -p $LIB_INSTALL_PATH/opencv/opencv2
cp opencv2/* $LIB_INSTALL_PATH/opencv/opencv2
cp ../include/opencv2/opencv.hpp $LIB_INSTALL_PATH/opencv/opencv2/
IFS=',' read -r -a modules <<< "$OPENCV_MODULES_LIST"
for elt in "${modules[@]}"
do
echo "Module ${elt}"
cp -r "../modules/${elt}/include/opencv2" $LIB_INSTALL_PATH/opencv
done
echo "installation done."