# dEQP-VK.amber

include_directories(..)

set(DEQP_VK_AMBER_SRCS
	vktAmberHelper.hpp
	vktAmberHelper.cpp
	vktAmberTestCase.hpp
	vktAmberTestCase.cpp
	vktAmberTestCaseUtil.cpp
	vktAmberGraphicsFuzzTests.hpp
	vktAmberGraphicsFuzzTests.cpp
	vktAmberGlslTests.hpp
	vktAmberGlslTests.cpp
	)

set(DEQP_VK_AMBER_LIBS
	tcutil
	libamber
	)

if (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG)
	set(CMAKE_CXX_FLAGS	"${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
	set_source_files_properties(
		FILES vktAmberHelper.cpp
		PROPERTIES COMPILE_FLAGS "${DE_3RD_PARTY_CXX_FLAGS}")
elseif (DE_COMPILER_IS_MSC)
	set(CMAKE_CXX_FLAGS	"${CMAKE_CXX_FLAGS} /wd4068")
endif ()

add_library(deqp-vk-amber STATIC ${DEQP_VK_AMBER_SRCS})
target_include_directories(deqp-vk-amber PUBLIC ${PROJECT_SOURCE_DIR}/external/amber/src/include)
target_include_directories(deqp-vk-amber PUBLIC ${PROJECT_SOURCE_DIR}/external/vulkancts/framework/vulkan ${PROJECT_SOURCE_DIR}/external/vulkancts/framework/vulkan/generated/vulkan)
target_compile_definitions(deqp-vk-amber PUBLIC AMBER_CTS_VULKAN_HEADER=1)
target_link_libraries(deqp-vk-amber ${DEQP_VK_AMBER_LIBS})

add_custom_target(deqp-vk-amber-data)
add_dependencies(deqp-vk-amber deqp-vk-amber-data)
add_data_dir(deqp-vk-amber ../../../data/vulkan/amber amber)
