| |
| if(CODE_GENERATION) |
| macro (generate_benchmark_functor FUNCTOR_NAME FUNCTOR_FILE) |
| ceres_generate_cost_function_implementation_for_functor( |
| NAME ${FUNCTOR_NAME} |
| INPUT_FILE ${FUNCTOR_FILE} |
| OUTPUT_DIRECTORY benchmarks |
| NAMESPACE ceres |
| ) |
| endmacro() |
| include(CeresCodeGeneration) |
| |
| generate_benchmark_functor(SnavelyReprojectionError snavely_reprojection_error.h) |
| generate_benchmark_functor(Linear1CostFunction linear_cost_functions.h) |
| generate_benchmark_functor(Linear10CostFunction linear_cost_functions.h) |
| |
| list(APPEND CERES_BENCHMARK_FLAGS "-DWITH_CODE_GENERATION") |
| endif() |
| |
| |
| # TODO: Add support for other compilers |
| if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") |
| list(APPEND CERES_BENCHMARK_FLAGS "-mllvm" "-inline-threshold=1000000") |
| |
| # All other flags + fast-math |
| list(APPEND CERES_BENCHMARK_FAST_MATH_FLAGS ${CERES_BENCHMARK_FLAGS} "-ffast-math") |
| endif() |
| |
| add_executable(rat43_benchmark rat43_benchmark.cc) |
| add_dependencies_to_benchmark(rat43_benchmark) |
| |
| |
| add_executable(snavely_reprojection_error_benchmark snavely_reprojection_error_benchmark.cc) |
| add_dependencies_to_benchmark(snavely_reprojection_error_benchmark) |
| target_compile_options(snavely_reprojection_error_benchmark PRIVATE ${CERES_BENCHMARK_FLAGS}) |
| |
| add_executable(snavely_reprojection_error_benchmark_fast_math snavely_reprojection_error_benchmark.cc) |
| add_dependencies_to_benchmark(snavely_reprojection_error_benchmark_fast_math) |
| target_compile_options(snavely_reprojection_error_benchmark_fast_math PRIVATE ${CERES_BENCHMARK_FAST_MATH_FLAGS}) |
| |
| add_executable(linear_benchmark linear_benchmark.cc) |
| add_dependencies_to_benchmark(linear_benchmark) |
| target_compile_options(linear_benchmark PRIVATE ${CERES_BENCHMARK_FLAGS}) |
| |
| add_executable(linear_benchmark_fast_math linear_benchmark.cc) |
| add_dependencies_to_benchmark(linear_benchmark_fast_math) |
| target_compile_options(linear_benchmark_fast_math PRIVATE ${CERES_BENCHMARK_FAST_MATH_FLAGS}) |
| |
| if(CODE_GENERATION) |
| target_link_libraries(snavely_reprojection_error_benchmark PUBLIC SnavelyReprojectionError) |
| target_link_libraries(snavely_reprojection_error_benchmark_fast_math PUBLIC SnavelyReprojectionError) |
| target_link_libraries(linear_benchmark PUBLIC Linear1CostFunction Linear10CostFunction) |
| target_link_libraries(linear_benchmark_fast_math PUBLIC Linear1CostFunction Linear10CostFunction) |
| endif() |
| |