cmake_minimum_required(VERSION 3.4)
project(olelidar)

add_compile_options(-std=c++14)

find_package(catkin REQUIRED COMPONENTS
  dynamic_reconfigure
  laser_geometry
  message_generation
  pcl_conversions
  pcl_ros
  roscpp
  roscpp_serialization
  roslint
  sensor_msgs
  std_msgs
  tf
)

include_directories(PCL_CONVERSIONS_INCLUDE_DIRS)

find_package(Boost REQUIRED COMPONENTS  thread system)
#find_package(jsoncpp REQUIRED)
#get_target_property(jsoncpp_INCLUDE_DIRS jsoncpp_lib INTERFACE_INCLUDE_DIRECTORIES)
# find_package(PkgConfig REQUIRED)
# pkg_check_modules(CURLPP REQUIRED curlpp)

generate_dynamic_reconfigure_options(
  cfg/oleiPuck.cfg
)

add_message_files(
  FILES
  V3Header.msg
  V2Header.msg
)

generate_messages(
  DEPENDENCIES
  std_msgs
)

catkin_package(
  INCLUDE_DIRS include
  CATKIN_DEPENDS dynamic_reconfigure message_runtime roscpp roscpp_serialization sensor_msgs std_msgs tf
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

add_executable(ros_main src/ole_packet/ole_packet.cpp                   
                        src/ole_packet/version3.cpp
                        src/ole_packet/version3_a.cpp
                        src/ole_packet/version3_b.cpp
                        src/ole_packet/version3_c.cpp
                        src/ole_packet/version2.cpp
                        src/ole_packet/version2_a.cpp
                        src/communication/udp_transport.cpp
                        src/communication/tcp_transport.cpp
                        src/ros/ros_main.cpp
                        src/ros/laser_scan_publisher.cpp
                        src/ros/ole_data_publisher.cpp
                        src/ros/point_cloud_publisher.cpp
                        src/ole_packet_reader.cpp
                        src/ole_interface.cpp
                        src/pipeline.cpp
                        )
                        
target_link_libraries(ros_main
  ${catkin_LIBRARIES} curlpp curl
)
add_dependencies(ros_main ${PROJECT_NAME}_gencfg)
add_dependencies(ros_main ${${PROJECT_NAME}_EXPORTED_TARGETS})

roslint_cpp(src/ros/ros_main.cpp
            src/ole_interface.cpp
            src/ros/laser_scan_publisher.cpp
            src/ole_packet/ole_packet.cpp
            src/communication.cpp)

install(TARGETS ros_main ros_main
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

install(DIRECTORY config/
   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/config)

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

install(DIRECTORY launch/
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch)

# install(DIRECTORY rviz/
#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/rviz)
