-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathceres.cmake
66 lines (66 loc) · 2.3 KB
/
ceres.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# ceres
# xpbuild:cmake-patch
xpProOption(ceres DBG)
set(VER 1.14.0)
set(REPO https://github.com/ceres-solver/ceres-solver)
set(FORK https://github.com/smanders/ceres-solver)
set(PRO_CERES
NAME ceres
WEB "ceres-solver" http://ceres-solver.org "Ceres Solver website"
LICENSE "open" "http://ceres-solver.org/license.html" "New BSD License"
DESC "C++ library for modeling and solving large, complicated optimization problems"
REPO "repo" ${REPO} "ceres-solver repo on github"
GRAPH BUILD_DEPS eigen
VER ${VER}
GIT_ORIGIN ${FORK}
GIT_UPSTREAM ${REPO}
GIT_TAG xp${VER} # what to 'git checkout'
GIT_REF ${VER} # create patch from this tag to 'git checkout'
DLURL ${REPO}/archive/${VER}.tar.gz
DLMD5 c3a63fa496468cbe65536f1f34c5609b
DLNAME ceres-solver-${VER}.tar.gz
PATCH ${PATCH_DIR}/ceres.patch
DIFF ${FORK}/compare/ceres-solver:
)
########################################
function(build_ceres)
if(NOT (XP_DEFAULT OR XP_PRO_CERES))
return()
endif()
xpBuildDeps(depTgts ${PRO_CERES}) # defines EIGEN_INCDIR
xpGetArgValue(${PRO_CERES} ARG NAME VALUE NAME)
xpGetArgValue(${PRO_CERES} ARG VER VALUE VER)
set(XP_CONFIGURE
-DCMAKE_INSTALL_INCLUDEDIR=include/${NAME}_${VER}
-DCMAKE_INSTALL_LIBDIR=lib
-DXP_INSTALL_CMAKEDIR=share/cmake/tgt-${NAME}
-DXP_NAMESPACE:STRING=xpro
-DMINIGLOG:BOOL=ON
-DGFLAGS:BOOL=OFF
-DSUITESPARSE:BOOL=OFF
-DCXSPARSE:BOOL=OFF
-DLAPACK:BOOL=OFF
-DCXX11:BOOL=ON
-DOPENMP:BOOL=OFF
-DCXX11_THREADS:BOOL=ON
-DEIGENSPARSE:BOOL=ON # default as of 1.14.0
-DBUILD_TESTING:BOOL=OFF
-DBUILD_EXAMPLES:BOOL=OFF
-DEIGEN_INCLUDE_DIR_HINTS:PATH=${STAGE_DIR}/${EIGEN_INCDIR}
)
if(MSVC)
list(APPEND XP_CONFIGURE -DMSVC_USE_STATIC_CRT:BOOL=ON)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
list(APPEND XP_CONFIGURE -DLIB_SUFFIX:STRING=) # lib, not lib64
endif()
set(FIND_DEPS "xpFindPkg(PKGS eigen) # dependencies\n")
set(TARGETS_FILE tgt-${NAME}/CeresTargets.cmake)
string(TOUPPER ${NAME} PRJ)
set(USE_VARS "set(${PRJ}_LIBRARIES xpro::${NAME})\n")
set(USE_VARS "${USE_VARS}list(APPEND reqVars ${PRJ}_LIBRARIES)\n")
configure_file(${MODULES_DIR}/usexp.cmake.in
${STAGE_DIR}/share/cmake/usexp-${NAME}-config.cmake
@ONLY NEWLINE_STYLE LF
)
xpCmakeBuild(${NAME} "${depTgts}" "${XP_CONFIGURE}")
endfunction()