PROJECT(CtrlSvc)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

# Build Type
IF(CMAKE_BUILD_TYPE_INITIALIZED_TO_DEFAULT)
    SET(CMAKE_BUILD_TYPE DEBUG) # RELEASE, RELWITHDEBINFO MINSIZEREL
ENDIF()

# Find Package
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../CMake/Modules)

FIND_PACKAGE(SniperKernel REQUIRED)
IF(SniperKernel_FOUND)
  INCLUDE_DIRECTORIES(${SniperKernel_INCLUDE_DIRS} )
ELSEIF(NOT SniperKernel_FOUND) 
  MESSAGE(FATAL_ERROR "Unable to find SniperKernel. Did you set SniperKernel_ROOT?")
ENDIF()

FIND_PACKAGE(DroNECore REQUIRED)
IF(DroNECore_FOUND)
  INCLUDE_DIRECTORIES(${DroNECore_INCLUDE_DIR} )
ELSEIF(NOT DroNECore_FOUND) 
  MESSAGE(FATAL_ERROR "Unable to find DroNECore. Did you set DroNECore_ROOT?")
ENDIF()

FIND_PACKAGE(DataSvc REQUIRED)
IF(DataSvc_FOUND)
  INCLUDE_DIRECTORIES(${DataSvc_INCLUDE_DIR} )
ELSEIF(NOT DataSvc_FOUND) 
  MESSAGE(FATAL_ERROR "Unable to find DataSvc. Did you set DataSvc_ROOT?")
ENDIF()

# Find Package
SET(Boost_NO_BOOST_CMAKE TRUE)
#SET( BOOST_ROOT "/opt/shared/library/boost-1.62.0")
FIND_PACKAGE(Boost)
FIND_PACKAGE(PythonLibs)
IF(Boost_FOUND AND PYTHONLIBS_FOUND)
  INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_PATH})
  SET(Boost_USE_STATIC_LIBS OFF)
  SET(Boost_USE_MULTITHREADED ON)
  SET(Boost_USE_STATIC_RUNTIME OFF)
  FIND_PACKAGE(Boost  COMPONENTS python  thread REQUIRED) 
ELSEIF(NOT Boost_FOUND)
  MESSAGE(FATAL_ERROR "Unable to find Boost. Did you set BOOST_ROOT?")
ELSEIF(NOT PYTHONLIBS_FOUND)
  MESSAGE(FATAL_ERROR "Unable to find Python. Did you set PYTHONPATH?")
ENDIF()

# Compile Flag
IF(CMAKE_COMPILER_IS_GNUCXX)
  ADD_DEFINITIONS("-Wall")
ELSE()
  MESSAGE(FATAL_ERROR "CMakeLists.txt has not been tested/written for your compiler.")
ENDIF()

# Search Source Files
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src)
    
FILE(GLOB_RECURSE CPPLIB_SRC_LIST "src/*.cc")# "src/EpicsV4Src/*.cc")

# Compile Library for CPP
ADD_LIBRARY(CtrlSvc SHARED ${CPPLIB_SRC_LIST})
TARGET_LINK_LIBRARIES(CtrlSvc ${Boost_LIBRARIES}) 
TARGET_LINK_LIBRARIES(CtrlSvc ${SniperKernel_LIBRARIES})
TARGET_LINK_LIBRARIES(CtrlSvc ${DroNECore_LIBRARIES})
TARGET_LINK_LIBRARIES(CtrlSvc ${DataSvc_LIBRARIES})

# add libDataSvcPython
#FILE(GLOB_RECURSE PYBLIB_SRC_LIST "src/binding/*.cc")
#ADD_LIBRARY(CtrlSvcPython SHARED ${PYBLIB_SRC_LIST})
#TARGET_LINK_LIBRARIES(CtrlSvcPython ${Boost_LIBRARIES})
#TARGET_LINK_LIBRARIES(CtrlSvcPython CtrlSvc)

# Output Path and Install Area
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

IF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  SET(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/../../../DroNEInstall/)
ENDIF()

INSTALL(TARGETS CtrlSvc LIBRARY DESTINATION lib)
#INSTALL(TARGETS CtrlSvcPython LIBRARY DESTINATION pylib)
INSTALL(DIRECTORY CtrlSvc DESTINATION include)
INSTALL(DIRECTORY python/CtrlSvc DESTINATION pylib)
INSTALL(DIRECTORY python/NEON DESTINATION pylib)
