blob: 17d594bad2bd92c927950275a4723730697fc3e3 [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# This script builds the static library of opencv that can be used as dependency of mxnet.
# It expects openblas, libjpeg, libpng, libtiff, eigen, etc., to be in $DEPS_PATH.
set -ex
OPENCV_VERSION=3.4.2
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
if [[ $PLATFORM == 'linux' ]] && [[ $BLAS == 'open' ]]; then
OPENCV_LAPACK_OPTIONS=" \
-D OpenBLAS_HOME=$DEPS_PATH \
-D OpenBLAS_INCLUDE_DIR=$DEPS_PATH/include \
-D OpenBLAS_LIB=$DEPS_PATH/lib/libopenblas.a \
-D LAPACK_INCLUDE_DIR=$DEPS_PATH/include \
-D LAPACK_LINK_LIBRARIES=$DEPS_PATH/lib/ \
-D LAPACK_LIBRARIES=$DEPS_PATH/lib/libopenblas.a \
-D LAPACK_CBLAS_H='cblas.h' \
-D LAPACK_LAPACKE_H='lapacke.h' \
-D LAPACK_IMPL='OpenBLAS' \
-D HAVE_LAPACK=1"
fi
if [[ ! -f $DEPS_PATH/lib/libopencv_core.a ]] || [[ ! -f $DEPS_PATH/lib/libopencv_imgcodecs.a ]] || [[ ! -f $DEPS_PATH/lib/libopencv_imgproc.a ]]; then
# download and build opencv since we need the static library
>&2 echo "Building opencv..."
download \
https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip \
${DEPS_PATH}/opencv.zip
unzip -q $DEPS_PATH/opencv.zip -d $DEPS_PATH
mkdir -p $DEPS_PATH/opencv-$OPENCV_VERSION/build
pushd .
cd $DEPS_PATH/opencv-$OPENCV_VERSION/build
CFLAGS="-fPIC" CXXFLAGS="-fPIC" cmake \
-D OPENCV_ENABLE_NONFREE=OFF \
-D WITH_1394=OFF \
-D WITH_ARAVIS=OFF \
-D WITH_AVFOUNDATION=OFF \
-D WITH_CAROTENE=OFF \
-D WITH_CLP=OFF \
-D WITH_CSTRIPES=OFF \
-D WITH_CPUFEATURES=OFF \
-D WITH_CUBLAS=OFF \
-D WITH_CUDA=OFF \
-D WITH_CUFFT=OFF \
-D WITH_DIRECTX=OFF \
-D WITH_DSHOW=OFF \
-D WITH_EIGEN=ON \
-D WITH_FFMPEG=OFF \
-D WITH_GDAL=OFF \
-D WITH_GDCM=OFF \
-D WITH_GIGEAPI=OFF \
-D WITH_GPHOTO2=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_GSTREAMER_0_10=OFF \
-D WITH_GTK=OFF \
-D WITH_GTK_2_X=OFF \
-D WITH_HALIDE=OFF \
-D WITH_IMAGEIO=OFF \
-D WITH_IMGCODEC_HDR=OFF \
-D WITH_IMGCODEC_PXM=OFF \
-D WITH_IMGCODEC_SUNRASTER=OFF \
-D WITH_INF_ENGINE=OFF \
-D WITH_INTELPERC=OFF \
-D WITH_IPP=OFF \
-D WITH_IPP_A=OFF \
-D WITH_ITT=OFF \
-D WITH_JASPER=OFF \
-D WITH_JPEG=ON \
-D WITH_LAPACK=ON \
-D WITH_LIBREALSENSE=OFF \
-D WITH_LIBV4L=OFF \
-D WITH_MATLAB=OFF \
-D WITH_MFX=OFF \
-D WITH_MSMF=OFF \
-D WITH_NVCUVID=OFF \
-D WITH_OPENCL=OFF \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF \
-D WITH_OPENCL_SVM=OFF \
-D WITH_OPENEXR=OFF \
-D WITH_OPENGL=OFF \
-D WITH_OPENMP=OFF \
-D WITH_OPENNI=OFF \
-D WITH_OPENNI2=OFF \
-D WITH_OPENVX=OFF \
-D WITH_PNG=ON \
-D WITH_PROTOBUF=OFF \
-D WITH_PTHREADS_PF=ON \
-D WITH_PVAPI=OFF \
-D WITH_QT=OFF \
-D WITH_QTKIT=OFF \
-D WITH_QUICKTIME=OFF \
-D WITH_TBB=OFF \
-D WITH_TIFF=ON \
-D WITH_UNICAP=OFF \
-D WITH_V4L=OFF \
-D WITH_VA=OFF \
-D WITH_VA_INTEL=OFF \
-D WITH_VFW=OFF \
-D WITH_VTK=OFF \
-D WITH_WEBP=OFF \
-D WITH_WIN32UI=OFF \
-D WITH_XIMEA=OFF \
-D WITH_XINE=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF \
-D BUILD_ANDROID_PROJECTS=OFF \
-D BUILD_ANDROID_SERVICE=OFF \
-D BUILD_CUDA_STUBS=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_FAT_JAVA_LIB=OFF \
-D BUILD_IPP_IW=OFF \
-D BUILD_ITT_IW=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_JASPER=OFF \
-D BUILD_JPEG=OFF \
-D BUILD_OPENEXR=OFF \
-D BUILD_PACKAGE=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_PNG=OFF \
-D BUILD_SHARED_LIBS=OFF \
-D BUILD_TBB=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_TIFF=OFF \
-D BUILD_WEBP=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_WITH_DYNAMIC_IPP=OFF \
-D BUILD_WITH_STATIC_CRT=OFF \
-D BUILD_ZLIB=OFF \
-D BUILD_opencv_apps=OFF \
-D BUILD_opencv_aruco=OFF \
-D BUILD_opencv_calib3d=OFF \
-D BUILD_opencv_contrib=OFF \
-D BUILD_opencv_dnn=OFF \
-D BUILD_opencv_features2d=OFF \
-D BUILD_opencv_flann=OFF \
-D BUILD_opencv_gpu=OFF \
-D BUILD_opencv_gpuarithm=OFF \
-D BUILD_opencv_gpubgsegm=OFF \
-D BUILD_opencv_gpucodec=OFF \
-D BUILD_opencv_gpufeatures2d=OFF \
-D BUILD_opencv_gpufilters=OFF \
-D BUILD_opencv_gpuimgproc=OFF \
-D BUILD_opencv_gpulegacy=OFF \
-D BUILD_opencv_gpuoptflow=OFF \
-D BUILD_opencv_gpustereo=OFF \
-D BUILD_opencv_gpuwarping=OFF \
-D BUILD_opencv_highgui=ON \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_js=OFF \
-D BUILD_opencv_ml=OFF \
-D BUILD_opencv_ml=OFF \
-D BUILD_opencv_nonfree=OFF \
-D BUILD_opencv_objdetect=OFF \
-D BUILD_opencv_photo=OFF \
-D BUILD_opencv_python=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D BUILD_opencv_superres=OFF \
-D BUILD_opencv_video=OFF \
-D BUILD_opencv_videoio=OFF \
-D BUILD_opencv_videostab=OFF \
-D BUILD_opencv_viz=OFF \
-D BUILD_opencv_world=OFF \
$OPENCV_LAPACK_OPTIONS \
-D OPENCV_LIB_INSTALL_PATH=lib \
-D OPENCV_INCLUDE_INSTALL_PATH=include \
-D CMAKE_LIBRARY_PATH=$DEPS_PATH/lib \
-D CMAKE_INCLUDE_PATH=$DEPS_PATH/include \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=$DEPS_PATH ..
if [[ $PLATFORM == 'linux' ]]; then
cp $DIR/patch/opencv_lapack.h ./
fi
$MAKE
$MAKE install
popd
# @szha: compatibility header
cat $DEPS_PATH/include/opencv2/imgcodecs/imgcodecs_c.h >> $DEPS_PATH/include/opencv2/imgcodecs.hpp
fi