Skip to content

Commit bbada58

Browse files
committed
cmake: Modernize benchmark CMakeLists.txt
1 parent dc416cc commit bbada58

File tree

1 file changed

+53
-52
lines changed

1 file changed

+53
-52
lines changed

benchmark/CMakeLists.txt

Lines changed: 53 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,73 +6,69 @@
66
# --- BENCHMARK --------------------------------------
77
# ----------------------------------------------------
88
add_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

5346
if(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}\")
7168
endif()
7269

7370
# timings-eigen
74-
#
75-
add_bench(timings-eigen)
71+
add_pinocchio_bench(timings-eigen)
7672
modernize_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

Comments
 (0)