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