Created
May 25, 2018 07:40
-
-
Save cattaka/4a168fe7630e89cce37a3ede86f612e4 to your computer and use it in GitHub Desktop.
The script for rebuilding OpenCV so files.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
cd `dirname $0`/.. | |
PROJECT_ROOT=$PWD | |
OPENCV_VERSION=3.4.1 | |
if [ "Darwin" = `uname -s` ]; then | |
HOST_ARCH=macosx | |
elif [ "Linux" = `uname -s` ]; then | |
HOST_ARCH=linux | |
else | |
echo "HELPME: Unknown architecture"; return | |
fi | |
if [ -z "$ANDROID_SDK" ]; then | |
echo "ANDROID_SDK is empty!"; return | |
fi | |
if [ -z "$ANDROID_NDK" ]; then | |
echo "ANDROID_NDK is empty!"; return | |
fi | |
if [ -z `which java` ]; then | |
echo "set PATH for java"; return | |
fi | |
if [ -z `which cmake` ]; then | |
echo "set PATH for cmake"; return | |
fi | |
if [ ! -d workspace ]; then | |
mkdir workspace | |
fi | |
cd workspace | |
## Note: Need older Android SDK to build OpenCv :( | |
export ANDROID_SDK=$PWD/older_sdk | |
if [ ! -d older_sdk ]; then | |
mkdir older_sdk | |
cd older_sdk | |
wget http://dl-ssl.google.com/android/repository/tools_r25.2.5-${HOST_ARCH}.zip | |
unzip tools_r25.2.5-${HOST_ARCH}.zip | |
# Install Build-tools and create symlink | |
TO_INSTALL_BUILD_TOOL_VER="Android SDK Build-tools, revision 25.0.3" | |
TO_INSTALL_BUILD_TOOL=`./tools/android list sdk -a|grep "$TO_INSTALL_BUILD_TOOL_VER"|cut -d "-" -f 1|sed -e "s/ //g"` | |
for i in $TO_INSTALL_BUILD_TOOL;do | |
echo y | ./tools/android update sdk -a -u -t $i | |
done | |
ln -sf ./build-tools/25.0.3 ./platform-tools | |
TO_INSTALL_SDK_VER="${MIN_SDK}|21|11|8" | |
TO_INSTALL_SDK=`./tools/android list sdk -a|grep -E "^ +[0-9]+- SDK.+API ($TO_INSTALL_SDK_VER),"|cut -d "-" -f 1|sed -e "s/ //g"` | |
for i in $TO_INSTALL_SDK;do | |
echo y | ./tools/android update sdk -a -u -t $i | |
done | |
cd .. | |
fi | |
if [ ! -d opencv-${OPENCV_VERSION} ]; then | |
wget https://github.com/Itseez/opencv/archive/${OPENCV_VERSION}.zip | |
unzip ${OPENCV_VERSION}.zip | |
sed -i -e 's/8e7200af3ac16e91a0d1535c606a485c/8e3e39e1fdfb3f7c3a5ac8ec1afe186e/g' opencv-${OPENCV_VERSION}/3rdparty/tbb/CMakeLists.txt | |
sed -i -e 's/10000/${ANDROID_NATIVE_API_LEVEL}/g' opencv-${OPENCV_VERSION}/platforms/android/android.toolchain.cmake | |
fi | |
cd opencv-${OPENCV_VERSION} | |
# x86 x86_64 armeabi-v7a arm64-v8a | |
ABI_SETTINGS="" | |
ABI_SETTINGS="arm64-v8a:arm64:21 ${ABI_SETTINGS}" | |
ABI_SETTINGS="armeabi-v7a:arm:15 ${ABI_SETTINGS}" | |
ABI_SETTINGS="x86_64:x86_64:21 ${ABI_SETTINGS}" | |
ABI_SETTINGS="x86:x86:15 ${ABI_SETTINGS}" | |
for abi_setting in $ABI_SETTINGS | |
do | |
abi=`echo $abi_setting | cut -d ":" -f 1` | |
arch=`echo $abi_setting | cut -d ":" -f 2` | |
min_sdk=`echo $abi_setting | cut -d ":" -f 3` | |
echo "=====================================================" | |
echo "building ${abi}" | |
echo "=====================================================" | |
if [ -d build_${abi} ]; then | |
rm -r build_${abi} | |
fi | |
mkdir build_${abi} | |
cd build_${abi} | |
echo $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --use-llvm --platform=android-${min_sdk} --install-dir=tc --arch=${arch} | |
$ANDROID_NDK/build/tools/make-standalone-toolchain.sh \ | |
--use-llvm \ | |
--stl=gnustl \ | |
--platform=android-${min_sdk} \ | |
--install-dir=tc \ | |
--arch=${arch} \ | |
--toolchain=aarch64-linux-android-clang | |
toolchain="$PWD/tc" | |
if [ $abi = "x86_64" ];then | |
# Special for x86_64 to avoid bug of android.toolchain.cmake | |
cp tc/x86_64-linux-android/lib64/libstdc++.a tc/x86_64-linux-android/lib/libstdc++.a | |
cp tc/x86_64-linux-android/lib64/libsupc++.a tc/x86_64-linux-android/lib/libsupc++.a | |
fi | |
cmake \ | |
-DANDROID_STANDALONE_TOOLCHAIN=${toolchain} \ | |
-DANDROID_NATIVE_API_LEVEL=${min_sdk} \ | |
-DANDROID_SDK_TARGETS=${min_sdk} \ | |
-DANDROID_STL=c++_shared \ | |
-DANDROID_STL_FORCE_FEATURES=ON \ | |
-DCMAKE_BUILD_WITH_INSTALL_PATH=ON \ | |
-DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake \ | |
-DANDROID_ABI=${abi} \ | |
-DBUILD_JAVA=1 \ | |
-DBUILD_ANDROID_EXAMPLES=0 \ | |
-DWITH_TBB=1 \ | |
-DWITH_1394=0 \ | |
-DWITH_AVFOUNDATION=0 \ | |
-DWITH_CARBON=0 \ | |
-DWITH_CAROTENE=0 \ | |
-DWITH_CPUFEATURES=0 \ | |
-DWITH_VTK=0 \ | |
-DWITH_CUDA=0 \ | |
-DWITH_CUFFT=0 \ | |
-DWITH_CUBLAS=0 \ | |
-DWITH_NVCUVID=0 \ | |
-DWITH_EIGEN=0 \ | |
-DWITH_VFW=0 \ | |
-DWITH_FFMPEG=0 \ | |
-DWITH_GSTREAMER=0 \ | |
-DWITH_GSTREAMER_0_10=0 \ | |
-DWITH_GTK=0 \ | |
-DWITH_GTK_2_X=0 \ | |
-DWITH_IPP=0 \ | |
-DWITH_HALIDE=0 \ | |
-DWITH_INF_ENGINE=0 \ | |
-DWITH_JASPER=0 \ | |
-DWITH_JPEG=0 \ | |
-DWITH_WEBP=0 \ | |
-DWITH_OPENEXR=0 \ | |
-DWITH_OPENGL=0 \ | |
-DWITH_OPENVX=0 \ | |
-DWITH_OPENNI=0 \ | |
-DWITH_OPENNI2=0 \ | |
-DWITH_PNG=0 \ | |
-DWITH_GDCM=0 \ | |
-DWITH_PVAPI=0 \ | |
-DWITH_GIGEAPI=0 \ | |
-DWITH_ARAVIS=0 \ | |
-DWITH_QT=0 \ | |
-DWITH_WIN32UI=0 \ | |
-DWITH_QUICKTIME=0 \ | |
-DWITH_QTKIT=0 \ | |
-DWITH_OPENMP=0 \ | |
-DWITH_CSTRIPES=0 \ | |
-DWITH_PTHREADS_PF=0 \ | |
-DWITH_TIFF=0 \ | |
-DWITH_UNICAP=0 \ | |
-DWITH_V4L=0 \ | |
-DWITH_LIBV4L=0 \ | |
-DWITH_DSHOW=0 \ | |
-DWITH_MSMF=0 \ | |
-DWITH_XIMEA=0 \ | |
-DWITH_XINE=0 \ | |
-DWITH_CLP=0 \ | |
-DWITH_OPENCL=0 \ | |
-DWITH_OPENCL_SVM=0 \ | |
-DWITH_OPENCLAMDFFT=0 \ | |
-DWITH_OPENCLAMDBLAS=0 \ | |
-DWITH_DIRECTX=0 \ | |
-DWITH_INTELPERC=0 \ | |
-DWITH_MATLAB=0 \ | |
-DWITH_VA=0 \ | |
-DWITH_VA_INTEL=0 \ | |
-DWITH_MFX=0 \ | |
-DWITH_GDAL=0 \ | |
-DWITH_GPHOTO2=0 \ | |
-DWITH_LAPACK=0 \ | |
-DWITH_ITT=0 \ | |
-DBUILD_opencv_dnn=OFF \ | |
-DBUILD_opencv_features2d=OFF \ | |
-DBUILD_opencv_flann=OFF \ | |
-DBUILD_opencv_highgui=OFF \ | |
-DBUILD_opencv_ml=OFF \ | |
-DBUILD_opencv_objdetect=OFF \ | |
-DBUILD_opencv_photo=OFF \ | |
-DBUILD_opencv_python_bindings_generator=OFF \ | |
-DBUILD_opencv_shape=OFF \ | |
-DBUILD_opencv_superres=OFF \ | |
-DBUILD_opencv_ts=OFF \ | |
-DBUILD_opencv_videoio=OFF \ | |
.. | |
make -j16 | |
if [ ! -d ${PROJECT_ROOT}/app/src/main/jniLibs/${abi} ]; then | |
mkdir ${PROJECT_ROOT}/app/src/main/jniLibs/${abi} | |
fi | |
cp ./lib/${abi}/libopencv_java3.so ${PROJECT_ROOT}/app/src/main/jniLibs/${abi}/ | |
cd .. | |
done | |
# Copy modules | |
module_from=$PROJECT_ROOT/workspace/opencv-${OPENCV_VERSION}/build_arm64-v8a | |
module_to=$PROJECT_ROOT/openCVLibrary310 | |
rm -rf ${module_to}/src/main | |
mkdir -p ${module_to}/src/main/java | |
mkdir -p ${module_to}/src/main/res/values | |
mkdir -p ${module_to}/src/main/aidl/org/opencv/engine/ | |
cp -r ${module_from}/android_sdk/AndroidManifest.xml ${module_to}/src/main/ | |
cp -r ${module_from}/android_sdk/src/* ${module_to}/src/main/java/ | |
cp -r ${module_from}/android_sdk/res/values/* ${module_to}/src/main/res/values/ | |
mv ${module_to}/src/main/java/org/opencv/engine/OpenCVEngineInterface.aidl ${module_to}/src/main/aidl/org/opencv/engine/ | |
# Copy headers | |
headers_from=$PROJECT_ROOT/workspace/opencv-${OPENCV_VERSION}/ | |
headers_to=$PROJECT_ROOT/openCVLibrary310/include | |
rm -rf $headers_to | |
mkdir -p $headers_to | |
cp -r $headers_from/include/opencv* $headers_to | |
cp -r $headers_from/modules/*/include/opencv* $headers_to | |
cp -r ${module_from}/opencv2/* $headers_to/opencv2/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment