cmake_minimum_required(VERSION 3.5)
project(seyond)

# Default to C99
if(NOT CMAKE_C_STANDARD)
  set(CMAKE_C_STANDARD 99)
endif()

# Default to C++17
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 17)
endif()

add_compile_options(-Ofast)

set(SEYOND_SDK_PATH src/seyond_sdk/)

#-------------------------------------
# Point Type (PointXYZI, PointXYZIT)
#-------------------------------------
set(POINT_TYPE PointXYZIT)

if(${POINT_TYPE} STREQUAL "PointXYZI")
  add_definitions(-DENABLE_XYZI)
elseif(${POINT_TYPE} STREQUAL "PointXYZIT")
  add_definitions(-DENABLE_XYZIT)
endif()

add_definitions(-DROS_FOUND)

set(${PROJECT_NAME}_CATKIN_DEPS
        roscpp
        roslib
        sensor_msgs
        std_msgs
        message_generation
        message_filters
)

find_package(catkin REQUIRED COMPONENTS
        ${${PROJECT_NAME}_CATKIN_DEPS}
        pcl_conversions
)

find_package(yaml-cpp REQUIRED)

add_message_files(
        FILES
        "SeyondPacket.msg"
        "SeyondScan.msg"
)
generate_messages(DEPENDENCIES std_msgs)

SET(SEYOND_SDK_LIB_DIR ${SEYOND_SDK_PATH}/lib/)
SET(SEYOND_SDK_INC_DIR ${SEYOND_SDK_PATH}/src/)

include_directories(
        ./
        ${SEYOND_SDK_INC_DIR}
        ${catkin_INCLUDE_DIRS}
)

catkin_package(CATKIN_DEPENDS
        ${${PROJECT_NAME}_CATKIN_DEPS}
)

link_directories(
        ${SEYOND_SDK_LIB_DIR}
)

add_executable(seyond_node
        node/seyond_node.cc
        src/driver/driver_lidar.cc
)

add_dependencies(seyond_node seyond_generate_messages_cpp)


target_link_libraries(seyond_node
        ${catkin_LIBRARIES}
        ${YAML_CPP_LIBRARIES}
        innolidarsdkclient.a
        innolidarsdkcommon.a
        innolidarutils.a
)


install(TARGETS
        seyond_node
        RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
        ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
        LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})

install(FILES
        launch/start.launch
        DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch)

install(FILES
        rviz/rviz.rviz
        DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/rviz)

install(FILES
        config/config.yaml
        DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/config)
