CMakeLists.txt 4.47 KB
Newer Older
Thomas Moulard's avatar
Thomas Moulard committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Copyright 2010, Olivier Stasse, JRL, CNRS/AIST
#
# This file is part of jrl-walkgen.
# jrl-walkgen is free software: you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3 of
# the License, or (at your option) any later version.
#
# jrl-walkgen is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Lesser Public License for more details.  You should have
# received a copy of the GNU Lesser General Public License along with
# jrl-walkgen. If not, see <http://www.gnu.org/licenses/>.

Thomas Moulard's avatar
Thomas Moulard committed
16
17
# Requires at least CMake 2.6 to configure the package.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
Thomas Moulard's avatar
Thomas Moulard committed
18

19
# Includes from jrl-cmaketools
Thomas Moulard's avatar
Thomas Moulard committed
20
INCLUDE(cmake/base.cmake)
21
INCLUDE(cmake/lapack.cmake)
22
INCLUDE(cmake/cpack.cmake)
23
INCLUDE(cmake/boost.cmake)
24
INCLUDE(private_cmake/cmake_metapod_configure.cmake)
25
INCLUDE(CMakeDependentOption)
Thomas Moulard's avatar
Thomas Moulard committed
26

27
# Define properties of the project
Thomas Moulard's avatar
Thomas Moulard committed
28
29
30
SET(PROJECT_NAME jrl-walkgen)
SET(PROJECT_DESCRIPTION "Walking pattern generator for Humanoids")
SET(PROJECT_URL "")
Thomas Moulard's avatar
Thomas Moulard committed
31

Thomas Moulard's avatar
Thomas Moulard committed
32
SET(CXX_DISABLE_WERROR True)
Thomas Moulard's avatar
Thomas Moulard committed
33

34
# Initialize generic properties of the project
Thomas Moulard's avatar
Thomas Moulard committed
35
SETUP_PROJECT()
Thomas Moulard's avatar
Thomas Moulard committed
36

37
# Handle OS specificities
Thomas Moulard's avatar
Thomas Moulard committed
38
39
INCLUDE(CheckIncludeFiles)
CHECK_INCLUDE_FILES("sys/time.h" SYS_TIME_H)
40
41
42
IF(SYS_TIME_H)
ADD_DEFINITIONS("-DHAVE_SYS_TIME_H")
ENDIF(SYS_TIME_H)
Thomas Moulard's avatar
Thomas Moulard committed
43

44
# Required dependencies
Thomas Moulard's avatar
Thomas Moulard committed
45
ADD_REQUIRED_DEPENDENCY("jrl-mal >= 1.9.0")
46
ADD_REQUIRED_DEPENDENCY("pinocchio >=  1.1.0")
47

mnaveau's avatar
mnaveau committed
48
# Search for qpOases
49
50
51
52
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/private_cmake)
MESSAGE(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
FIND_PACKAGE(qpOASES)

mnaveau's avatar
mnaveau committed
53
IF(${qpOASES_FOUND} STREQUAL "TRUE")
54
  MESSAGE(STATUS "--qpOASES : " ${qpOASES_LIBRARIES})
mnaveau's avatar
mnaveau committed
55
56
57
  INCLUDE_DIRECTORIES(SYSTEM ${qpOASES_INCLUDE_DIRS})
ENDIF(${qpOASES_FOUND} STREQUAL "TRUE")

Thomas Moulard's avatar
Thomas Moulard committed
58

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Search for Boost.
# Boost.Test is used by the test suite.
# Boost program_options is used by the embedfile utility, which is used
# by metapod_robotbuilder
# Boost filesystem and regex are used by metapod_robotbuilder.
# Boost filesystem depends on Boost system.
SET(BOOST_COMPONENTS
  filesystem system unit_test_framework program_options regex)
SEARCH_FOR_BOOST()
# If Boost is recent enough, we look for Boost timer which can be used by
# by metapod_timer, which is in turn used by the benchmark.
# Boost timer depends on Boost chrono and system.
IF((BUILD_MULTI_MODEL_BENCHMARK OR BUILD_SINGLE_MODEL_BENCHMARKS)
   AND NOT Boost_VERSION LESS 104800)
  SET(BOOST_COMPONENTS ${BOOST_COMPONENTS} timer chrono system)
  SEARCH_FOR_BOOST()
ENDIF()

77
78
79
80
81
82
83
84
# Search for Eigen.
ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.0.0")
# Eigen (at least version 3.0.5) makes gcc report conversion warnings
# when one assigns to a block. This floods the compilation results.
# So we include Eigen headers as if they were system headers: the compiler
# won't report warning coming from them.
INCLUDE_DIRECTORIES(SYSTEM ${EIGEN3_INCLUDE_DIRS})

85
# TODO kinda dirty patch to find lssol for now
86
#  using ADD_OPTIONAL_DEPENDENCY prevents the creation
87
88
89
90
91
92
93
#  of classic variables such as ${PKG}_FOUND
# hence we use ADD_REQUIRED_DEPENDENCY to get the data
OPTION(USE_LSSOL "Do you want to use the solver lssol?" OFF)
IF(USE_LSSOL)
 ADD_REQUIRED_DEPENDENCY("lssol >= 0.1.0")
ENDIF(USE_LSSOL)

Thomas Moulard's avatar
Thomas Moulard committed
94
# Add aggressive optimization flags in release mode.
95
96
IF(CMAKE_COMPILER_IS_GNUCXX)
  SET (CMAKE_CXX_FLAGS_RELEASE
97
98
99
    "-O3 -DNDEBUG ")
  SET (CMAKE_CXX_FLAGS
    "-std=c++0x")
100
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
Thomas Moulard's avatar
Thomas Moulard committed
101

102
103
104
105
106
107
108
109
110
111
112
#IF(CMAKE_COMPILER_IS_GNUCXX)
#  SET (CMAKE_CXX_FLAGS_RELEASE
#    "-O3 -funroll-loops -frerun-loop-opt -fschedule-insns2")
#  SET (CMAKE_CXX_FLAGS_RELEASE
#    "${CMAKE_CXX_FLAGS_RELEASE} -frerun-cse-after-loop -falign-functions")
#  SET (CMAKE_CXX_FLAGS_RELEASE
#    "${CMAKE_CXX_FLAGS_RELEASE} -falign-labels -falign-loops -falign-jumps")
#  SET (CMAKE_CXX_FLAGS_RELEASE
#    "${CMAKE_CXX_FLAGS_RELEASE} -fexpensive-optimizations")
#ENDIF(CMAKE_COMPILER_IS_GNUCXX)

113
# Define the set of headers to be exported
Thomas Moulard's avatar
Thomas Moulard committed
114
115
116
SET(${PROJECT_NAME}_HEADERS
  include/jrl/walkgen/patterngeneratorinterface.hh
  include/jrl/walkgen/pgtypes.hh
mnaveau's avatar
mnaveau committed
117
  include/jrl/walkgen/pinocchiorobot.hh
Thomas Moulard's avatar
Thomas Moulard committed
118
119
)

120
# Define subdirectories to explore for cmake
Thomas Moulard's avatar
Thomas Moulard committed
121
ADD_SUBDIRECTORY(src)
Thomas Moulard's avatar
Thomas Moulard committed
122
ADD_SUBDIRECTORY(tests)
olivier stasse's avatar
olivier stasse committed
123
#ADD_SUBDIRECTORY(debian)
Thomas Moulard's avatar
Thomas Moulard committed
124

125
126
127
128
# Generate dependency to jrl-walkgen in pc file
PKG_CONFIG_APPEND_LIBS("jrl-walkgen")

# Ask to generate the final steps.
Thomas Moulard's avatar
Thomas Moulard committed
129
SETUP_PROJECT_FINALIZE()
130
SETUP_PROJECT_CPACK()