# http://ros.org/doc/groovy/api/catkin/html/user_guide/supposed.html
cmake_minimum_required(VERSION 2.8.3)
project(eband_local_planner)

find_package(catkin REQUIRED
  COMPONENTS
    base_local_planner
    control_toolbox
    costmap_2d
    dynamic_reconfigure
    geometry_msgs
    nav_core
    nav_msgs
    pluginlib
    roscpp
    tf2_eigen
    tf2_geometry_msgs
    tf2_ros
    )

  find_package(Eigen3)
  if(NOT EIGEN3_FOUND)
    # Fallback to cmake_modules
  find_package(cmake_modules REQUIRED)
  find_package(Eigen REQUIRED)
  set(Eigen3_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS})
endif()

include_directories(
  include
  ${Eigen3_INCLUDE_DIRS}
  ${catkin_INCLUDE_DIRS}
)

generate_dynamic_reconfigure_options(cfg/EBandPlanner.cfg)

catkin_package(
  CATKIN_DEPENDS
    base_local_planner
    control_toolbox
    costmap_2d
    geometry_msgs
    nav_core
    nav_msgs
    pluginlib
    roscpp
    tf2_eigen
    tf2_geometry_msgs
    tf2_ros    
    dynamic_reconfigure
  INCLUDE_DIRS include
  LIBRARIES eband_local_planner
)

# build the library
add_library(eband_local_planner
  src/eband_local_planner_ros.cpp
  src/eband_local_planner.cpp
  src/conversions_and_types.cpp
  src/eband_visualization.cpp
  src/eband_trajectory_controller.cpp
)
add_dependencies(eband_local_planner ${eband_local_planner_EXPORTED_TARGETS})

target_link_libraries(eband_local_planner ${catkin_LIBRARIES})

install(
  DIRECTORY include/eband_local_planner/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)

install(
  TARGETS eband_local_planner
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
)
install(
  FILES elp_plugin.xml
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
