cmake_minimum_required(VERSION 3.5.1)

PROJECT(GeminiSDKConsoleApp)

file(GLOB_RECURSE Source *.cpp)
file(GLOB_RECURSE Header *.h )

set(SDK_PLATFORM_NAME x64)


if( ${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC )
    add_definitions(-D_WIN32_WINNT=0x0601 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS)
endif()

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

# default installation path
set( GeminiSDK_PATH     ${CMAKE_CURRENT_SOURCE_DIR}/../../ )

if( "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" )
    set(FIND_BOOST_VERSION 1.61)
    set(BOOST_LOCAL_PATH    C:/devtools/boost/boost_1_61_0)
    set(BOOST_LIBRARYDIR    ${BOOST_LOCAL_PATH}/lib32-msvc-10.0)
    set(Boost_USE_STATIC_LIBS ON)
    set(BOOST_MULTI_THREADED  ON)

    add_definitions(-DECDLOGDATATYPES_STATIC_LIBRARY)
    set( ECDLOG_TGT_IMG_LIB ${GeminiSDK_PATH}/libs/ECDLogDataTypes/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/${SDK_PLATFORM_NAME}/${CMAKE_BUILD_TYPE}/ECDLogDataTypes.lib )
    set( MATHS_LIB          ${GeminiSDK_PATH}/libs/MathsLib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/${SDK_PLATFORM_NAME}/${CMAKE_BUILD_TYPE}/MathsLib.lib )
    set( SVS5_LIB           ${GeminiSDK_PATH}/libs/Svs5SeqLib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/${SDK_PLATFORM_NAME}/${CMAKE_BUILD_TYPE}/Svs5SeqLib.lib )
else()
    set(FIND_BOOST_VERSION "")
    set(BOOST_STATIC_LINKING OFF) 
    set(BOOST_MULTI_THREADED OFF)
	if (EXISTS $ENV{OECORE_TARGET_SYSROOT} )
	    Set (BOOST_LOCAL_PATH "$ENV{OECORE_TARGET_SYSROOT}/usr")
    endif()

    set( SYSTEM_LIBRARIES  "-lrt -lpthread")
    set( GEMINI_COMMS_LIB   ${GeminiSDK_PATH}/libs/GeminiComms/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/${SDK_PLATFORM_NAME}/${CMAKE_BUILD_TYPE}/libGeminiComms.so )
    set( SVS5_LIB           ${GeminiSDK_PATH}/libs/Svs5SeqLib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/${SDK_PLATFORM_NAME}/${CMAKE_BUILD_TYPE}/libSvs5SeqLib.so )
endif()


include_directories(${GeminiSDK_PATH}include)
include_directories(${GeminiSDK_PATH}include/ECDLogDataTypes)


set(BOOST_ROOT          ${BOOST_LOCAL_PATH})
#######################################################################################################
# Find boost componenets based on the path specified above
#######################################################################################################

FIND_PACKAGE(Boost ${FIND_BOOST_VERSION})
IF (Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    ADD_DEFINITIONS( "-DHAS_BOOST" )

    set(BoostComponents date_time filesystem system iostreams thread program_options serialization regex locale)
    #if (NOT EXISTS $ENV{OECORE_TARGET_SYSROOT} )
    #    set(BoostComponents ${BoostComponents} exception)
    #endif()
    #if (NOT Boost_VERSION VERSION_LESS ${MIN_BOOST_LOGGER_VERSION})
    #    set(BoostComponents ${BoostComponents} log_setup log)
    #endif()
    if (WIN32)
        set(BoostComponents ${BoostComponents} zlib)
    endif()

    FIND_PACKAGE(Boost REQUIRED COMPONENTS ${BoostComponents})

    message(${Boost_INCLUDE_DIRS})
    message(${Boost_LIBRARIES})
endif()

add_executable(${PROJECT_NAME} ${UI_HEADERS} ${Source} ${Header} ${RESOURCES})

TARGET_LINK_LIBRARIES(${PROJECT_NAME}
                        ${SVS5_LIB}
                        ${GEMINI_COMMS_LIB}
                        ${Boost_LIBRARIES}
                        ${SYSTEM_LIBRARIES}
                        )


