# dEQP-GLES3

include_directories(
	../glshared
	.				# For child modules
	)

add_subdirectory(accuracy)
add_subdirectory(functional)
add_subdirectory(performance)
add_subdirectory(stress)

include_directories(
	accuracy
	functional
	performance
	stress
	)

set(DEQP_GLES3_SRCS
	tes3Context.cpp
	tes3Context.hpp
	tes3InfoTests.cpp
	tes3InfoTests.hpp
	tes3TestCase.cpp
	tes3TestCase.hpp
	tes3TestCaseWrapper.cpp
	tes3TestCaseWrapper.hpp
	tes3TestPackage.cpp
	tes3TestPackage.hpp
	)

set(DEQP_GLES3_LIBS
	deqp-gles3-accuracy
	deqp-gles3-functional
	deqp-gles3-performance
	deqp-gles3-stress
	tcutil
	glutil
	${DEQP_GLES3_LIBRARIES}
	)

add_deqp_module(deqp-gles3 "${DEQP_GLES3_SRCS}" "${DEQP_GLES3_LIBS}" tes3TestPackageEntry.cpp)

# Data directories
add_data_dir(deqp-gles3 ../../data/gles3/data		gles3/data)
add_data_dir(deqp-gles3 ../../data/gles3/shaders	gles3/shaders)
