cmake_minimum_required (VERSION 3.6)

project(RenderScript CXX)

set(INCLUDE 
	include/BlendStateDescParser.h
	include/BufferParser.h
	include/BufferViewParser.h
	include/ClassMethodBinding.h
	include/ConvenienceFunctions.h
	include/Debug.h
	include/DepthStencilStateDescParser.h
	include/DeviceContextFuncBindings.h
	include/DrawAttribsParser.h
	include/EngineObjectParserBase.h
	include/EngineObjectParserCommon.h
	include/EnumMappings.h
	include/InputLayoutDescParser.h
	include/LuaBindings.h
	include/LuaFunctionBinding.h
	include/LuaWrappers.h
	include/ParsingErrors.h
	include/pch.h
	include/PSODescParser.h
	include/RasterizerStateDescParser.h
	include/ResourceMappingParser.h
	include/SamplerParser.h
	include/ScissorRectParser.h
	include/ScriptParser.h
	include/ShaderParser.h
	include/ShaderResourceBindingParser.h
	include/ShaderVariableParser.h
	include/TextureParser.h
	include/TextureViewParser.h
	include/ViewportParser.h
)

set(SOURCE 
	src/BlendStateDescParser.cpp
	src/BufferParser.cpp
	src/BufferViewParser.cpp
	src/DepthStencilStateDescParser.cpp
	src/DeviceContextFuncBindings.cpp
	src/DrawAttribsParser.cpp
	src/EngineObjectParserBase.cpp
	src/EnumMappings.cpp
	src/InputLayoutDescParser.cpp
	src/LuaBindings.cpp
	src/LuaFunctionBinding.cpp
	src/LuaWrappers.cpp
	src/ParsingErrors.cpp
	src/PSODescParser.cpp
	src/RasterizerStateDescParser.cpp
	src/ResourceMappingParser.cpp
	src/SamplerParser.cpp
	src/ScissorRectParser.cpp
	src/ScriptParser.cpp
	src/ShaderParser.cpp
	src/ShaderResourceBindingParser.cpp
	src/ShaderVariableParser.cpp
	src/TextureParser.cpp
	src/TextureViewParser.cpp
	src/ViewportParser.cpp
)

add_library(RenderScript STATIC ${SOURCE} ${INCLUDE})
set_common_target_properties(RenderScript)

target_include_directories(RenderScript 
PUBLIC
	include
)

if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR 
	CMAKE_CXX_COMPILER_ID MATCHES "GNU")
	# Suppress warnings from applying the offsetof macro to a non-POD type
	#	warning: offset of on non-standard-layout type [-Winvalid-offsetof]
	# This is OK because the warning is generated for simple structs (such as TextureDesc) 
	# that fail to be a POD type only by virtue of having a constructor and comparison operator
	target_compile_options(RenderScript PRIVATE -Wno-invalid-offsetof)
endif()

source_group("source" FILES ${SOURCE})
source_group("include" FILES ${INCLUDE})

target_link_libraries(RenderScript 
PRIVATE 
	BuildSettings 
	GraphicsEngineInterface
	GraphicsAccessories
	Lua 
	Common 
	PlatformInterface 
	GraphicsTools
)

set_target_properties(RenderScript PROPERTIES
	FOLDER Tools
)