CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

AUTO_SOURCES(unit_SOURCES "*.cpp" "RECURSE" ${CMAKE_CURRENT_SOURCE_DIR})

INCLUDE_DIRECTORIES(${gmock_INCLUDE_DIR} ${gtest_INCLUDE_DIR} ${libyarn_ROOT_SOURCES_DIR})

IF(NEED_BOOST)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
ENDIF(NEED_BOOST)

INCLUDE_DIRECTORIES(${libyarn_ROOT_SOURCES_DIR})
INCLUDE_DIRECTORIES(${libyarn_COMMON_SOURCES_DIR})
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
INCLUDE_DIRECTORIES(${libyarn_PLATFORM_HEADER_DIR})
INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${KERBEROS_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${GSASL_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/mock)

ADD_DEFINITIONS(-DMOCKTEST)

PROTOBUF_GENERATE_CPP(libyarn_PROTO_SOURCES libyarn_PROTO_HEADERS ${libyarn_PROTO_FILES})

SET(libyarn_SOURCES ${libyarn_SOURCES} ${libyarn_MOCK_SOURCES})

ADD_EXECUTABLE(unit EXCLUDE_FROM_ALL
    ${gtest_SOURCES}
    ${gmock_SOURCES}
    ${libyarn_SOURCES} 
    ${libyarn_PROTO_SOURCES} 
    ${libyarn_PROTO_HEADERS}
    ${unit_SOURCES}
)

TARGET_LINK_LIBRARIES(unit pthread)

IF(NEED_BOOST)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${Boost_LIBRARY_DIRS}")
    TARGET_LINK_LIBRARIES(unit boost_thread)
    TARGET_LINK_LIBRARIES(unit boost_chrono)
    TARGET_LINK_LIBRARIES(unit boost_system)
ENDIF(NEED_BOOST)

IF(NEED_GCCEH)
	TARGET_LINK_LIBRARIES(unit gcc_eh)
ENDIF(NEED_GCCEH)

IF(OS_LINUX)
	TARGET_LINK_LIBRARIES(unit uuid)
ENDIF(OS_LINUX)

TARGET_LINK_LIBRARIES(unit ${PROTOBUF_LIBRARIES})
TARGET_LINK_LIBRARIES(unit ${LIBXML2_LIBRARIES})
TARGET_LINK_LIBRARIES(unit ${KERBEROS_LIBRARIES})
TARGET_LINK_LIBRARIES(unit ${GSASL_LIBRARIES})
TARGET_LINK_LIBRARIES(unit ${GoogleTest_LIBRARIES})

SET(unit_SOURCES ${unit_SOURCES} PARENT_SCOPE)

