cmake_minimum_required(VERSION 2.8.3)
set(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda")

project(ego_planner CXX CUDA)

set(CMAKE_BUILD_TYPE "Release")
ADD_COMPILE_OPTIONS(-std=c++11 )
ADD_COMPILE_OPTIONS(-std=c++14 )
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")

find_package(Eigen3 REQUIRED)
find_package(PCL 1.7 REQUIRED)

# set(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda")
set(CUDA_NVCC_FLAGS -gencode arch=compute_75,code=sm_75;)
# set(CUDA_NVCC_FLAGS -gencode arch=compute_75,code=sm_75;)

set(CUDA_SEPARABLE_COMPILATION ON)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3 -use_fast_math;)

set(CUDA_SEPARABLE_COMPILATION ON)
set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
find_package(TBB REQUIRED)
find_package(OsqpEigen REQUIRED)
find_package(OpenCV  REQUIRED)
find_package(Torch)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  roslib
  std_msgs
  geometry_msgs
  quadrotor_msgs
  plan_env
  path_searching
  traj_opt
  traj_utils
  message_generation
  cv_bridge
  nav_msgs
  sensor_msgs
)
add_message_files(FILES
data.msg
NNDebug.msg
debug.msg
)

generate_messages(DEPENDENCIES
  std_msgs
  geometry_msgs
  traj_utils
  nav_msgs
  sensor_msgs
)

# catkin_package(CATKIN_DEPENDS message_runtime)
catkin_package(
 INCLUDE_DIRS include
 LIBRARIES ego_planner
 CATKIN_DEPENDS plan_env path_searching traj_opt traj_utils  message_runtime
 DEPENDS OpenCV
)

include_directories(
  include
  SYSTEM
  ${catkin_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/include
  ${EIGEN3_INCLUDE_DIR}
  ${PCL_INCLUDE_DIRS}
  ${TORCH_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)


add_executable(ego_planner_node
  src/ego_planner_node.cpp 
  src/ego_replan_fsm.cpp
  src/planner_manager.cpp
  )
target_link_libraries(ego_planner_node 
  OsqpEigen::OsqpEigen
  ${TORCH_LIBRARIES}
  ${catkin_LIBRARIES}
  ${OpenCV_LIBS}
  astar
  # hybridstar
  TBB::tbb
)
#add_dependencies(ego_planner_node ${${PROJECT_NAME}_EXPORTED_TARGETS})

add_executable(traj_server src/traj_server.cpp)
target_link_libraries(traj_server ${catkin_LIBRARIES})
# add_dependencies(traj_server ${${PROJECT_NAME}_EXPORTED_TARGETS})


