Fixed Threshold Button Not Applying Threshold
[EconoBoard.git] / cmake / CMakeModules / FindOpenCV.cmake
blob861c76fe912a89629b6fcb45a760924fb7a48bb1
1 # - Try to find OpenCV library installation\r
2 # See http://sourceforge.net/projects/opencvlibrary/\r
3 #\r
4 # The follwoing variables are optionally searched for defaults\r
5 #  OpenCV_ROOT_DIR:            Base directory of OpenCv tree to use.\r
6 #  OpenCV_FIND_REQUIRED_COMPONENTS : FIND_PACKAGE(OpenCV COMPONENTS ..) \r
7 #    compatible interface. typically  CV CXCORE CVAUX HIGHGUI CVCAM .. etc.\r
8 #\r
9 # The following are set after configuration is done: \r
10 #  OpenCV_FOUND\r
11 #  OpenCV_INCLUDE_DIR\r
12 #  OpenCV_LIBRARIES\r
13 #  OpenCV_LINK_DIRECTORIES\r
14 #\r
15 # deprecated:\r
16 #  OPENCV_* uppercase replaced by case sensitive OpenCV_*\r
17 #  OPENCV_EXE_LINKER_FLAGS\r
18 #  OPENCV_INCLUDE_DIR : replaced by plural *_DIRS\r
19 \r
20 # 2004/05 Jan Woetzel, Friso, Daniel Grest \r
21 # 2006/01 complete rewrite by Jan Woetzel\r
22 # 1006/09 2nd rewrite introducing ROOT_DIR and PATH_SUFFIXES \r
23 #   to handle multiple installed versions gracefully by Jan Woetzel\r
24 #\r
25 # tested with:\r
26 # -OpenCV 0.97 (beta5a):  MSVS 7.1, gcc 3.3, gcc 4.1\r
27 # -OpenCV 0.99 (1.0rc1):  MSVS 7.1\r
28 #\r
29 # www.mip.informatik.uni-kiel.de/~jw\r
30 # --------------------------------\r
33 MACRO(DBG_MSG _MSG)\r
34   #  MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}):\n${_MSG}")\r
35 ENDMACRO(DBG_MSG)\r
39 # required cv components with header and library if COMPONENTS unspecified\r
40 IF    (NOT OpenCV_FIND_COMPONENTS)\r
41   # default\r
42   SET(OpenCV_FIND_REQUIRED_COMPONENTS   CV CXCORE CVAUX HIGHGUI )\r
43   IF   (WIN32)\r
44     LIST(APPEND OpenCV_FIND_REQUIRED_COMPONENTS  CVCAM ) # WIN32 only actually\r
45   ENDIF(WIN32)  \r
46 ENDIF (NOT OpenCV_FIND_COMPONENTS)\r
49 # typical root dirs of installations, exactly one of them is used\r
50 SET (OpenCV_POSSIBLE_ROOT_DIRS\r
51   "${OpenCV_ROOT_DIR}"\r
52   "$ENV{OpenCV_ROOT_DIR}"  \r
53   "$ENV{OPENCV_DIR}"  # only for backward compatibility deprecated by ROOT_DIR\r
54   "$ENV{OPENCV_HOME}" # only for backward compatibility\r
55   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Intel(R) Open Source Computer Vision Library_is1;Inno Setup: App Path]"\r
56   "$ENV{ProgramFiles}/OpenCV"\r
57   /usr/local\r
58   /usr\r
59   )\r
62 # MIP Uni Kiel /opt/net network installation \r
63 # get correct prefix for current gcc compiler version for gcc 3.x  4.x\r
64 IF    (${CMAKE_COMPILER_IS_GNUCXX})\r
65   IF    (NOT OpenCV_FIND_QUIETLY)\r
66     MESSAGE(STATUS "Checking GNUCXX version 3/4 to determine  OpenCV /opt/net/ path")\r
67   ENDIF (NOT OpenCV_FIND_QUIETLY)\r
68   EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE CXX_COMPILER_VERSION)  \r
69   IF   (CXX_COMPILER_VERSION MATCHES ".*3\\.[0-9].*")\r
70     SET(IS_GNUCXX3 TRUE)\r
71     LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc33/OpenCV )\r
72   ENDIF(CXX_COMPILER_VERSION MATCHES ".*3\\.[0-9].*")  \r
73   IF   (CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")\r
74     SET(IS_GNUCXX4 TRUE)\r
75     LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc41/OpenCV )\r
76   ENDIF(CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")\r
77 ENDIF (${CMAKE_COMPILER_IS_GNUCXX})\r
79 #DBG_MSG("DBG (OpenCV_POSSIBLE_ROOT_DIRS=${OpenCV_POSSIBLE_ROOT_DIRS}")\r
81 #\r
82 # select exactly ONE OpenCV base directory/tree \r
83 # to avoid mixing different version headers and libs\r
84 #\r
85 FIND_PATH(OpenCV_ROOT_DIR \r
86   NAMES \r
87   cv/include/cv.h     # windows\r
88   include/opencv/cv.h # linux /opt/net\r
89   include/cv/cv.h \r
90   include/cv.h \r
91   PATHS ${OpenCV_POSSIBLE_ROOT_DIRS})\r
92 DBG_MSG("OpenCV_ROOT_DIR=${OpenCV_ROOT_DIR}")\r
95 # header include dir suffixes appended to OpenCV_ROOT_DIR\r
96 SET(OpenCV_INCDIR_SUFFIXES\r
97   include\r
98   include/cv\r
99   include/opencv\r
100   cv/include\r
101   cxcore/include\r
102   cvaux/include\r
103   otherlibs/cvcam/include\r
104   otherlibs/highgui\r
105   otherlibs/highgui/include\r
106   otherlibs/_graphics/include\r
107   )\r
109 # library linkdir suffixes appended to OpenCV_ROOT_DIR \r
110 SET(OpenCV_LIBDIR_SUFFIXES\r
111   lib\r
112   OpenCV/lib\r
113   otherlibs/_graphics/lib\r
114   )\r
115 #DBG_MSG("OpenCV_LIBDIR_SUFFIXES=${OpenCV_LIBDIR_SUFFIXES}")\r
119 # find incdir for each lib\r
121 FIND_PATH(OpenCV_CV_INCLUDE_DIR\r
122   NAMES cv.h      \r
123   PATHS ${OpenCV_ROOT_DIR} \r
124   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )\r
125 FIND_PATH(OpenCV_CXCORE_INCLUDE_DIR   \r
126   NAMES cxcore.h\r
127   PATHS ${OpenCV_ROOT_DIR} \r
128   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )\r
129 FIND_PATH(OpenCV_CVAUX_INCLUDE_DIR    \r
130   NAMES cvaux.h\r
131   PATHS ${OpenCV_ROOT_DIR} \r
132   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )\r
133 FIND_PATH(OpenCV_HIGHGUI_INCLUDE_DIR  \r
134   NAMES highgui.h \r
135   PATHS ${OpenCV_ROOT_DIR} \r
136   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )\r
137 FIND_PATH(OpenCV_CVCAM_INCLUDE_DIR    \r
138   NAMES cvcam.h \r
139   PATHS ${OpenCV_ROOT_DIR} \r
140   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )\r
143 # find sbsolute path to all libraries \r
144 # some are optionally, some may not exist on Linux\r
146 FIND_LIBRARY(OpenCV_CV_LIBRARY   \r
147   NAMES cv opencv\r
148   PATHS ${OpenCV_ROOT_DIR}  \r
149   PATH_SUFFIXES  ${OpenCV_LIBDIR_SUFFIXES} )\r
150 FIND_LIBRARY(OpenCV_CVAUX_LIBRARY\r
151   NAMES cvaux\r
152   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )\r
153 FIND_LIBRARY(OpenCV_CVCAM_LIBRARY   \r
154   NAMES cvcam\r
155   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} ) \r
156 FIND_LIBRARY(OpenCV_CVHAARTRAINING_LIBRARY\r
157   NAMES cvhaartraining\r
158   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} ) \r
159 FIND_LIBRARY(OpenCV_CXCORE_LIBRARY  \r
160   NAMES cxcore\r
161   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )\r
162 FIND_LIBRARY(OpenCV_CXTS_LIBRARY   \r
163   NAMES cxts\r
164   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )\r
165 FIND_LIBRARY(OpenCV_HIGHGUI_LIBRARY  \r
166   NAMES highgui\r
167   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )\r
168 FIND_LIBRARY(OpenCV_ML_LIBRARY  \r
169   NAMES ml\r
170   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )\r
171 FIND_LIBRARY(OpenCV_TRS_LIBRARY  \r
172   NAMES trs\r
173   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )\r
178 # Logic selecting required libs and headers\r
180 SET(OpenCV_FOUND ON)\r
181 DBG_MSG("OpenCV_FIND_REQUIRED_COMPONENTS=${OpenCV_FIND_REQUIRED_COMPONENTS}")\r
182 FOREACH(NAME ${OpenCV_FIND_REQUIRED_COMPONENTS} )\r
184   # only good if header and library both found   \r
185   IF    (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)\r
186     LIST(APPEND OpenCV_INCLUDE_DIRS ${OpenCV_${NAME}_INCLUDE_DIR} )\r
187     LIST(APPEND OpenCV_LIBRARIES    ${OpenCV_${NAME}_LIBRARY} )\r
188     #DBG_MSG("appending for NAME=${NAME} ${OpenCV_${NAME}_INCLUDE_DIR} and ${OpenCV_${NAME}_LIBRARY}" )\r
189   ELSE  (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)\r
190     DBG_MSG("OpenCV component NAME=${NAME} not found! "\r
191       "\nOpenCV_${NAME}_INCLUDE_DIR=${OpenCV_${NAME}_INCLUDE_DIR} "\r
192       "\nOpenCV_${NAME}_LIBRARY=${OpenCV_${NAME}_LIBRARY} ")\r
193     SET(OpenCV_FOUND OFF)\r
194   ENDIF (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)\r
195   \r
196 ENDFOREACH(NAME)\r
198 DBG_MSG("OpenCV_INCLUDE_DIRS=${OpenCV_INCLUDE_DIRS}")\r
199 DBG_MSG("OpenCV_LIBRARIES=${OpenCV_LIBRARIES}")\r
201 # get the link directory for rpath to be used with LINK_DIRECTORIES: \r
202 IF    (OpenCV_CV_LIBRARY)\r
203   GET_FILENAME_COMPONENT(OpenCV_LINK_DIRECTORIES ${OpenCV_CV_LIBRARY} PATH)\r
204 ENDIF (OpenCV_CV_LIBRARY)\r
206 MARK_AS_ADVANCED(\r
207   OpenCV_ROOT_DIR\r
208   OpenCV_INCLUDE_DIRS\r
209   OpenCV_CV_INCLUDE_DIR\r
210   OpenCV_CXCORE_INCLUDE_DIR\r
211   OpenCV_CVAUX_INCLUDE_DIR\r
212   OpenCV_CVCAM_INCLUDE_DIR\r
213   OpenCV_HIGHGUI_INCLUDE_DIR\r
214   OpenCV_LIBRARIES\r
215   OpenCV_CV_LIBRARY\r
216   OpenCV_CXCORE_LIBRARY\r
217   OpenCV_CVAUX_LIBRARY\r
218   OpenCV_CVCAM_LIBRARY\r
219   OpenCV_CVHAARTRAINING_LIBRARY\r
220   OpenCV_CXTS_LIBRARY\r
221   OpenCV_HIGHGUI_LIBRARY\r
222   OpenCV_ML_LIBRARY\r
223   OpenCV_TRS_LIBRARY\r
224   )\r
227 # be backward compatible:\r
228 SET(OPENCV_LIBRARIES   ${OpenCV_LIBRARIES} )\r
229 SET(OPENCV_INCLUDE_DIR ${OpenCV_INCLUDE_DIRS} )\r
230 SET(OPENCV_FOUND       ${OpenCV_FOUND})\r
234 # display help message\r
235 IF(NOT OpenCV_FOUND)\r
236   # make FIND_PACKAGE friendly\r
237   IF(NOT OpenCV_FIND_QUIETLY)\r
238     IF(OpenCV_FIND_REQUIRED)\r
239       MESSAGE(FATAL_ERROR\r
240         "OpenCV required but some headers or libs not found. Please specify it's location with OpenCV_ROOT_DIR env. variable.")\r
241     ELSE(OpenCV_FIND_REQUIRED)\r
242       MESSAGE(STATUS \r
243         "ERROR: OpenCV was not found.")\r
244     ENDIF(OpenCV_FIND_REQUIRED)\r
245   ENDIF(NOT OpenCV_FIND_QUIETLY)\r
246 ENDIF(NOT OpenCV_FOUND)\r