# Common OpenGL CTS Test Code

if (DEQP_SUPPORT_WGL)
	include_directories(${PROJECT_SOURCE_DIR}/framework/platform/win32)
	add_definitions(-DGLCTS_SUPPORT_WGL=1)
endif ()

add_subdirectory(subgroups)
include_directories(subgroups)

set(GLCTS_COMMON_SRCS
	glcAggressiveShaderOptimizationsTests.cpp
	glcAggressiveShaderOptimizationsTests.hpp
	glcBlendEquationAdvancedTests.cpp
	glcBlendEquationAdvancedTests.hpp
	glcConfigList.hpp
	glcConfigList.cpp
	glcConfigListCase.cpp
	glcConfigListCase.hpp
	glcConfigListEGL.hpp
	glcConfigListEGL.cpp
	glcConfigListWGL.hpp
	glcConfigListWGL.cpp
	glcConfigPackage.cpp
	glcConfigPackage.hpp
	glcContext.cpp
	glcContext.hpp
	glcContextFlagsTests.cpp
	glcContextFlagsTests.hpp
	glcExposedExtensionsTests.cpp
	glcExposedExtensionsTests.hpp
	glcFragDepthTests.cpp
	glcFragDepthTests.hpp
	glcInfoTests.cpp
	glcInfoTests.hpp
	glcInternalformatTests.cpp
	glcInternalformatTests.hpp
	glcMisc.cpp
	glcMisc.hpp
	glcKHRDebugTests.cpp
	glcKHRDebugTests.hpp
	glcMultipleContextsTests.cpp
	glcMultipleContextsTests.hpp
	glcNearestEdgeTests.cpp
	glcNearestEdgeTests.hpp
	glcNoErrorTests.cpp
	glcNoErrorTests.hpp
	glcRobustnessTests.cpp
	glcRobustnessTests.hpp
	glcPackedPixelsTests.cpp
	glcPackedPixelsTests.hpp
	glcPolygonOffsetClampTests.cpp
	glcPolygonOffsetClampTests.hpp
	glcPackedDepthStencilTests.cpp
	glcPackedDepthStencilTests.hpp
	glcParallelShaderCompileTests.cpp
	glcParallelShaderCompileTests.hpp
	glcPixelStorageModesTests.cpp
	glcPixelStorageModesTests.hpp
	glcRobustBufferAccessBehaviorTests.cpp
	glcRobustBufferAccessBehaviorTests.hpp
	glcSeparableProgramsTransformFeedbackTests.cpp
	glcSeparableProgramsTransformFeedbackTests.hpp
	glcShaderConstExprTests.hpp
	glcShaderConstExprTests.cpp
	glcShaderGroupVoteTests.cpp
	glcShaderGroupVoteTests.hpp
	glcShaderIndexingTests.cpp
	glcShaderIndexingTests.hpp
	glcShaderIntegerMixTests.cpp
	glcShaderIntegerMixTests.hpp
	glcShaderLibrary.cpp
	glcShaderLibrary.hpp
	glcShaderLibraryCase.cpp
	glcShaderLibraryCase.hpp
	glcShaderLoopTests.cpp
	glcShaderLoopTests.hpp
	glcShaderNegativeTests.hpp
	glcShaderNegativeTests.cpp
	glcShaderMacroTests.cpp
	glcShaderMacroTests.hpp
	glcShaderMultisampleInterpolationTests.cpp
	glcShaderMultisampleInterpolationTests.hpp
	glcShaderRenderCase.cpp
	glcShaderRenderCase.hpp
	glcShaderStructTests.cpp
	glcShaderStructTests.hpp
	glcSampleVariablesTests.cpp
	glcSampleVariablesTests.hpp
	glcSpirvUtils.cpp
	glcSpirvUtils.hpp
	glcTestCase.cpp
	glcTestCase.hpp
	glcTestCaseWrapper.cpp
	glcTestCaseWrapper.hpp
	glcTestPackage.cpp
	glcTestPackage.hpp
	glcTextureCompatibilityTests.cpp
	glcTextureCompatibilityTests.hpp
	glcTextureFilterAnisotropicTests.cpp
	glcTextureFilterAnisotropicTests.hpp
	glcTextureRepeatModeTests.cpp
	glcTextureRepeatModeTests.hpp
	glcUniformBlockCase.cpp
	glcUniformBlockCase.hpp
	glcUniformBlockTests.cpp
	glcUniformBlockTests.hpp
	glcViewportArrayTests.cpp
	glcViewportArrayTests.hpp
	glcTestSubcase.cpp
	glcTestSubcase.hpp
	glcExtTokens.cpp
	glcExtTokens.hpp
	glcLayoutLocationTests.cpp
	glcLayoutLocationTests.hpp
	glcLimitTest.inl
	glcLimitTest.hpp
	glcWaiver.hpp
	glcGLSLVectorConstructorTests.cpp
	glcGLSLVectorConstructorTests.hpp
	glcFramebufferCompleteness.cpp
	glcFramebufferCompleteness.hpp
	)

set(GLCTS_COMMON_LIBS
	glutil
	tcutil
	eglutil
	deqp-gl-subgroups
	)

# Add glslang
include_directories(${GLSLANG_INCLUDE_PATH})

# \note Code interfacing with glslang needs to include third-party headers
#       that cause all sorts of warnings to appear.
if (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG)
	set_source_files_properties(
		FILES glcSpirvUtils.cpp
		PROPERTIES COMPILE_FLAGS "${DE_3RD_PARTY_CXX_FLAGS}")
endif ()

set(GLCTS_COMMON_LIBS ${GLCTS_COMMON_LIBS} ${GLSLANG_LIBRARIES})

# Add spirv-tools
include_directories(${spirv-tools_SOURCE_DIR}/include)
include_directories(${spirv-tools_SOURCE_DIR}/external/include)

set(GLCTS_COMMON_LIBS ${GLCTS_COMMON_LIBS} SPIRV-Tools)


PCH(GLCTS_COMMON_SRCS ../pch.cpp)

add_library(glcts-common STATIC ${GLCTS_COMMON_SRCS})
target_link_libraries(glcts-common ${GLCTS_COMMON_LIBS})

set(GLCTS_COMMON_NOCONTEXTPACKAGE_SRCS
	glcSingleConfigTestPackage.cpp
	glcSingleConfigTestPackage.hpp
	glcNoDefaultContextPackage.cpp
	glcNoDefaultContextPackage.hpp
	)
add_library(glcts-common-nocontext-package STATIC ${GLCTS_COMMON_NOCONTEXTPACKAGE_SRCS})
