|
From: Tapio V. <aa...@us...> - 2010-08-12 21:28:29
|
Module: performous
Branch: joinmenu
Commit: ffd1a78ff9729bd9400e77b99db74fe09acc396d
Author: Tapio Vierros <tap...@gm...>
Date: Thu Aug 12 23:47:36 2010 +0300
Add OpenCV to cross-compilation.
---
cmake/Modules/FindOpenCV.cmake | 41 +++++++++++++++------------
win32/cross-from-debian/makedeps.sh | 51 +++++++++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 18 deletions(-)
diff --git a/cmake/Modules/FindOpenCV.cmake b/cmake/Modules/FindOpenCV.cmake
index 3dec6df..6b745f6 100644
--- a/cmake/Modules/FindOpenCV.cmake
+++ b/cmake/Modules/FindOpenCV.cmake
@@ -30,18 +30,23 @@
# --------------------------------
+#TODO: Clean-up all this shit.
+
MACRO(DBG_MSG _MSG)
-# MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}):\n${_MSG}")
+ #MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}):\n${_MSG}")
ENDMACRO(DBG_MSG)
+# Use pkg-config to get hints about paths
+libfind_pkg_check_modules(OpenCV_PKGCONF opencv)
+
# required cv components with header and library if COMPONENTS unspecified
IF (NOT OpenCV_FIND_COMPONENTS)
# default
SET(OpenCV_FIND_REQUIRED_COMPONENTS CV CXCORE HIGHGUI)
IF (WIN32)
-LIST(APPEND OpenCV_FIND_REQUIRED_COMPONENTS CVCAM ) # WIN32 only actually
+#LIST(APPEND OpenCV_FIND_REQUIRED_COMPONENTS CVCAM ) # WIN32 only actually
ENDIF(WIN32)
ENDIF (NOT OpenCV_FIND_COMPONENTS)
@@ -73,7 +78,7 @@ LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc41/OpenCV )
ENDIF(CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")
ENDIF (${CMAKE_COMPILER_IS_GNUCXX})
-#DBG_MSG("DBG (OpenCV_POSSIBLE_ROOT_DIRS=${OpenCV_POSSIBLE_ROOT_DIRS}")
+DBG_MSG("OpenCV_POSSIBLE_ROOT_DIRS=${OpenCV_POSSIBLE_ROOT_DIRS}")
#
# select exactly ONE OpenCV base directory/tree
@@ -109,7 +114,7 @@ lib
OpenCV/lib
otherlibs/_graphics/lib
)
-#DBG_MSG("OpenCV_LIBDIR_SUFFIXES=${OpenCV_LIBDIR_SUFFIXES}")
+DBG_MSG("OpenCV_LIBDIR_SUFFIXES=${OpenCV_LIBDIR_SUFFIXES}")
#
@@ -117,23 +122,23 @@ otherlibs/_graphics/lib
#
FIND_PATH(OpenCV_CV_INCLUDE_DIR
NAMES cv.h
-PATHS ${OpenCV_ROOT_DIR}
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR}
PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
FIND_PATH(OpenCV_CXCORE_INCLUDE_DIR
NAMES cxcore.h
-PATHS ${OpenCV_ROOT_DIR}
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR}
PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
FIND_PATH(OpenCV_CVAUX_INCLUDE_DIR
NAMES cvaux.h
-PATHS ${OpenCV_ROOT_DIR}
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR}
PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
FIND_PATH(OpenCV_HIGHGUI_INCLUDE_DIR
NAMES highgui.h
-PATHS ${OpenCV_ROOT_DIR}
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR}
PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
FIND_PATH(OpenCV_CVCAM_INCLUDE_DIR
NAMES cvcam.h
-PATHS ${OpenCV_ROOT_DIR}
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR}
PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
#
@@ -142,32 +147,32 @@ PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
#
FIND_LIBRARY(OpenCV_CV_LIBRARY
NAMES cv opencv
-PATHS ${OpenCV_ROOT_DIR}
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR}
PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_CVAUX_LIBRARY
NAMES cvaux
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_CVCAM_LIBRARY
NAMES cvcam
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_CVHAARTRAINING_LIBRARY
NAMES cvhaartraining
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_CXCORE_LIBRARY
NAMES cxcore
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_CXTS_LIBRARY
NAMES cxts
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_HIGHGUI_LIBRARY
NAMES highgui
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_ML_LIBRARY
NAMES ml
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
FIND_LIBRARY(OpenCV_TRS_LIBRARY
NAMES trs
-PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
+PATHS ${OpenCV_PKGCONF_INCLUDE_DIRS} ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
diff --git a/win32/cross-from-debian/makedeps.sh b/win32/cross-from-debian/makedeps.sh
index bd54f8e..0dc83db 100755
--- a/win32/cross-from-debian/makedeps.sh
+++ b/win32/cross-from-debian/makedeps.sh
@@ -63,6 +63,7 @@ assert_binary_on_path tar
assert_binary_on_path unzip
assert_binary_on_path wget
+SCRIPTDIR="`pwd`"
export PREFIX="`pwd`"/deps
export WINEPREFIX="`pwd`"/wine
mkdir -pv "$PREFIX"/bin "$PREFIX"/lib "$PREFIX"/include "$PREFIX"/lib/pkgconfig "$PREFIX"/build-stamps
@@ -620,3 +621,53 @@ if test ! -f "$PREFIX"/build-stamps/ffmpeg; then
touch "$PREFIX"/build-stamps/ffmpeg
$RM_RF ffmpeg
fi
+
+# VideoInput
+# This is support library for OpenCV to get video input on Windows.
+# This is only needed if you want OpenCV.
+VIDEOINPUT="videoInput0.1995"
+if test ! -f "$PREFIX"/build-stamps/videoinput; then
+ download http://muonics.net/school/spring05/videoInput/files/$VIDEOINPUT.zip
+ unzip -o $VIDEOINPUT.zip
+ # We don't bother compiling this since it has precompiled lib and would
+ # probably be a pain in the ass.
+ cp -v $VIDEOINPUT/compiledLib/compiledByDevCpp/*.a "$PREFIX"/lib
+ cp -v $VIDEOINPUT/compiledLib/compiledByDevCpp/include/*.h "$PREFIX"/include
+ touch "$PREFIX"/build-stamps/videoinput
+ $RM_RF $VIDEOINPUT
+fi
+
+# OpenCV
+# This is optional and is used to enable webcam features.
+OPENCV="OpenCV-2.1.0"
+if test ! -f "$PREFIX"/build-stamps/opencv; then
+ download http://download.sourceforge.net/opencvlibrary/$OPENCV-win.zip
+ unzip -o $OPENCV-win.zip
+ cd $OPENCV
+ ln -s ../deps/include/videoInput.h /src/highgui/videoinput.h
+ mkdir -pv build
+ cd build
+ cmake \
+ -DCMAKE_TOOLCHAIN_FILE="$SCRIPTDIR/Toolchain.cmake" \
+ -DBUILD_NEW_PYTHON_SUPPORT=OFF \
+ -DBUILD_TESTS=OFF \
+ -DWITH_JASPER=OFF -DWITH_JPEG=OFF -DWITH_PNG=OFF -DWITH_TBB=OFF -DWITH_TIFF=OFF \
+ -DCMAKE_INSTALL_PREFIX="$PREFIX" \
+ ..
+ make
+ make install
+ cp -v unix-install/opencv.pc "$PREFIX"/lib/pkgconfig # No auto-install :(
+ pushd .
+ cd "$PREFIX"/lib
+ # Create some symlinks so the cmake scripts detect it correctly
+ ln -svf libcv210.dll.a libcv.dll.a
+ ln -svf libcxcore210.dll.a libcxcore.dll.a
+ ln -svf libcvaux210.dll.a libcvaux.dll.a
+ ln -svf libhighgui210.dll.a libhighgui.dll.a
+ popd
+ cd ../..
+ touch "$PREFIX"/build-stamps/opencv
+ $RM_RF $OPENCV
+fi
+
+echo "All dependencies done."
|