project(SSLConnector) # this currently only works for linux!
cmake_minimum_required(VERSION 2.8)
find_package(Protobuf REQUIRED)

set(bh_dir ../../Src)

include_directories(${PROTOBUF_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${bh_dir})
include_directories(".")

add_definitions(
  -D_DEBUG
  -DLINUX
  -DTARGET_TOOL
  -DUSE_GETMESSAGEIDNAME
)

set(external_libs
  pthread
  rt
  ${PROTOBUF_LIBRARY}
)

set(platform_files
  ${bh_dir}/Platform/linux/SystemCall.cpp
  ${bh_dir}/Platform/linux/BHAssert.cpp
  ${bh_dir}/Platform/linux/Semaphore.cpp
  ${bh_dir}/Platform/linux/SharedMemory.cpp
  ${bh_dir}/Platform/Win32Linux/UdpComm.cpp
  ${bh_dir}/Platform/Win32Linux/File.cpp
)

add_library(bh_platform_lib ${platform_files})

set(bh_files
  ${bh_dir}/Tools/Global.cpp
  ${bh_dir}/Tools/Streams/InOut.cpp
  ${bh_dir}/Tools/Streams/InStreams.cpp
  ${bh_dir}/Tools/Streams/OutStreams.cpp
  ${bh_dir}/Tools/Streams/Streamable.cpp
  ${bh_dir}/Tools/Streams/StreamHandler.cpp
  ${bh_dir}/Tools/MessageQueue/MessageQueueBase.cpp
  ${bh_dir}/Tools/MessageQueue/MessageQueue.cpp
  ${bh_dir}/Tools/MessageQueue/InMessage.cpp
  ${bh_dir}/Tools/MessageQueue/OutMessage.cpp
  ${bh_dir}/Tools/ProcessFramework/TeamHandler.cpp
  ${bh_dir}/Tools/NTP.cpp
  ${bh_dir}/Tools/Module/Module.cpp
  ${bh_dir}/Tools/Module/ModuleManager.cpp
  ${bh_dir}/Representations/Blackboard.cpp
  ${bh_dir}/Tools/Settings.cpp
  ${bh_dir}/Tools/Debugging/DebugRequest.cpp
  ${bh_dir}/Tools/Debugging/DebugDrawings.cpp
  ${bh_dir}/Tools/Configuration/ConfigMap.cpp
  ${bh_dir}/Tools/Configuration/ConfigMapParser.cpp
  ${bh_dir}/Tools/Enum.cpp
)

add_library(bh_lib ${bh_files})
target_link_libraries(bh_lib bh_platform_lib)

PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS
  messages_robocup_ssl_detection.proto
  messages_robocup_ssl_geometry.proto
  messages_robocup_ssl_wrapper.proto
)

set(sslcon_files
  ${bh_dir}/Representations/Modeling/SSLVisionData.cpp
  Modules/Modeling/GroundTruthProvider/SSLVisionProvider.cpp
  Modules/Modeling/GroundTruthProvider/SSLVisionProviderSharedMemory.cpp

  SSLConnector/Framework.cpp
  SSLConnector/DebugHandler.cpp
  SSLConnector/TeamCommWrapper.cpp
  sslconnector.cpp

  ${PROTO_SRCS} ${PROTO_HDRS}
)

add_executable(SSLConnector ${sslcon_files})
target_link_libraries(SSLConnector
  ${external_libs}
  bh_platform_lib
  bh_lib
)
