@@ -11,30 +11,38 @@ option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
1111
1212# Project configuration
1313if (NOT BUILD_STANDALONE_PYTHON_INTERFACE)
14- set (PROJECT_USE_CMAKE_EXPORT TRUE )
14+ set (PROJECT_USE_CMAKE_EXPORT TRUE )
1515endif ()
1616
1717# Check if the submodule cmake have been initialized
1818if (EXISTS "${CMAKE_SOURCE_DIR} /cmake/base.cmake" )
19- message (STATUS "JRL cmakemodules found in the source tree." )
20- set (JRL_CMAKE_MODULES "${CMAKE_SOURCE_DIR} /cmake" )
19+ message (STATUS "JRL cmakemodules found in the source tree." )
20+ set (JRL_CMAKE_MODULES "${CMAKE_SOURCE_DIR} /cmake" )
2121else ()
22- find_package (jrl-cmakemodules QUIET CONFIG )
23- if (jrl-cmakemodules_FOUND)
24- get_property (
25- JRL_CMAKE_MODULES
26- TARGET jrl-cmakemodules::jrl-cmakemodules
27- PROPERTY INTERFACE_INCLUDE_DIRECTORIES )
28- message (STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES} " )
29- else ()
30- message (STATUS "JRL cmakemodules not found. Let's fetch it." )
31- include (FetchContent )
32- FetchContent_Declare (
33- "jrl-cmakemodules"
34- GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git" )
35- FetchContent_MakeAvailable ("jrl-cmakemodules" )
36- FetchContent_GetProperties ("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
37- endif ()
22+ find_package (jrl-cmakemodules QUIET CONFIG )
23+ if (jrl-cmakemodules_FOUND)
24+ get_property (
25+ JRL_CMAKE_MODULES
26+ TARGET jrl-cmakemodules::jrl-cmakemodules
27+ PROPERTY INTERFACE_INCLUDE_DIRECTORIES
28+ )
29+ message (
30+ STATUS
31+ "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES} "
32+ )
33+ else ()
34+ message (STATUS "JRL cmakemodules not found. Let's fetch it." )
35+ include (FetchContent )
36+ FetchContent_Declare (
37+ "jrl-cmakemodules"
38+ GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git"
39+ )
40+ FetchContent_MakeAvailable ("jrl-cmakemodules" )
41+ FetchContent_GetProperties (
42+ "jrl-cmakemodules"
43+ SOURCE_DIR JRL_CMAKE_MODULES
44+ )
45+ endif ()
3846endif ()
3947
4048# JRL-cmakemodule setup
@@ -47,95 +55,119 @@ project(${PROJECT_NAME} ${PROJECT_ARGS})
4755
4856# Dependencies
4957if (BUILD_PYTHON_INTERFACE)
50- add_project_dependency (eigenpy REQUIRED )
51- string (REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME} )
52- set (${PY_NAME} _INSTALL_DIR ${PYTHON_SITELIB} /${PY_NAME} )
58+ add_project_dependency (eigenpy REQUIRED )
59+ string (REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME} )
60+ set (${PY_NAME} _INSTALL_DIR ${PYTHON_SITELIB} /${PY_NAME} )
5361endif ()
5462
5563add_project_dependency (pinocchio REQUIRED )
5664add_project_dependency (eiquadprog REQUIRED )
5765
5866if (BUILD_TESTING)
59- add_project_dependency (example-robot-data REQUIRED )
60- add_project_dependency (Boost REQUIRED COMPONENTS unit_test_framework )
67+ add_project_dependency (example-robot-data REQUIRED )
68+ add_project_dependency (Boost REQUIRED COMPONENTS unit_test_framework )
6169endif ()
6270
6371# Main library
6472if (BUILD_STANDALONE_PYTHON_INTERFACE)
65- add_project_dependency (${PROJECT_NAME} REQUIRED CONFIG )
73+ add_project_dependency (${PROJECT_NAME} REQUIRED CONFIG )
6674else ()
67- set (${PROJECT_NAME} _HEADERS
68- include/${PROJECT_NAME} /arm_ig.hpp #
69- include/${PROJECT_NAME} /leg_ig.hpp #
70- include/${PROJECT_NAME} /biped_ig.hpp #
71- include/${PROJECT_NAME} /dyna_com.hpp #
72- include/${PROJECT_NAME} /python.hpp #
73- include/${PROJECT_NAME} /contact6d.hpp #
74- )
75- set (${PROJECT_NAME} _SOURCES
76- src/arm_ig.cpp #
77- src/leg_ig.cpp #
78- src/biped_ig.cpp #
79- src/dyna_com.cpp #
80- src/contac6d.cpp #
81- )
82- add_library (${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES}
83- ${${PROJECT_NAME}_HEADERS} )
84- add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
85- target_link_libraries (${PROJECT_NAME} PUBLIC Eigen3::Eigen )
86- target_include_directories (${PROJECT_NAME}
87- PUBLIC $<INSTALL_INTERFACE :include >)
88- target_link_libraries (${PROJECT_NAME} PUBLIC pinocchio::pinocchio
89- eiquadprog::eiquadprog )
75+ set (${PROJECT_NAME} _HEADERS
76+ include/${PROJECT_NAME} /arm_ig.hpp #
77+ include/${PROJECT_NAME} /leg_ig.hpp #
78+ include/${PROJECT_NAME} /biped_ig.hpp #
79+ include/${PROJECT_NAME} /dyna_com.hpp #
80+ include/${PROJECT_NAME} /python.hpp #
81+ include/${PROJECT_NAME} /contact6d.hpp #
82+ )
83+ set (${PROJECT_NAME} _SOURCES
84+ src/arm_ig.cpp #
85+ src/leg_ig.cpp #
86+ src/biped_ig.cpp #
87+ src/dyna_com.cpp #
88+ src/contac6d.cpp #
89+ )
90+ add_library (
91+ ${PROJECT_NAME}
92+ SHARED
93+ ${${PROJECT_NAME}_SOURCES}
94+ ${${PROJECT_NAME}_HEADERS}
95+ )
96+ add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
97+ target_link_libraries (${PROJECT_NAME} PUBLIC Eigen3::Eigen )
98+ target_include_directories (
99+ ${PROJECT_NAME}
100+ PUBLIC $<INSTALL_INTERFACE :include >
101+ )
102+ target_link_libraries (
103+ ${PROJECT_NAME}
104+ PUBLIC pinocchio::pinocchio eiquadprog::eiquadprog
105+ )
90106
91- if (SUFFIX_SO_VERSION)
92- set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION
93- ${PROJECT_VERSION} )
94- endif ()
107+ if (SUFFIX_SO_VERSION)
108+ set_target_properties (
109+ ${PROJECT_NAME}
110+ PROPERTIES SOVERSION ${PROJECT_VERSION}
111+ )
112+ endif ()
95113endif ()
96114
97115# Python Bindings
98116if (BUILD_PYTHON_INTERFACE)
99- set (${PY_NAME} _SOURCES python/contact_6d.cpp python/aig_modules.cpp
100- python/dyna_com.cpp python/biped_ig.cpp)
101- add_library (${PY_NAME} _py SHARED ${${PY_NAME}_SOURCES} )
102- target_link_libraries (${PY_NAME} _py PUBLIC ${PROJECT_NAME} ::${PROJECT_NAME}
103- eigenpy::eigenpy )
104- get_relative_rpath (${${PY_NAME}_INSTALL_DIR} ${PY_NAME} _INSTALL_RPATH )
105- set_target_properties (
106- ${PY_NAME} _py
107- PROPERTIES INSTALL_RPATH "${${PY_NAME} _INSTALL_RPATH}"
108- LIBRARY_OUTPUT_DIRECTORY ${PY_NAME}
109- OUTPUT_NAME ${PY_NAME}
110- PREFIX ""
111- SUFFIX ${PYTHON_EXT_SUFFIX} )
112- install (TARGETS ${PY_NAME} _py DESTINATION ${${PY_NAME} _INSTALL_DIR})
113- install (DIRECTORY python/aig DESTINATION ${${PY_NAME} _INSTALL_DIR}/..)
117+ set (${PY_NAME} _SOURCES
118+ python/contact_6d.cpp
119+ python/aig_modules.cpp
120+ python/dyna_com.cpp
121+ python/biped_ig.cpp
122+ )
123+ add_library (${PY_NAME} _py SHARED ${${PY_NAME}_SOURCES} )
124+ target_link_libraries (
125+ ${PY_NAME} _py
126+ PUBLIC ${PROJECT_NAME} ::${PROJECT_NAME} eigenpy::eigenpy
127+ )
128+ get_relative_rpath (${${PY_NAME}_INSTALL_DIR} ${PY_NAME} _INSTALL_RPATH )
129+ set_target_properties (
130+ ${PY_NAME} _py
131+ PROPERTIES
132+ INSTALL_RPATH "${${PY_NAME} _INSTALL_RPATH}"
133+ LIBRARY_OUTPUT_DIRECTORY ${PY_NAME}
134+ OUTPUT_NAME ${PY_NAME}
135+ PREFIX ""
136+ SUFFIX ${PYTHON_EXT_SUFFIX}
137+ )
138+ install (TARGETS ${PY_NAME} _py DESTINATION ${${PY_NAME} _INSTALL_DIR})
139+ install (DIRECTORY python/aig DESTINATION ${${PY_NAME} _INSTALL_DIR}/..)
114140endif ()
115141
116142if (BUILD_TESTING AND NOT BUILD_STANDALONE_PYTHON_INTERFACE)
117- # Unit-Tests dependencies
118- set (${PROJECT_NAME} _CPP_TESTS
119- test_dependencies_usage #
120- test_leg_ig #
121- test_arm_ig #
122- test_biped_ig #
123- )
143+ # Unit-Tests dependencies
144+ set (${PROJECT_NAME} _CPP_TESTS
145+ test_dependencies_usage #
146+ test_leg_ig #
147+ test_arm_ig #
148+ test_biped_ig #
149+ )
124150
125- foreach (unittest_name ${${PROJECT_NAME} _CPP_TESTS})
126- add_unit_test (${unittest_name} tests/${unittest_name}.cpp )
127- target_link_libraries (
128- ${unittest_name} ${PROJECT_NAME} Boost::unit_test_framework
129- example-robot-data::example-robot-data )
130- target_compile_definitions (${unittest_name}
131- PUBLIC "-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN" )
132- endforeach ()
151+ foreach (unittest_name ${${PROJECT_NAME} _CPP_TESTS})
152+ add_unit_test (${unittest_name} tests/${unittest_name}.cpp )
153+ target_link_libraries (
154+ ${unittest_name}
155+ ${PROJECT_NAME}
156+ Boost::unit_test_framework
157+ example-robot-data::example-robot-data
158+ )
159+ target_compile_definitions (
160+ ${unittest_name}
161+ PUBLIC "-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN"
162+ )
163+ endforeach ()
133164endif ()
134165
135166# Installation
136167if (NOT BUILD_STANDALONE_PYTHON_INTERFACE)
137- install (
138- TARGETS ${PROJECT_NAME}
139- EXPORT ${TARGETS_EXPORT_NAME}
140- DESTINATION lib)
168+ install (
169+ TARGETS ${PROJECT_NAME}
170+ EXPORT ${TARGETS_EXPORT_NAME}
171+ DESTINATION lib
172+ )
141173endif ()
0 commit comments