Skip to content

Commit 0aa3ecb

Browse files
committed
Initial publication
1 parent e069e75 commit 0aa3ecb

File tree

11,020 files changed

+3653711
-666
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

11,020 files changed

+3653711
-666
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
diff.txt
2+
temp

3rdparty/CMakeLists.txt

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
cmake_minimum_required(VERSION 3.0)
2+
3+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
4+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} PARENT_SCOPE)
5+
6+
include(config_external_project)
7+
8+
set(FREEGLUT_ROOT_DIR freeglut-2.8.1)
9+
set(GLEW_ROOT_DIR glew-1.11.0)
10+
set(EIGEN_ROOT_DIR eigen-3.2.2)
11+
set(GFLAGS_ROOT_DIR gflags-2.1.1)
12+
set(GLOG_ROOT_DIR glog-0.3.3)
13+
set(SUITESPARSE_METIS_ROOT_DIR suitesparse-metis-for-windows-1.2.1)
14+
set(CERES_SOLVER_ROOT_DIR ceres-solver-1.9.0)
15+
set(OPENCV_ROOT_DIR opencv-git)
16+
17+
set(DEBUG_DLL_GLOB_PATTERNS)
18+
set(RELEASE_DLL_GLOB_PATTERNS)
19+
20+
# freeglut --------------------------------------------------
21+
ConfigExternalProject(freeglut
22+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/freeglut_cmake
23+
CMAKE_ARGS -DFREEGLUT_ROOT_DIR:STRING=${FREEGLUT_ROOT_DIR}
24+
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE)
25+
26+
# glew --------------------------------------------------
27+
ConfigExternalProject(glew
28+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glew_cmake
29+
CMAKE_ARGS -DGLEW_ROOT_DIR:STRING=${GLEW_ROOT_DIR}
30+
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE)
31+
32+
# opencv ----------------------------------------------------
33+
ConfigExternalProject(OpenCV
34+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${OPENCV_ROOT_DIR}
35+
CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=TRUE
36+
CMAKE_CACHE_ARGS -DWITH_CUDA:BOOL=OFF
37+
-DBUILD_PERF_TESTS:BOOL=OFF
38+
-DBUILD_TESTS:BOOL=OFF
39+
-DBUILD_EXAMPLES:BOOL=OFF
40+
-DBUILD_DOCS:BOOL=OFF
41+
-DBUILD_ANDROID_EXAMPLES:BOOL=OFF
42+
-DBUILD_WITH_STATIC_CRT:BOOL=OFF
43+
-DWITH_TESTS:BOOL=OFF)
44+
set(OpenCV_STATIC OFF CACHE BOOL "")
45+
list(APPEND DEBUG_DLL_GLOB_PATTERNS "${EP_PREFIX}/${OpenCV_ARCH}/${OpenCV_RUNTIME}/bin/*0d.dll")
46+
list(APPEND DEBUG_DLL_GLOB_PATTERNS "${EP_PREFIX}/${OpenCV_ARCH}/${OpenCV_RUNTIME}/bin/opencv_ffmpeg300.dll") #FFMPEG has no debug version
47+
list(APPEND RELEASE_DLL_GLOB_PATTERNS "${EP_PREFIX}/${OpenCV_ARCH}/${OpenCV_RUNTIME}/bin/*0.dll")
48+
49+
# gflags -----------------------------------------------------------------
50+
ConfigExternalProject(gflags
51+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${GFLAGS_ROOT_DIR}
52+
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE
53+
CMAKE_CACHE_ARGS -DGFLAGS_NAMESPACE:STRING=google)
54+
55+
# we must fix the gflags-config, the gflags target is gflags-static!
56+
if(WIN32)
57+
set(gflags_DIR "${EP_PREFIX}/CMake")
58+
else()
59+
set(gflags_DIR "${EP_PREFIX}/lib/cmake/gflags")
60+
endif()
61+
file(STRINGS "${gflags_DIR}/gflags-config.cmake" NVMARK REGEX "NVMARK")
62+
if(NOT NVMARK AND EXISTS "${gflags_DIR}/gflags-config.cmake")
63+
file(APPEND "${gflags_DIR}/gflags-config.cmake"
64+
"\n# NVMARK\nset(gflags_LIBRARIES gflags-static)\n")
65+
endif()
66+
67+
68+
# glog --------------------------------------------------------------------
69+
ConfigExternalProject(glog
70+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glog_cmake
71+
CMAKE_ARGS -DGLOG_ROOT_DIR:STRING=${GLOG_ROOT_DIR}
72+
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE
73+
CMAKE_CACHE_ARGS -DCMAKE_DEBUG_POSTFIX:STRING= )
74+
75+
# suitesparse-metis -------------------------------------------------------
76+
set(suitesparse_dir "${CMAKE_CURRENT_SOURCE_DIR}/${SUITESPARSE_METIS_ROOT_DIR}")
77+
set(CFLAGS -Didxtype=idx_t)
78+
if(WIN32)
79+
set(SuiteSparse_USE_LAPACK_BLAS ON)
80+
set(WIN32_COMPLEX_FIX -DHAVE_COMPLEX_H:BOOL=OFF)
81+
endif()
82+
83+
# SuiteSparse can't be compiled as dynamic library on Windows because it
84+
# doesn't specify dllexports
85+
ConfigExternalProject(SuiteSparse
86+
SOURCE_DIR ${suitesparse_dir}
87+
CMAKE_ARGS -DCMAKE_C_FLAGS:STRING=${CFLAGS}
88+
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE
89+
CMAKE_CACHE_ARGS -DGKLIB_PATH:PATH=${suitesparse_dir}/metis/GKlib
90+
-DSUITESPARSE_INSTALL_PREFIX:PATH=${EP_PREFIX}
91+
${WIN32_COMPLEX_FIX}
92+
-DCMAKE_DEBUG_POSTFIX:STRING=)
93+
94+
#file(STRINGS "${EP_PREFIX}/SuiteSparseConfig.cmake" NVMARK REGEX "NVMARK")
95+
#if(NOT NVMARK AND EXISTS "${EP_PREFIX}/SuiteSparseConfig.cmake")
96+
# file(APPEND "${EP_PREFIX}/SuiteSparseConfig.cmake"
97+
# "\n# NVMARK\ninclude(\${USE_SuiteSparse})\nmessage(AQUI------------------)\n")
98+
#endif()
99+
100+
if(WIN32)
101+
list(APPEND DEBUG_DLL_GLOB_PATTERNS "${EP_PREFIX}/lib/lapack_blas_windows/*.dll")
102+
list(APPEND RELEASE_DLL_GLOB_PATTERNS "${EP_PREFIX}/lib/lapack_blas_windows/*.dll")
103+
endif()
104+
105+
# eigen -------------------------------------------------------
106+
ConfigExternalProject(Eigen
107+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${EIGEN_ROOT_DIR}
108+
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE)
109+
add_library(eigen INTERFACE)
110+
set(EIGEN_INCLUDE_DIR ${EP_PREFIX}/include/eigen3)
111+
target_include_directories(eigen INTERFACE ${EIGEN_INCLUDE_DIR})
112+
113+
# ceres-solver ----------------------------------------------
114+
if(NOT MSVC)
115+
set(CXXFLAGS -Wno-error=unused-local-typedefs)
116+
else()
117+
set(CXXFLAGS "/DGOOGLE_GLOG_DLL_DECL= /MP")
118+
endif()
119+
120+
if(WIN32)
121+
set(blas_lapack_packages MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/lapack)
122+
endif()
123+
124+
ConfigExternalProject(Ceres
125+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${CERES_SOLVER_ROOT_DIR}
126+
${blas_lapack_packages}
127+
CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=TRUE
128+
CMAKE_CACHE_ARGS
129+
-DCXSPARSE_LIBRARY:PATH=
130+
-DCMAKE_CXX_FLAGS:STRING=${CXXFLAGS}
131+
-DBUILD_TESTING:BOOL=OFF
132+
-DBUILD_EXAMPLES:BOOL=OFF
133+
-DSuiteSparse_USE_LAPACK_BLAS:BOOL=TRUE
134+
-DEIGEN_INCLUDE_DIR_HINTS:PATH=${EIGEN_INCLUDE_DIR}
135+
-DSUITESPARSE_INCLUDE_DIR_HINTS:PATH=${EP_PREFIX}/include/suitesparse
136+
-DCXSPARSE_CHECK_INCLUDE_DIRS:PATH=${EP_PREFIX}/include/suitesparse
137+
"-DSUITESPARSE_LIBRARY_DIR_HINTS:STRING=${EP_PREFIX}/lib\\\;${EP_PREFIX}/lib64"
138+
"-DCXSPARSE_CHECK_LIBRARY_DIRS:STRING=${EP_PREFIX}/lib\\\;${EP_PREFIX}/lib64")
139+
140+
# ceres is such a pain... it insists in using its own Find*, we need to use
141+
# ours...
142+
if(WIN32)
143+
set(Ceres_DIR "${EP_PREFIX}/CMake")
144+
list(APPEND DEBUG_DLL_GLOB_PATTERNS "${EP_PREFIX}/bin/ceres-debug.dll")
145+
list(APPEND RELEASE_DLL_GLOB_PATTERNS "${EP_PREFIX}/bin/ceres.dll")
146+
else()
147+
set(Ceres_DIR "${EP_PREFIX}/share/Ceres")
148+
endif()
149+
execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindGlog.cmake" "${Ceres_DIR}")
150+
151+
if(WIN32)
152+
file(GLOB RELEASE_DLL_LIBRARIES ${RELEASE_DLL_GLOB_PATTERNS})
153+
set(RELEASE_DLL_LIBRARIES "${RELEASE_DLL_LIBRARIES}" CACHE STRING "")
154+
155+
file(GLOB DEBUG_DLL_LIBRARIES ${DEBUG_DLL_GLOB_PATTERNS})
156+
set(DEBUG_DLL_LIBRARIES "${DEBUG_DLL_LIBRARIES}" CACHE STRING "")
157+
endif()

0 commit comments

Comments
 (0)