# Executor

# Executor depends on execserver library (xscore)
include_directories(../execserver)

set(XECORE_SRCS
	xeBatchExecutor.cpp
	xeBatchExecutor.hpp
	xeBatchResult.cpp
	xeBatchResult.hpp
	xeCallQueue.cpp
	xeCallQueue.hpp
	xeCommLink.cpp
	xeCommLink.hpp
	xeContainerFormatParser.cpp
	xeContainerFormatParser.hpp
	xeDefs.cpp
	xeDefs.hpp
	xeLocalTcpIpLink.cpp
	xeLocalTcpIpLink.hpp
	xeTcpIpLink.cpp
	xeTcpIpLink.hpp
	xeTestCase.cpp
	xeTestCase.hpp
	xeTestCaseListParser.cpp
	xeTestCaseListParser.hpp
	xeTestCaseResult.cpp
	xeTestCaseResult.hpp
	xeTestLogParser.cpp
	xeTestLogParser.hpp
	xeTestLogWriter.cpp
	xeTestLogWriter.hpp
	xeTestResultParser.cpp
	xeTestResultParser.hpp
	xeXMLParser.cpp
	xeXMLParser.hpp
	xeXMLWriter.cpp
	xeXMLWriter.hpp
	)

set(XECORE_LIBS
	xscore
	decpp
	deutil
	dethread
	debase
	)

add_library(xecore STATIC ${XECORE_SRCS})
target_link_libraries(xecore ${XECORE_LIBS})

include_directories(.)

if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX OR DE_OS_IS_ANDROID OR DE_OS_IS_FUCHSIA)
	add_executable(executor tools/xeCommandLineExecutor.cpp)
	target_link_libraries(executor xecore ${DEQP_PLATFORM_LIBRARIES})
endif ()

if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX)
	add_executable(testlog-to-csv tools/xeTestLogCompare.cpp)
	target_link_libraries(testlog-to-csv xecore)

	add_executable(testlog-to-xml tools/xeBatchResultToXml.cpp)
	target_link_libraries(testlog-to-xml xecore)

	add_executable(testlog-to-junit tools/xeBatchResultToJUnit.cpp)
	target_link_libraries(testlog-to-junit xecore)

	add_executable(extract-values tools/xeExtractValues.cpp)
	target_link_libraries(extract-values xecore)

	add_executable(extract-shader-programs tools/xeExtractShaderPrograms.cpp)
	target_link_libraries(extract-shader-programs xecore)

	add_executable(merge-testlogs tools/xeMergeTestLogs.cpp)
	target_link_libraries(merge-testlogs xecore)

	add_executable(extract-sample-lists tools/xeExtractSampleLists.cpp)
	target_link_libraries(extract-sample-lists xecore)
endif ()
