project(routing)

set(SRC
  absent_regions_finder.cpp
  absent_regions_finder.hpp
  async_router.cpp
  async_router.hpp
  base/astar_algorithm.hpp
  base/astar_progress.cpp
  base/astar_progress.hpp
  base/astar_vertex_data.hpp
  base/astar_weight.hpp
  base/bfs.hpp
  base/followed_polyline.cpp
  base/followed_polyline.hpp
  base/routing_result.hpp
  base/small_list.hpp
  base/small_list.cpp
  lanes/lane_info.cpp
  lanes/lane_info.hpp
  lanes/lane_way.cpp
  lanes/lane_way.hpp
  lanes/lanes_parser.cpp
  lanes/lanes_parser.hpp
  lanes/lanes_recommendation.cpp
  lanes/lanes_recommendation.hpp
  car_directions.cpp
  car_directions.hpp
  checkpoint_predictor.cpp
  checkpoint_predictor.hpp
  checkpoints.cpp
  checkpoints.hpp
  city_roads.cpp
  city_roads.hpp
  city_roads_serialization.hpp
  coding.hpp
  cross_border_graph.cpp
  cross_border_graph.hpp
  cross_mwm_connector.cpp
  cross_mwm_connector.hpp
  cross_mwm_connector_serialization.hpp
  cross_mwm_graph.cpp
  cross_mwm_graph.hpp
  cross_mwm_ids.hpp
  cross_mwm_index_graph.hpp
  data_source.hpp
  directions_engine.cpp
  directions_engine.hpp
  directions_engine_helpers.cpp
  directions_engine_helpers.hpp
  dummy_world_graph.hpp
  edge_estimator.cpp
  edge_estimator.hpp
  fake_edges_container.hpp
  fake_ending.cpp
  fake_ending.hpp
  fake_feature_ids.hpp
  fake_graph.cpp
  fake_graph.hpp
  fake_vertex.hpp
  features_road_graph.cpp
  features_road_graph.hpp
  following_info.hpp
  geometry.cpp
  geometry.hpp
  guides_connections.cpp
  guides_connections.hpp
  guides_graph.cpp
  guides_graph.hpp
  index_graph.cpp
  index_graph.hpp
  index_graph_loader.cpp
  index_graph_loader.hpp
  index_graph_serialization.cpp
  index_graph_serialization.hpp
  index_graph_starter.cpp
  index_graph_starter.hpp
  index_graph_starter_joints.hpp
  index_road_graph.cpp
  index_road_graph.hpp
  index_router.cpp
  index_router.hpp
  joint.cpp
  joint.hpp
  joint_index.cpp
  joint_index.hpp
  joint_segment.cpp
  joint_segment.hpp
  junction_visitor.cpp
  junction_visitor.hpp
  latlon_with_altitude.cpp
  latlon_with_altitude.hpp
  leaps_graph.cpp
  leaps_graph.hpp
  leaps_postprocessor.cpp
  leaps_postprocessor.hpp
  loaded_path_segment.hpp
  maxspeeds.cpp
  maxspeeds.hpp
  maxspeeds_serialization.cpp
  maxspeeds_serialization.hpp
  mwm_hierarchy_handler.cpp
  mwm_hierarchy_handler.hpp
  nearest_edge_finder.cpp
  nearest_edge_finder.hpp
  opening_hours_serdes.cpp
  opening_hours_serdes.hpp
  pedestrian_directions.cpp
  pedestrian_directions.hpp
  position_accumulator.cpp
  position_accumulator.hpp
  regions_router.cpp
  regions_router.hpp
  regions_sparse_graph.cpp
  regions_sparse_graph.hpp
  restriction_loader.cpp
  restriction_loader.hpp
  restrictions_serialization.cpp
  restrictions_serialization.hpp
  road_access.cpp
  road_access.hpp
  road_access_serialization.cpp
  road_access_serialization.hpp
  road_graph.cpp
  road_graph.hpp
  road_index.cpp
  road_index.hpp
  road_point.hpp
  route.cpp
  route.hpp
  route_point.hpp
  route_weight.cpp
  route_weight.hpp
  router.cpp
  router.hpp
  router_delegate.cpp
  router_delegate.hpp
  routing_callbacks.hpp
  routing_exceptions.hpp
  routing_helpers.cpp
  routing_helpers.hpp
  routing_options.cpp
  routing_options.hpp
  routing_result_graph.hpp
  routing_session.cpp
  routing_session.hpp
  routing_settings.cpp
  routing_settings.hpp
  ruler_router.cpp
  ruler_router.hpp
  segment.cpp
  segment.hpp
  segmented_route.cpp
  segmented_route.hpp
  single_vehicle_world_graph.cpp
  single_vehicle_world_graph.hpp
  speed_camera.cpp
  speed_camera.hpp
  speed_camera_manager.cpp
  speed_camera_manager.hpp
  speed_camera_prohibition.cpp
  speed_camera_prohibition.hpp
  speed_camera_ser_des.cpp
  speed_camera_ser_des.hpp
  traffic_stash.cpp
  traffic_stash.hpp
  transit_graph.cpp
  transit_graph.hpp
  transit_graph_loader.cpp
  transit_graph_loader.hpp
  transit_info.hpp
  transit_world_graph.cpp
  transit_world_graph.hpp
  turn_candidate.hpp
  turns.cpp
  turns.hpp
  turns_generator_utils.cpp
  turns_generator_utils.hpp
  turns_generator.cpp
  turns_generator.hpp
  turns_notification_manager.cpp
  turns_notification_manager.hpp
  turns_sound_settings.cpp
  turns_sound_settings.hpp
  turns_tts_text.cpp
  turns_tts_text.hpp
  turns_tts_text_i18n.cpp
  turns_tts_text_i18n.hpp
  vehicle_mask.cpp
  vehicle_mask.hpp
  world_graph.cpp
  world_graph.hpp
)

omim_add_library(${PROJECT_NAME} ${SRC})

target_link_libraries(${PROJECT_NAME}
  PUBLIC
    base
    routing_common
    platform
    traffic
    transit
    opening_hours
)

if (PLATFORM_DESKTOP)
  add_subdirectory(routing_quality)
  add_subdirectory(routes_builder)
endif()

omim_add_test_subdirectory(routing_benchmarks)
omim_add_test_subdirectory(routing_consistency_tests)
omim_add_test_subdirectory(routing_integration_tests)
omim_add_test_subdirectory(routing_tests)
