PROJECT(DroNECore)
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)
#FIND_PACKAGE(Data REQUIRED)
#IF(DATA_FOUND AND SNIPERKERNEL_FOUND)
IF(SNIPERKERNEL_FOUND)
  INCLUDE_DIRECTORIES(${SniperKernel_INCLUDE_DIRS} ${Data_INCLUDE_DIRS})
ELSEIF(NOT SniperKernel_FOUND) 
  MESSAGE(FATAL_ERROR "Unable to find SniperKernel. Did you set SniperKernel_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 -Wunused-variable")
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(DroNECore SHARED ${CPPLIB_SRC_LIST})
TARGET_LINK_LIBRARIES(DroNECore ${Boost_LIBRARIES}) 
TARGET_LINK_LIBRARIES(DroNECore ${SniperKernel_LIBRARIES})

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

# 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 DroNECore LIBRARY DESTINATION lib)
INSTALL(TARGETS DroNECorePython LIBRARY DESTINATION pylib)
INSTALL(DIRECTORY DroNECore DESTINATION include)
INSTALL(DIRECTORY python/DroNECore DESTINATION pylib)
