cmake_minimum_required(VERSION 3.5)
project(sparkd)

include(${CMAKE_SOURCE_DIR}/tools/safe_dep_glob.cmake)
include(${CMAKE_SOURCE_DIR}/tools/Protobuf.cmake)

# DEPENDENCIES ------------------------------------------------------------ 
file(GLOB_RECURSE Protos RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.proto)
file(GLOB_RECURSE Sparkd_Sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp *.c)
update_deps_file("${Protos};${Sparkd_Sources}")
#END DEPENDENCIES ------------------------------------------------------------

protobuf_generate_cpp( Proto_Srcs PROTO_HDRS ${Protos} )
add_executable(sparkd ${Sparkd_Sources} ${Proto_Srcs})

#include paths
target_include_directories( sparkd PUBLIC ${CMAKE_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src)

set_source_files_properties(exchange_sim/ExchangeSim.cpp PROPERTIES COMPILE_FLAGS --std=c++14)
set_source_files_properties(exchange_sim/ExchangeSimApplication.cpp PROPERTIES COMPILE_FLAGS --std=c++14)

if (${USE_ONIX})
  set(ONIX_LIBS onixs-cmemdh-all-4.8.0 OnixS.IceImpactMulticastPriceFeedHandlerCpp ACE)
else()
  set(ONIX_LIBS "")
endif()

# linking
target_link_libraries( sparkd
  libspark
  ssl
  cryptopp
  tbb
  quickfix
  benchmark
  ${ONIX_LIBS}
  lttng-ust
  -static-libgcc
  -static-libstdc++
  -pthread) 

add_custom_command(TARGET sparkd POST_BUILD
  COMMAND ln -fs ${CMAKE_BINARY_DIR}/src/lib/libspark.so ${CMAKE_CURRENT_BINARY_DIR})

install(TARGETS sparkd DESTINATION bin)
