Skip to content

Instantly share code, notes, and snippets.

@Akira-Hayasaka
Last active January 13, 2021 07:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Akira-Hayasaka/91560f88977087fdc2c6e069e4c44ec7 to your computer and use it in GitHub Desktop.
Save Akira-Hayasaka/91560f88977087fdc2c6e069e4c44ec7 to your computer and use it in GitHub Desktop.
openFrameworks opencv apothecary for building opencv with opencv_contrib (visual studio)
#!/usr/bin/env bash
#
# OpenCV
# library of programming functions mainly aimed at real-time computer vision
# http://opencv.org
#
# uses a CMake build system
FORMULA_TYPES=( "osx" "ios" "tvos" "vs" "android" "emscripten" )
# define the version
VER=4.0.1
# tools for git use
GIT_URL=https://github.com/opencv/opencv.git
GIT_TAG=$VER
# these paths don't really matter - they are set correctly further down
local LIB_FOLDER="$BUILD_ROOT_DIR/opencv"
local LIB_FOLDER32="$LIB_FOLDER-32"
local LIB_FOLDER64="$LIB_FOLDER-64"
local LIB_FOLDER_IOS="$LIB_FOLDER-IOS"
local LIB_FOLDER_IOS_SIM="$LIB_FOLDER-IOSIM"
# download the source code and unpack it into LIB_NAME
function download() {
wget --quiet https://github.com/opencv/opencv/archive/$VER.tar.gz -O opencv-$VER.tar.gz
tar -xf opencv-$VER.tar.gz
mv opencv-$VER $1
rm opencv*.tar.gz
wget --quiet https://github.com/opencv/opencv_contrib/archive/$VER.tar.gz -O opencv_contrib-$VER.tar.gz
tar -xf opencv_contrib-$VER.tar.gz
mv opencv_contrib-$VER opencv_contrib
rm opencv_contrib*.tar.gz
}
# prepare the build environment, executed inside the lib src dir
function prepare() {
: # noop
}
# executed inside the lib src dir
function build() {
rm -f CMakeCache.txt
LIB_FOLDER="$BUILD_DIR/opencv/build/$TYPE/"
mkdir -p $LIB_FOLDER
if [ "$TYPE" == "osx" ] ; then
LOG="$LIB_FOLDER/opencv2-${VER}.log"
echo "Logging to $LOG"
cd build
rm -f CMakeCache.txt
echo "Log:" >> "${LOG}" 2>&1
set +e
cmake .. -DCMAKE_INSTALL_PREFIX=$LIB_FOLDER \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.7 \
-DENABLE_FAST_MATH=OFF \
-DCMAKE_CXX_FLAGS="-fvisibility-inlines-hidden -stdlib=libc++ -std=c++11 -O3 -fPIC -arch i386 -arch x86_64 -mmacosx-version-min=${OSX_MIN_SDK_VER}" \
-DCMAKE_C_FLAGS="-fvisibility-inlines-hidden -stdlib=libc++ -O3 -fPIC -arch i386 -arch x86_64 -mmacosx-version-min=${OSX_MIN_SDK_VER}" \
-DCMAKE_BUILD_TYPE="Release" \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_FAT_JAVA_LIB=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_PACKAGE=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_opencv_videoio=OFF \
-DBUILD_opencv_videostab=OFF \
-DBUILD_opencv_highgui=OFF \
-DBUILD_opencv_imgcodecs=OFF \
-DBUILD_opencv_stitching=OFF \
-DWITH_1394=OFF \
-DWITH_CARBON=OFF \
-DWITH_JPEG=OFF \
-DWITH_PNG=OFF \
-DWITH_TIFF=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF \
-DWITH_JASPER=OFF \
-DWITH_LIBV4L=OFF \
-DWITH_IMAGEIO=OFF \
-DWITH_IPP=OFF \
-DWITH_OPENNI=OFF \
-DWITH_QT=OFF \
-DWITH_QUICKTIME=OFF \
-DWITH_V4L=OFF \
-DWITH_PVAPI=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_EIGEN=OFF \
-DBUILD_TESTS=OFF \
-DWITH_LAPACK=OFF \
-DWITH_WEBP=OFF \
-DWITH_GPHOTO2=OFF \
-DWITH_VTK=OFF \
-DWITH_GTK=OFF \
-DWITH_GTK_2_X=OFF \
-DWITH_MATLAB=OFF \
-DWITH_GSTREAMER=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_OPENVX=OFF \
-DWITH_1394=OFF \
-DWITH_ADE=OFF \
-DBUILD_PERF_TESTS=OFF 2>&1 | tee -a ${LOG}
echo "CMAKE Successful"
echo "--------------------"
echo "Running make clean"
make clean 2>&1 | tee -a ${LOG}
echo "Make Clean Successful"
echo "--------------------"
echo "Running make"
make -j${PARALLEL_MAKE} 2>&1 | tee -a ${LOG}
echo "Make Successful"
echo "--------------------"
echo "Running make install"
make install 2>&1 | tee -a ${LOG}
echo "Make install Successful"
echo "--------------------"
echo "Joining all libs in one"
outputlist="$LIB_FOLDER/lib/lib*.a $LIB_FOLDER/lib/opencv4/3rdparty/*.a"
libtool -static $outputlist -o "$LIB_FOLDER/lib/opencv.a" 2>&1 | tee -a ${LOG}
echo "Joining all libs in one Successful"
elif [ "$TYPE" == "vs" ] ; then
unset TMP
unset TEMP
rm -f CMakeCache.txt
#LIB_FOLDER="$BUILD_DIR/opencv/build/$TYPE"
mkdir -p $LIB_FOLDER
LOG="$LIB_FOLDER/opencv2-${VER}.log"
echo "Logging to $LOG"
echo "Log:" >> "${LOG}" 2>&1
set +e
if [ $ARCH == 32 ] ; then
mkdir -p build_vs_32
cd build_vs_32
cmake .. -G "Visual Studio $VS_VER"\
-DBUILD_PNG=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DBUILD_TESTS=OFF \
-DWITH_CUDA=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_WIN32UI=OFF \
-DBUILD_PACKAGE=OFF \
-DWITH_JASPER=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_JPEG=OFF \
-DBUILD_WITH_DEBUG_INFO=OFF \
-DWITH_CUFFT=OFF \
-DBUILD_TIFF=OFF \
-DBUILD_JPEG=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DBUILD_WITH_STATIC_CRT=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_DOCS=OFF \
-DWITH_TIFF=OFF \
-DWITH_1394=OFF \
-DWITH_EIGEN=OFF \
-DBUILD_OPENEXR=OFF \
-DWITH_DSHOW=OFF \
-DWITH_VFW=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_PNG=OFF \
-DWITH_OPENCL=OFF \
-DBUILD_opencv_tracking=ON \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-DWITH_PVAPI=OFF | tee ${LOG}
vs-build "OpenCV.sln" Build "Release|Win32"
vs-build "OpenCV.sln" Build "Debug|Win32"
elif [ $ARCH == 64 ] ; then
mkdir -p build_vs_64
cd build_vs_64
cmake .. -G "Visual Studio $VS_VER Win64" \
-DBUILD_PNG=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DBUILD_TESTS=OFF \
-DWITH_CUDA=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_WIN32UI=OFF \
-DBUILD_PACKAGE=OFF \
-DWITH_JASPER=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_JPEG=OFF \
-DBUILD_WITH_DEBUG_INFO=OFF \
-DWITH_CUFFT=OFF \
-DBUILD_TIFF=OFF \
-DBUILD_JPEG=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DBUILD_WITH_STATIC_CRT=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_DOCS=OFF \
-DWITH_TIFF=OFF \
-DWITH_1394=OFF \
-DWITH_EIGEN=OFF \
-DBUILD_OPENEXR=OFF \
-DWITH_DSHOW=OFF \
-DWITH_VFW=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_PNG=OFF \
-DWITH_OPENCL=OFF \
-DBUILD_opencv_tracking=ON \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-DWITH_PVAPI=OFF | tee ${LOG}
vs-build "OpenCV.sln" Build "Release|x64"
vs-build "OpenCV.sln" Build "Debug|x64"
fi
elif [[ "$TYPE" == "ios" || "${TYPE}" == "tvos" ]] ; then
local IOS_ARCHS
if [[ "${TYPE}" == "tvos" ]]; then
IOS_ARCHS="x86_64 arm64"
elif [[ "$TYPE" == "ios" ]]; then
IOS_ARCHS="x86_64 armv7 arm64" #armv7s
fi
CURRENTPATH=`pwd`
# loop through architectures! yay for loops!
for IOS_ARCH in ${IOS_ARCHS}
do
source ${APOTHECARY_DIR}/ios_configure.sh $TYPE $IOS_ARCH
cd build
WITH_ITT=ON
if [[ "${IOS_ARCH}" == "arm64" ]]; then
WITH_ITT=OFF
fi
cmake .. -DCMAKE_INSTALL_PREFIX="$CURRENTPATH/build/$TYPE/$IOS_ARCH" \
-DIOS=1 \
-DAPPLE=1 \
-DUNIX=1 \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CC_COMPILER=$CC \
-DIPHONESIMULATOR=$ISSIM \
-DCMAKE_CXX_COMPILER_WORKS="TRUE" \
-DCMAKE_C_COMPILER_WORKS="TRUE" \
-DSDKVER="${SDKVERSION}" \
-DCMAKE_IOS_DEVELOPER_ROOT="${CROSS_TOP}" \
-DDEVROOT="${CROSS_TOP}" \
-DSDKROOT="${CROSS_SDK}" \
-DCMAKE_OSX_SYSROOT="${SYSROOT}" \
-DCMAKE_OSX_ARCHITECTURES="${IOS_ARCH}" \
-DCMAKE_XCODE_EFFECTIVE_PLATFORMS="-$PLATFORM" \
-DGLFW_BUILD_UNIVERSAL=ON \
-DENABLE_FAST_MATH=OFF \
-DCMAKE_CXX_FLAGS="-stdlib=libc++ -fvisibility=hidden $BITCODE -fPIC -isysroot ${SYSROOT} -DNDEBUG -Os $MIN_TYPE$MIN_IOS_VERSION" \
-DCMAKE_C_FLAGS="-stdlib=libc++ -fvisibility=hidden $BITCODE -fPIC -isysroot ${SYSROOT} -DNDEBUG -Os $MIN_TYPE$MIN_IOS_VERSION" \
-DCMAKE_BUILD_TYPE="Release" \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_FAT_JAVA_LIB=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_PACKAGE=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_CUDA_STUBS=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_opencv_videoio=OFF \
-DBUILD_opencv_videostab=OFF \
-DBUILD_opencv_highgui=OFF \
-DBUILD_opencv_imgcodecs=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_gapi=OFF \
-DBUILD_opencv_ml=OFF \
-DBUILD_opencv_shape=OFF \
-DBUILD_opencv_highgui=OFF \
-DBUILD_opencv_superres=OFF \
-DBUILD_opencv_stitching=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
-DWITH_TIFF=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_OPENGL=OFF \
-DWITH_OPENVX=OFF \
-DWITH_1394=OFF \
-DWITH_ADE=OFF \
-DWITH_JPEG=OFF \
-DWITH_PNG=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_GPHOTO2=OFF \
-DWITH_GSTREAMER=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_JASPER=OFF \
-DWITH_IMAGEIO=OFF \
-DWITH_IPP=OFF \
-DWITH_IPP_A=OFF \
-DWITH_OPENNI=OFF \
-DWITH_OPENNI2=OFF \
-DWITH_QT=OFF \
-DWITH_QUICKTIME=OFF \
-DWITH_V4L=OFF \
-DWITH_LIBV4L=OFF \
-DWITH_MATLAB=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCLCLAMDBLAS=OFF \
-DWITH_OPENCLCLAMDFFT=OFF \
-DWITH_OPENCL_SVM=OFF \
-DWITH_LAPACK=OFF \
-DBUILD_ZLIB=OFF \
-DWITH_WEBP=OFF \
-DWITH_VTK=OFF \
-DWITH_PVAPI=OFF \
-DWITH_EIGEN=OFF \
-DWITH_GTK=OFF \
-DWITH_GTK_2_X=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DBUILD_TESTS=OFF \
-DWITH_ITT=${WITH_ITT} \
-DBUILD_PERF_TESTS=OFF
echo "--------------------"
echo "Running make clean for ${IOS_ARCH}"
make clean
echo "--------------------"
echo "Running make for ${IOS_ARCH}"
make -j${PARALLEL_MAKE}
echo "--------------------"
echo "Running make install for ${IOS_ARCH}"
make install
rm -f CMakeCache.txt
cd ..
done
mkdir -p lib/$TYPE
echo "--------------------"
echo "Creating Fat Libs"
cd "build/$TYPE"
# link into universal lib, strip "lib" from filename
local lib
rm -rf arm64/lib/pkgconfig
for lib in arm64/lib/*.a; do
baselib=$(basename $lib)
local renamedLib=$(echo $baselib | sed 's|lib||')
if [ ! -e $renamedLib ] ; then
echo "renamed $renamedLib";
if [[ "${TYPE}" == "tvos" ]] ; then
lipo -c arm64/lib/$baselib x86_64/lib/$baselib -o "$CURRENTPATH/lib/$TYPE/$renamedLib"
elif [[ "$TYPE" == "ios" ]]; then
lipo -c armv7/lib/$baselib arm64/lib/$baselib x86_64/lib/$baselib -o "$CURRENTPATH/lib/$TYPE/$renamedLib"
fi
fi
done
cd ../../
echo "--------------------"
echo "Copying includes"
cp -R "build/$TYPE/x86_64/include/" "lib/include/"
echo "--------------------"
echo "Stripping any lingering symbols"
cd lib/$TYPE
for TOBESTRIPPED in $( ls -1) ; do
strip -x $TOBESTRIPPED
done
cd ../../
# end if iOS
elif [ "$TYPE" == "android" ]; then
export ANDROID_NDK=${NDK_ROOT}
if [ "$ABI" = "armeabi-v7a" ] || [ "$ABI" = "armeabi" ]; then
local BUILD_FOLDER="build_android_arm"
local BUILD_SCRIPT="cmake_android_arm.sh"
elif [ "$ABI" = "arm64-v8a" ]; then
local BUILD_FOLDER="build_android_arm64"
local BUILD_SCRIPT="cmake_android_arm64.sh"
elif [ "$ABI" = "x86" ]; then
local BUILD_FOLDER="build_android_x86"
local BUILD_SCRIPT="cmake_android_x86.sh"
fi
source ../../android_configure.sh $ABI
rm -rf $BUILD_FOLDER
mkdir $BUILD_FOLDER
cd $BUILD_FOLDER
echo ${ANDROID_NDK}
pwd
cmake .. -DCMAKE_INSTALL_PREFIX="${BUILD_DIR}/${1}/${BUILD_FOLDER}/install" \
-DCMAKE_TOOLCHAIN_FILE="platforms/android/android.toolchain.cmake" \
-DBUILD_ANDROID_PROJECTS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_FAT_JAVA_LIB=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_PACKAGE=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_JPEG=OFF \
-DBUILD_PNG=OFF \
-DHAVE_opencv_androidcamera=OFF \
-DWITH_CAROTENE=OFF \
-DWITH_CPUFEATURES=OFF \
-DWITH_TIFF=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_1394=OFF \
-DWITH_JPEG=OFF \
-DWITH_PNG=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_OPENCL=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF \
-DWITH_JASPER=OFF \
-DWITH_IMAGEIO=OFF \
-DWITH_IPP=OFF \
-DWITH_OPENNI=OFF \
-DWITH_QT=OFF \
-DWITH_V4L=OFF \
-DWITH_PVAPI=OFF \
-DWITH_EIGEN=OFF \
-DBUILD_TESTS=OFF \
-DANDROID_NDK=$NDK_ROOT \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_ABI=$ABI \
-DANDROID_STL=c++_static \
-DANDROID_NATIVE_API_LEVEL=$ANDROID_PLATFORM \
-DANDROID_FORCE_ARM_BUILD=TRUE \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_CMAKE_TOOLCHAIN \
-DBUILD_PERF_TESTS=OFF
make -j${PARALLEL_MAKE}
make install
elif [ "$TYPE" == "emscripten" ]; then
if [ -z "${EMSCRIPTEN+x}" ]; then
echo "emscripten is not set. sourcing emsdk_env.sh"
source ~/emscripten-sdk/emsdk_env.sh
fi
cd ${BUILD_DIR}/${1}
mkdir -p build_${TYPE}
cd build_${TYPE}
emcmake cmake .. -DCMAKE_INSTALL_PREFIX="${BUILD_DIR}/${1}/build_$TYPE/install" \
-DCMAKE_BUILD_TYPE="Release" \
-DBUILD_opencv_js=ON \
-DCPU_BASELINE='' \
-DCPU_DISPATCH='' \
-DCV_TRACE=OFF \
-DCMAKE_C_FLAGS="-s USE_PTHREADS=0 -I${EMSCRIPTEN}/system/lib/libcxxabi/include/" \
-DCMAKE_CXX_FLAGS="-s USE_PTHREADS=0 -I${EMSCRIPTEN}/system/lib/libcxxabi/include/" \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_FAT_JAVA_LIB=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_PACKAGE=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_CUDA_STUBS=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_opencv_videoio=OFF \
-DBUILD_opencv_videostab=OFF \
-DBUILD_opencv_highgui=OFF \
-DBUILD_opencv_imgcodecs=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_gapi=OFF \
-DBUILD_opencv_ml=OFF \
-DBUILD_opencv_shape=OFF \
-DBUILD_opencv_highgui=OFF \
-DBUILD_opencv_superres=OFF \
-DBUILD_opencv_stitching=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
-DENABLE_SSE=OFF \
-DENABLE_SSE2=OFF \
-DENABLE_SSE3=OFF \
-DENABLE_SSE41=OFF \
-DENABLE_SSE42=OFF \
-DENABLE_SSSE3=OFF \
-DENABLE_AVX=OFF \
-DWITH_TIFF=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_OPENGL=OFF \
-DWITH_OPENVX=OFF \
-DWITH_1394=OFF \
-DWITH_ADE=OFF \
-DWITH_JPEG=OFF \
-DWITH_PNG=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF \
-DWITH_GIGEAPI=OFF \
-DWITH_GPHOTO2=OFF \
-DWITH_GSTREAMER=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_JASPER=OFF \
-DWITH_IMAGEIO=OFF \
-DWITH_IPP=OFF \
-DWITH_IPP_A=OFF \
-DWITH_TBB=OFF \
-DWITH_PTHREADS_PF=OFF \
-DWITH_OPENNI=OFF \
-DWITH_OPENNI2=OFF \
-DWITH_QT=OFF \
-DWITH_QUICKTIME=OFF \
-DWITH_V4L=OFF \
-DWITH_LIBV4L=OFF \
-DWITH_MATLAB=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCLCLAMDBLAS=OFF \
-DWITH_OPENCLCLAMDFFT=OFF \
-DWITH_OPENCL_SVM=OFF \
-DWITH_LAPACK=OFF \
-DWITH_ITT=OFF \
-DBUILD_ZLIB=OFF \
-DWITH_WEBP=OFF \
-DWITH_VTK=OFF \
-DWITH_PVAPI=OFF \
-DWITH_EIGEN=OFF \
-DWITH_GTK=OFF \
-DWITH_GTK_2_X=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF
make -j${PARALLEL_MAKE}
make install
fi
}
# executed inside the lib src dir, first arg $1 is the dest libs dir root
function copy() {
# prepare headers directory if needed
mkdir -p $1/include
# prepare libs directory if needed
mkdir -p $1/lib/$TYPE
if [ "$TYPE" == "osx" ] ; then
# Standard *nix style copy.
# copy headers
LIB_FOLDER="$BUILD_DIR/opencv/build/$TYPE/"
cp -R $LIB_FOLDER/include/ $1/include/
cp -R include/opencv2 $1/include/
cp -R modules/*/include/opencv2/* $1/include/opencv2/
# copy lib
cp -R $LIB_FOLDER/lib/opencv.a $1/lib/$TYPE/
elif [ "$TYPE" == "vs" ] ; then
if [ $ARCH == 32 ] ; then
DEPLOY_PATH="$1/lib/$TYPE/Win32"
elif [ $ARCH == 64 ] ; then
DEPLOY_PATH="$1/lib/$TYPE/x64"
fi
mkdir -p "$DEPLOY_PATH/Release"
mkdir -p "$DEPLOY_PATH/Debug"
# now make sure the target directories are clean.
rm -Rf "${DEPLOY_PATH}/Release/*"
rm -Rf "${DEPLOY_PATH}/Debug/*"
#copy the cv libs
cp -v build_vs_${ARCH}/lib/Release/*.lib "${DEPLOY_PATH}/Release"
cp -v build_vs_${ARCH}/lib/Debug/*.lib "${DEPLOY_PATH}/Debug"
#copy the zlib
cp -v build_vs_${ARCH}/3rdparty/lib/Release/*.lib "${DEPLOY_PATH}/Release"
cp -v build_vs_${ARCH}/3rdparty/lib/Debug/*.lib "${DEPLOY_PATH}/Debug"
cp -R include/opencv2 $1/include/
cp -R build_vs_${ARCH}/opencv2/* $1/include/opencv2/
cp -R modules/*/include/opencv2/* $1/include/opencv2/
#copy contlib headers
cp -R ../opencv_contrib/modules/*/include/opencv2/* $1/include/opencv2/
#copy the ippicv includes and lib
IPPICV_SRC=build_vs_${ARCH}/3rdparty/ippicv/ippicv_win/icv
IPPICV_DST=$1/../ippicv
if [ $ARCH == 32 ] ; then
IPPICV_PLATFORM="ia32"
IPPICV_DEPLOY="${IPPICV_DST}/lib/$TYPE/Win32"
elif [ $ARCH == 64 ] ; then
IPPICV_PLATFORM="intel64"
IPPICV_DEPLOY="${IPPICV_DST}/lib/$TYPE/x64"
fi
mkdir -p ${IPPICV_DST}/include
cp -R ${IPPICV_SRC}/include/ ${IPPICV_DST}/
mkdir -p ${IPPICV_DEPLOY}
cp -v ${IPPICV_SRC}/lib/${IPPICV_PLATFORM}/*.lib "${IPPICV_DEPLOY}"
elif [[ "$TYPE" == "ios" || "$TYPE" == "tvos" ]] ; then
# Standard *nix style copy.
# copy headers
LIB_FOLDER="$BUILD_ROOT_DIR/$TYPE/FAT/opencv"
cp -Rv lib/include/ $1/include/
cp -R include/opencv2 $1/include/
cp -R modules/*/include/opencv2/* $1/include/opencv2/
mkdir -p $1/lib/$TYPE
cp -v lib/$TYPE/*.a $1/lib/$TYPE
elif [ "$TYPE" == "android" ]; then
if [ $ABI = armeabi-v7a ] || [ $ABI = armeabi ]; then
local BUILD_FOLDER="build_android_arm"
elif [ $ABI = arm64-v8a ]; then
local BUILD_FOLDER="build_android_arm64"
elif [ $ABI = x86 ]; then
local BUILD_FOLDER="build_android_x86"
fi
cp -r $BUILD_FOLDER/install/sdk/native/jni/include/opencv2 $1/include/
cp -R include/opencv2 $1/include/
cp -R modules/*/include/opencv2/* $1/include/opencv2/
mkdir -p $1/lib/$TYPE/$ABI/
cp -r $BUILD_FOLDER/install/sdk/native/staticlibs/$ABI/*.a $1/lib/$TYPE/$ABI/
cp -r $BUILD_FOLDER/install/sdk/native/3rdparty/libs/$ABI/*.a $1/lib/$TYPE/$ABI/
elif [ "$TYPE" == "emscripten" ]; then
cp -r build_emscripten/install/include/* $1/include/
cp -R include/opencv2 $1/include/
cp -R modules/*/include/opencv2/* $1/include/opencv2/
cp -r build_emscripten/install/lib/*.a $1/lib/$TYPE/
cp -r build_emscripten/install/lib/opencv4/3rdparty/*.a $1/lib/$TYPE/
fi
# copy license file
rm -rf $1/license # remove any older files if exists
mkdir -p $1/license
cp -v LICENSE $1/license/
}
# executed inside the lib src dir
function clean() {
if [ "$TYPE" == "osx" ] ; then
make clean;
elif [[ "$TYPE" == "ios" || "$TYPE" == "tvos" ]] ; then
make clean;
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment