blob: e42e5840ac37d0b7f6d9cbf1092011673d12e96c [file] [log] [blame]
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()