66# --- BENCHMARK --------------------------------------
77# ----------------------------------------------------
88add_custom_target (bench)
9+ add_project_private_dependency(benchmark REQUIRED)
10+
11+ macro (ADD_PINOCCHIO_BENCH bench_name)
12+ set (options HEADER_ONLY GOOGLE_BENCHMARK)
13+ set (oneValueArgs)
14+ set (multiValueArgs PACKAGES)
15+ cmake_parse_arguments (unit_test "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
916
10- macro (ADD_BENCH bench_name)
1117 if (BUILD_BENCHMARK)
1218 add_executable (${bench_name} ${bench_name} .cpp)
13- else (BUILD_BENCHMARK )
19+ else ()
1420 add_executable (${bench_name} EXCLUDE_FROM_ALL ${bench_name} .cpp)
15- endif (BUILD_BENCHMARK)
16- set (ExtraMacroArgs ${ARGN} )
17- list (LENGTH ExtraMacroArgs NumExtraMacroArgs)
18- if (NumExtraMacroArgs GREATER 0)
19- set (link_to_main_lib ${ARGV1} )
20- if (link_to_main_lib)
21- set_target_properties (${bench_name} PROPERTIES COMPILE_DEFINITIONS
22- PINOCCHIO_MODEL_DIR="${PINOCCHIO_MODEL_DIR} " )
23- target_link_libraries (${bench_name} PUBLIC ${PROJECT_NAME} )
24- endif (link_to_main_lib)
2521 endif ()
2622
27- add_dependencies (bench ${bench_name} )
28- endmacro (ADD_BENCH)
29-
30- macro (ADD_TEST_CFLAGS target flag)
31- set_property (
32- TARGET ${target}
33- APPEND_STRING
34- PROPERTY COMPILE_FLAGS " ${flag} " )
35- endmacro (ADD_TEST_CFLAGS)
23+ target_compile_definitions (${bench_name} PRIVATE PINOCCHIO_MODEL_DIR="${PINOCCHIO_MODEL_DIR} " )
24+ if (NOT unit_test_HEADER_ONLY)
25+ target_link_libraries (${bench_name} PRIVATE pinocchio_default)
26+ else ()
27+ target_link_libraries (${bench_name} PRIVATE pinocchio_headers)
28+ endif ()
3629
37- if (CPPAD_FOUND )
38- include_directories (${cppad_INCLUDE_DIR} )
39- endif (CPPAD_FOUND )
30+ if (unit_test_GOOGLE_BENCHMARK )
31+ target_link_libraries (${bench_name} PRIVATE benchmark::benchmark )
32+ endif ()
4033
41- if (cppadcg_FOUND)
42- include_directories (${cppadcg_INCLUDE_DIR} )
43- endif (cppadcg_FOUND)
34+ add_dependencies (bench ${bench_name} )
35+ endmacro ()
4436
4537# timings
4638#
47- add_bench(timings TRUE )
48- if (cppadcg_FOUND)
49- add_bench(timings-cg TRUE )
50- target_link_libraries (timings-cg PUBLIC ${CMAKE_DL_LIBS} ${cppad_LIBRARY} )
51- endif (cppadcg_FOUND)
39+ add_pinocchio_bench(timings TRUE )
40+ target_link_libraries (timings PRIVATE pinocchio_parsers)
41+ if (BUILD_WITH_CODEGEN_SUPPORT)
42+ add_pinocchio_bench(timings-cg TRUE )
43+ target_link_libraries (timings-cg PRIVATE pinocchio_parsers pinocchio_cppadcg ${CMAKE_DL_LIBS} )
44+ endif ()
5245
5346if (BUILD_WITH_OPENMP_SUPPORT)
54- add_bench(timings-parallel TRUE )
55- endif (BUILD_WITH_OPENMP_SUPPORT)
47+ add_pinocchio_bench(timings-parallel TRUE )
48+ target_link_libraries (timings-parallel PRIVATE pinocchio_parsers pinocchio_parallel
49+ pinocchio_collision)
50+ endif ()
5651
57- # timings
52+ # timings cholesky
5853#
59- add_bench(timings-cholesky TRUE )
54+ add_pinocchio_bench(timings-cholesky TRUE )
55+ target_link_libraries (timings-cholesky PRIVATE pinocchio_parsers)
6056
6157# timings derivatives
62-
63- add_bench(timings-derivatives TRUE )
64- if (CPPAD_FOUND)
58+ #
59+ add_pinocchio_bench(timings-derivatives TRUE )
60+ target_link_libraries (timings-derivatives PRIVATE pinocchio_parsers)
61+ if (BUILD_WITH_AUTODIFF_SUPPORT)
6562 # timings-cppad-jit
66- add_bench (timings-cppad-jit TRUE )
67- target_link_libraries (timings-derivatives PUBLIC ${cppad_LIBRARY} )
68- target_link_libraries (timings-cppad-jit PUBLIC ${cppad_LIBRARY} ${CMAKE_DL_LIBS} )
63+ add_pinocchio_bench (timings-cppad-jit TRUE )
64+ target_link_libraries (timings-derivatives PRIVATE pinocchio_cppad )
65+ target_link_libraries (timings-cppad-jit PRIVATE pinocchio_cppad ${CMAKE_DL_LIBS} )
6966 target_compile_definitions (timings-cppad-jit
70- PUBLIC PINOCCHIO_CXX_COMPILER=\"${CMAKE_CXX_COMPILER} \")
67+ PRIVATE PINOCCHIO_CXX_COMPILER=\"${CMAKE_CXX_COMPILER} \")
7168endif ()
7269
7370# timings-eigen
74- #
75- add_bench(timings-eigen)
71+ add_pinocchio_bench(timings-eigen)
7672modernize_target_link_libraries(
7773 timings-eigen
7874 SCOPE PUBLIC
@@ -81,16 +77,21 @@ modernize_target_link_libraries(
8177
8278# timings-geometry
8379#
84- if (URDFDOM_FOUND AND hpp-fcl_FOUND)
85- add_bench(timings-geometry TRUE )
86- endif (URDFDOM_FOUND AND hpp-fcl_FOUND)
80+ if (BUILD_WITH_URDF_SUPPORT AND BUILD_WITH_COLLISION_SUPPORT)
81+ add_pinocchio_bench(timings-geometry TRUE )
82+ target_link_libraries (timings-geometry PRIVATE pinocchio_parsers pinocchio_collision)
83+ endif ()
8784
8885# timings-jacobian
8986#
90- add_bench(timings-jacobian TRUE )
87+ add_pinocchio_bench(timings-jacobian TRUE )
88+ target_link_libraries (timings-jacobian PRIVATE pinocchio_parsers)
9189
9290# timings-contact-dynamics
9391#
94- add_bench(timings-delassus-operations TRUE )
95- add_bench(timings-contact-dynamics TRUE )
96- add_bench(timings-constrained-dynamics-derivatives TRUE )
92+ add_pinocchio_bench(timings-delassus-operations TRUE )
93+ target_link_libraries (timings-delassus-operations PRIVATE pinocchio_parsers)
94+ add_pinocchio_bench(timings-contact-dynamics TRUE )
95+ target_link_libraries (timings-contact-dynamics PRIVATE pinocchio_parsers)
96+ add_pinocchio_bench(timings-constrained-dynamics-derivatives TRUE )
97+ target_link_libraries (timings-constrained-dynamics-derivatives PRIVATE pinocchio_parsers)
0 commit comments