Skip to content

Commit cca552f

Browse files
committed
Add an external module, cvsba
1 parent c5adbc4 commit cca552f

24 files changed

Lines changed: 17906 additions & 0 deletions

EXTERNAL/cvsba/CMakeLists.txt

Lines changed: 331 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,331 @@
1+
# ----------------------------------------------------------------------------
2+
# Basic Configuration
3+
# ----------------------------------------------------------------------------
4+
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
5+
6+
PROJECT(cvsba)
7+
set(PROJECT_VERSION "1.0.0")
8+
string(REGEX MATCHALL "[0-9]" PROJECT_VERSION_PARTS "${PROJECT_VERSION}")
9+
list(GET PROJECT_VERSION_PARTS 0 PROJECT_VERSION_MAJOR)
10+
list(GET PROJECT_VERSION_PARTS 1 PROJECT_VERSION_MINOR)
11+
list(GET PROJECT_VERSION_PARTS 2 PROJECT_VERSION_PATCH)
12+
set(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
13+
14+
#------------------------------------------------------
15+
# Build type
16+
#------------------------------------------------------
17+
18+
IF(NOT CMAKE_BUILD_TYPE )
19+
SET( CMAKE_BUILD_TYPE "Debug" )
20+
ENDIF()
21+
22+
#------------------------------------------------------
23+
# Lib Names and Dirs
24+
#------------------------------------------------------
25+
26+
if(WIN32)
27+
# Postfix of DLLs:
28+
SET(PROJECT_DLLVERSION "${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH}")
29+
SET(RUNTIME_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Directory for dlls and binaries")
30+
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Directory for binaries")
31+
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Directory for dlls")
32+
else()
33+
# Postfix of so's:
34+
set(PROJECT_DLLVERSION)
35+
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_INSTALL_PREFIX}/lib/cmake/ /usr/lib/cmake)
36+
37+
endif()
38+
39+
40+
41+
#
42+
OPTION(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON)
43+
OPTION(BUILD_UTILS "Set to OFF to not build utils" ON)
44+
45+
# ----------------------------------------------------------------------------
46+
# Find Dependencies
47+
# ----------------------------------------------------------------------------
48+
49+
####################### FIND DEPENDENCIES
50+
find_library(LAPACK_LIB NAMES lapack )
51+
IF( ${LAPACK_LIB} STREQUAL "LAPACK_LIB-NOTFOUND")
52+
message(FATAL_ERROR "lapack library not found")
53+
ELSE()
54+
message(STATUS "lapack = ${LAPACK_LIB}")
55+
ENDIF()
56+
57+
#FIND BLAS
58+
find_library(BLAS_LIB NAMES blas )
59+
IF( ${BLAS_LIB} STREQUAL "BLAS_LIB-NOTFOUND")
60+
message(FATAL_ERROR "blas library not found")
61+
ELSE()
62+
message(STATUS "blas = ${BLAS_LIB}")
63+
ENDIF()
64+
#FIND f2c
65+
find_library(F2C_LIB NAMES f2c )
66+
IF(${F2C_LIB} STREQUAL "F2C_LIB-NOTFOUND")
67+
SET(HAVE_F2C 0)
68+
find_library(F77_LIB NAMES F77 )
69+
find_library(I77_LIB NAMES IF77 )
70+
IF( (${F77_LIB} STREQUAL "F77_LIB-NOTFOUND") OR ( ${I77_LIB} STREQUAL "I77_LIB-NOTFOUND"))
71+
message(FATAL_ERROR "NOT F2C NOR F77/IF77")
72+
ENDIF()
73+
ELSE()
74+
SET(HAVE_F2C 1)
75+
message(STATUS "f2c = ${F2C_LIB}")
76+
ENDIF()
77+
78+
#add OpenCV library
79+
FIND_PACKAGE(OpenCV REQUIRED )
80+
81+
SET(REQUIRED_LIBRARIES ${BLAS_LIB} ${LAPACK_LIB} ${F2C_LIB} ${OpenCV_LIBS} )
82+
83+
FIND_PACKAGE(OpenMP)
84+
if(OPENMP_FOUND)
85+
message(STATUS "Compiling With openmp support")
86+
OPTION(ENABLE_OPENMP "Set to OFF to disable OpenMP libraries" ON)
87+
IF(NOT WIN32)
88+
SET(REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} -lgomp)
89+
ENDIF()
90+
else()
91+
message(STATUS "Compiling WithOUT openmp support")
92+
OPTION(ENABLE_OPENMP "Set to OFF to disable OpenMP libraries" OFF)
93+
endif()
94+
95+
96+
97+
# ----------------------------------------------------------------------------
98+
# PROJECT CONFIGURATION
99+
# force some variables that could be defined in the command line to be written to cache
100+
# ----------------------------------------------------------------------------
101+
OPTION(INSTALL_DOC "Set to ON to build/install Documentation" OFF)
102+
IF (INSTALL_DOC)
103+
FIND_PACKAGE(Doxygen REQUIRED)
104+
MESSAGE( STATUS "INSTALL_DOC: ${INSTALL_DOC} ")
105+
INCLUDE("${PROJECT_SOURCE_DIR}/generateDoc.cmake")
106+
GENERATE_DOCUMENTATION(${PROJECT_SOURCE_DIR}/dox.in)
107+
ENDIF()
108+
109+
# ----------------------------------------------------------------------------
110+
# Uninstall target, for "make uninstall"
111+
# ----------------------------------------------------------------------------
112+
CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
113+
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
114+
115+
# ----------------------------------------------------------------------------
116+
# create configuration file from .in file (If you use windows take care with paths)
117+
# ----------------------------------------------------------------------------
118+
119+
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/config.cmake.in" "${PROJECT_BINARY_DIR}/Find${PROJECT_NAME}.cmake")
120+
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/config.cmake.in" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake")
121+
INSTALL(FILES "${PROJECT_BINARY_DIR}/Find${PROJECT_NAME}.cmake" DESTINATION lib/cmake/ )
122+
123+
124+
125+
126+
# ----------------------------------------------------------------------------
127+
# Program Optimization and debug (Extracted from OpenCV)
128+
# ----------------------------------------------------------------------------
129+
set(WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors")
130+
set(WHOLE_PROGRAM_OPTIMIZATION OFF CACHE BOOL "Flags for whole program optimization.")
131+
132+
set(EXTRA_C_FLAGS "")
133+
set(EXTRA_C_FLAGS_RELEASE "")
134+
set(EXTRA_C_FLAGS_DEBUG "")
135+
set(EXTRA_EXE_LINKER_FLAGS "")
136+
set(EXTRA_EXE_LINKER_FLAGS_RELEASE "")
137+
set(EXTRA_EXE_LINKER_FLAGS_DEBUG "")
138+
139+
IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
140+
set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)")
141+
set(USE_OMIT_FRAME_POINTER ON CACHE BOOL "Enable -fomit-frame-pointer for GCC")
142+
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES arm*) # We can use only -O2 because the -O3 causes gcc crash
143+
set(USE_O2 ON CACHE BOOL "Enable -O2 for GCC")
144+
set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")
145+
endif()
146+
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*)
147+
set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")
148+
set(USE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC")
149+
endif ()
150+
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)
151+
set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")
152+
set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")
153+
set(USE_MMX ON CACHE BOOL "Enable MMX for GCC")
154+
set(USE_SSE ON CACHE BOOL "Enable SSE for GCC")
155+
set(USE_SSE2 ON CACHE BOOL "Enable SSE2 for GCC")
156+
set(USE_SSE3 ON CACHE BOOL "Enable SSE3 for GCC")
157+
endif()
158+
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86)
159+
set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")
160+
set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")
161+
set(USE_MMX ON CACHE BOOL "Enable MMX for GCC")
162+
set(USE_SSE OFF CACHE BOOL "Enable SSE for GCC")
163+
set(USE_SSE2 OFF CACHE BOOL "Enable SSE2 for GCC")
164+
set(USE_SSE3 OFF CACHE BOOL "Enable SSE3 for GCC")
165+
endif ()
166+
167+
set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall")
168+
169+
if(WARNINGS_ARE_ERRORS)
170+
set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror")
171+
endif()
172+
173+
# The -Wno-long-long is required in 64bit systems when including sytem headers.
174+
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*)
175+
set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long")
176+
endif()
177+
178+
# Whole program optimization
179+
if(WHOLE_PROGRAM_OPTIMIZATION)
180+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fwhole-program --combine")
181+
endif()
182+
183+
# Other optimizations
184+
if(USE_OMIT_FRAME_POINTER)
185+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fomit-frame-pointer")
186+
endif()
187+
if(USE_O2)
188+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O2")
189+
endif()
190+
if(USE_O3)
191+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O3")
192+
endif()
193+
if(USE_FAST_MATH)
194+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math")
195+
endif()
196+
if(USE_POWERPC)
197+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=G3 -mtune=G5")
198+
endif()
199+
if(USE_MMX)
200+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mmmx")
201+
endif()
202+
if(USE_SSE)
203+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse")
204+
endif()
205+
if(USE_SSE2)
206+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse2")
207+
endif()
208+
if(USE_SSE3 AND NOT MINGW) # SSE3 should be disabled under MingW because it generates compiler errors
209+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3")
210+
endif()
211+
212+
if(ENABLE_PROFILING)
213+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -pg -g")
214+
else()
215+
if(NOT APPLE)
216+
set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -ffunction-sections")
217+
endif()
218+
endif()
219+
220+
# Parallel mode
221+
if(ENABLE_OPENMP)
222+
add_definitions(-DUSE_OMP)
223+
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
224+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
225+
set(LINKER_LIBS ${LINKER_LIBS} gomp)
226+
endif()
227+
IF(${CMAKE_SYSTEM_PROCESSOR} MATCHES armv7l) # In ARM_COrtex8 with neon, enalble vectorized operations
228+
SET(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -ftree-vectorize ")
229+
ENDIF()
230+
231+
232+
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")
233+
set(EXTRA_C_FLAGS_DEBUG "-g3 -O0 -DDEBUG -D_DEBUG -W -Wextra -Wno-return-type")
234+
235+
MESSAGE( STATUS "-------------------------------------------------------------------------------" )
236+
message( STATUS "GNU COMPILER")
237+
MESSAGE( STATUS "-------------------------------------------------------------------------------" )
238+
239+
240+
241+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS}")
242+
SET(CMAKE_CXX_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE}")
243+
SET(CMAKE_CXX_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG}")
244+
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS}")
245+
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE}")
246+
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG}")
247+
248+
249+
ELSE() # MSVC
250+
251+
if(ENABLE_OPENMP)
252+
add_definitions( -DUSE_OMP)
253+
add_definitions( -Dopenmp)
254+
ENDIF()
255+
256+
257+
ENDIF()#END OF COMPILER SPECIFIC OPTIONS
258+
259+
260+
# ----------------------------------------------------------------------------
261+
# PACKAGE GENERATOR
262+
# ----------------------------------------------------------------------------
263+
264+
IF (UNIX)
265+
SET(CPACK_GENERATOR "DEB")
266+
SET(CPACK_PACKAGE_CONTACT "rmsalinas@uco.es")
267+
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "rmsalinas@uco.es")
268+
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ArUco Library")
269+
SET(CPACK_PACKAGE_VENDOR "Rafael Munoz-Salinas. AVA Group. University of Cordoba. Spain")
270+
SET(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
271+
SET(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
272+
SET(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
273+
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
274+
SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
275+
SET(CPACK_STRIP_FILES "bin/lib${PROJECT_NAME}")
276+
SET(CPACK_SOURCE_STRIP_FILES "")
277+
SET(CPACK_PACKAGING_INSTALL_PREFIX "/usr/")
278+
IF (CPACK_GENERATOR STREQUAL "DEB")
279+
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "opencv (>= 2.1.0)")
280+
ENDIF()
281+
INCLUDE(CPack)
282+
ENDIF()
283+
284+
#------------------------------------------------
285+
# DIRS
286+
#------------------------------------------------
287+
ADD_SUBDIRECTORY(src)
288+
ADD_SUBDIRECTORY(utils)
289+
290+
291+
292+
# ----------------------------------------------------------------------------
293+
# display status message for important variables
294+
# ----------------------------------------------------------------------------
295+
message( STATUS )
296+
MESSAGE( STATUS "-------------------------------------------------------------------------------" )
297+
message( STATUS "General configuration for ${PROJECT_NAME} ${PROJECT_VERSION}")
298+
MESSAGE( STATUS "-------------------------------------------------------------------------------" )
299+
message( STATUS )
300+
message(" Built as dynamic libs?:" ${BUILD_SHARED_LIBS})
301+
message(" Compiler:" "${CMAKE_COMPILER}" "${CMAKE_CXX_COMPILER}")
302+
message( STATUS "C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
303+
message( STATUS "C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
304+
message( STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
305+
message( STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
306+
307+
MESSAGE( STATUS )
308+
MESSAGE( STATUS "CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}" )
309+
MESSAGE( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )
310+
MESSAGE( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )
311+
MESSAGE( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )
312+
MESSAGE( STATUS "CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}" )
313+
MESSAGE( STATUS "BUILD_UTILS= ${BUILD_UTILS}" )
314+
MESSAGE( STATUS "BUILD_TESTS= ${BUILD_TESTS}" )
315+
316+
317+
MESSAGE( STATUS )
318+
MESSAGE( STATUS "--------------------------- Documentation -----------------------------" )
319+
MESSAGE( STATUS )
320+
MESSAGE( STATUS "INSTALL_DOC = ${INSTALL_DOC}" )
321+
MESSAGE( STATUS "USE_LATEX = ${USE_LATEX}" )
322+
MESSAGE( STATUS "USE_DOT = ${USE_DOT}" )
323+
MESSAGE( STATUS "USE_CHM = ${USE_CHM}" )
324+
MESSAGE( STATUS )
325+
MESSAGE( STATUS "OpenCV_LIB_DIR=${OpenCV_LIB_DIR}")
326+
MESSAGE( STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}")
327+
328+
MESSAGE( STATUS )
329+
MESSAGE( STATUS )
330+
MESSAGE( STATUS "Change a value with: cmake -D<Variable>=<Value>" )
331+
MESSAGE( STATUS )

0 commit comments

Comments
 (0)