-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathCMakeLists.txt
144 lines (130 loc) · 5.08 KB
/
CMakeLists.txt
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
cmake_minimum_required(VERSION 3.10)
# These variables have to be defined before running setup_project
set(PROJECT_NAME hpp-doc)
set(PROJECT_DESCRIPTION "Documentation for HPP")
set(PROJECT_URL https://humanoid-path-planner.github.io/hpp-doc/index.html)
# Check if the submodule cmake have been initialized
set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")
if(EXISTS "${JRL_CMAKE_MODULES}/base.cmake")
message(STATUS "JRL cmakemodules found in 'cmake/' git submodule")
else()
find_package(jrl-cmakemodules QUIET CONFIG)
if(jrl-cmakemodules_FOUND)
get_property(
JRL_CMAKE_MODULES
TARGET jrl-cmakemodules::jrl-cmakemodules
PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}")
elseif(${CMAKE_VERSION} VERSION_LESS "3.14.0")
message(
FATAL_ERROR
"\nCan't find jrl-cmakemodules. Please either:\n"
" - use git submodule: 'git submodule update --init'\n"
" - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n"
" - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n"
)
else()
message(STATUS "JRL cmakemodules not found. Let's fetch it.")
include(FetchContent)
FetchContent_Declare(
"jrl-cmakemodules"
GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git")
FetchContent_MakeAvailable("jrl-cmakemodules")
FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
endif()
endif()
include("${JRL_CMAKE_MODULES}/hpp.cmake")
compute_project_args(PROJECT_ARGS LANGUAGES CXX)
project(${PROJECT_NAME} ${PROJECT_ARGS})
# Arguments are: - (required) package name - (optional) git url - (optional)
# robotpkg name
macro(ADD_PKG pkg)
set(OPT_ARGS ${ARGN})
list(APPEND SETUP_DOC_PKG ${pkg})
list(LENGTH OPT_ARGS N_OPT_ARGS)
if(${N_OPT_ARGS} GREATER 0)
list(GET OPT_ARGS 0 ${pkg}_giturl)
endif(${N_OPT_ARGS} GREATER 0)
if(${N_OPT_ARGS} GREATER 1)
list(GET OPT_ARGS 1 ${pkg}_robotpkg_package)
endif(${N_OPT_ARGS} GREATER 1)
endmacro(ADD_PKG)
macro(ADD_HPP_PKG pkg)
add_pkg(${pkg} git+https://github.com:humanoid-path-planner/${pkg})
endmacro(ADD_HPP_PKG)
set(SETUP_DOC_PKG)
add_hpp_pkg(coal)
add_hpp_pkg(hpp-util)
add_hpp_pkg(hpp-statistics)
add_hpp_pkg(pinocchio)
add_hpp_pkg(hpp-pinocchio)
add_hpp_pkg(hpp-core)
add_hpp_pkg(hpp-corbaserver)
add_hpp_pkg(hpp-constraints)
add_hpp_pkg(hpp-manipulation)
add_hpp_pkg(hpp-manipulation-urdf)
add_hpp_pkg(hpp-manipulation-corba)
add_hpp_pkg(gepetto-viewer)
add_hpp_pkg(gepetto-viewer-corba)
add_hpp_pkg(hpp-gepetto-viewer)
add_hpp_pkg(hpp_tutorial)
foreach(PKG ${SETUP_DOC_PKG})
add_project_dependency(${PKG})
set(PREFIX "${PKG}")
set(DOC_VAR "${PKG}")
list(APPEND LOGGING_WATCHED_VARIABLES ${PREFIX}_FOUND)
if(${PREFIX}_FOUND)
if(DEFINED ${PREFIX}_DOXYGENDOCDIR)
set(DOC_PREFIX ${${PREFIX}_DOXYGENDOCDIR})
elseif(DEFINED ${PREFIX}_DOCDIR)
set(DOC_PREFIX ${${PREFIX}_DOCDIR})
else(DEFINED ${PREFIX}_DOCDIR)
set(DOC_PREFIX ${${PREFIX}_PREFIX}/share/doc/${PKG}/doxygen-html)
endif(DEFINED ${PREFIX}_DOXYGENDOCDIR)
string(REPLACE ${CMAKE_INSTALL_PREFIX}/share/doc ../.. DOC_PREFIX
"${DOC_PREFIX}")
if(EXISTS ${DOC_PREFIX}/main.html)
set(${DOC_VAR}_URL ${DOC_PREFIX}/main.html)
else(EXISTS ${DOC_PREFIX}/main.html)
set(${DOC_VAR}_URL ${DOC_PREFIX}/index.html)
endif(EXISTS ${DOC_PREFIX}/main.html)
set(${DOC_VAR}_LINK "<a href='${${DOC_VAR}_URL}'>${PKG}</a>")
else(${PREFIX}_FOUND)
set(PACKAGE_NAME ${PKG})
set(DOC_PKG_NAME "hpp_doc_missing_${DOC_VAR}")
set(${DOC_VAR}_LINK "\\ref ${DOC_PKG_NAME}")
set(${DOC_VAR}_URL ${${DOC_VAR}_LINK})
set(STEPS)
if(DEFINED ${PKG}_giturl)
set(STEPS
"${STEPS}\\li get the source code through \\c git:
\\code git clone --recursive ${${PKG}_giturl} \\endcode
Then configure, compile and install the package.\n")
endif(DEFINED ${PKG}_giturl)
if(DEFINED ${PKG}_robotpkg_package)
set(STEPS
"${STEPS}\\li install it through \\c robotpkg :
\\code
cd robotpkg/${${PKG}_robotpkg_package}
make update
\\endcode")
endif(DEFINED ${PKG}_robotpkg_package)
configure_file(doc/missing.dox.in
${CMAKE_BINARY_DIR}/doc/${PKG}-missing.dox @ONLY)
endif(${PREFIX}_FOUND)
list(APPEND LOGGING_WATCHED_VARIABLES ${DOC_VAR}_URL ${DOC_VAR}_LINK)
endforeach(PKG ${SETUP_DOC_PKG})
config_files(doc/main.dox doc/doxygenLayout.xml)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/graphDep.dot
COMMAND ${CMAKE_SOURCE_DIR}/scripts/packageDep --quiet --output
${CMAKE_BINARY_DIR}/graphDep.dot ${SETUP_DOC_PKG})
add_custom_target(generate-html ALL DEPENDS graphDep.dot)
install(FILES doc/index.html doc/jquery-3.3.1.min.js
${CMAKE_BINARY_DIR}/doc/main.dox
DESTINATION ${CMAKE_INSTALL_DOCDIR})
install(DIRECTORY doc/figures DESTINATION ${CMAKE_INSTALL_DOCDIR})
if(NOT DEFINED INSTALL_DOCUMENTATION OR ${INSTALL_DOCUMENTATION})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/doc/doxygen-xml/index.xml
DESTINATION ${CMAKE_INSTALL_DOCDIR}/doxygen-html)
endif()