set (NATIVE_PROJECT_NAME nativeplayer)

# Pixels and vertex shaders
set(PIXEL_SHADERS
    Common/SamplePixelShader.hlsl
)
set(VERTEX_SHADERS
    Common/SampleVertexShader.hlsl
)

# Native Player
set(NATIVE_SOURCE
    nativeplayer.cpp
    nativeplayer.hpp
    App.cpp
    App.h
    nativeplayerMain.cpp
    nativeplayerMain.h
    pch.cpp
    pch.h
    Common/DeviceResources.cpp
    Common/DeviceResources.h
    Common/DirectXHelper.h
    Common/StepTimer.h
    Common/TextureAndSRVNV12.cpp
    Common/TextureAndSRVNV12.hpp
    Common/TextureMapper.cpp
    Common/TextureMapper.hpp
    Content/Renderer.cpp
    Content/Renderer.h
    Content/ControlRenderer.cpp
    Content/ControlRenderer.h
    Content/DebugRenderer.cpp
    Content/DebugRenderer.h
    Content/QualityButtonRenderer.cpp
    Content/QualityButtonRenderer.h
    Content/Sample3DSceneRenderer.cpp
    Content/Sample3DSceneRenderer.h
    Content/ShaderStructures.h
    Content/TimelineRenderer.cpp
    Content/TimelineRenderer.h
    )

add_executable( ${NATIVE_PROJECT_NAME} WIN32
                ${NATIVE_SOURCE}
                ${PIXEL_SHADERS}
                ${VERTEX_SHADERS}
                )
target_link_libraries(${NATIVE_PROJECT_NAME} mediaplayer platforms options)
set_target_properties (${NATIVE_PROJECT_NAME} PROPERTIES FOLDER examples)

target_link_libraries(${NATIVE_PROJECT_NAME}
    mincore
    d3d12
    dxgi
    dxguid
)

# Generate Files are in the build directory and can't see the includes
target_include_directories(${NATIVE_PROJECT_NAME} PRIVATE .)

# And for crazy reasons, the nativeplayer.g.h ends up in the Generated Files\examples\native directory
target_include_directories(${NATIVE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/Generated Files/examples/native )

# For pch.h
target_include_directories(${NATIVE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(${NATIVE_PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/Yupch.h")
set_source_files_properties(pch.cpp PROPERTIES COMPILE_FLAGS "/Ycpch.h")

set_property(SOURCE ${PIXEL_SHADERS} PROPERTY VS_SHADER_TYPE Pixel)
set_property(SOURCE ${PIXEL_SHADERS} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
set_property(SOURCE ${PIXEL_SHADERS} PROPERTY VS_SHADER_ENTRYPOINT main)
set_property(SOURCE ${PIXEL_SHADERS} PROPERTY VS_DEPLOYMENT_CONTENT 1)

set_property(SOURCE ${VERTEX_SHADERS} PROPERTY VS_SHADER_TYPE Vertex)
set_property(SOURCE ${VERTEX_SHADERS} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
set_property(SOURCE ${VERTEX_SHADERS} PROPERTY VS_SHADER_ENTRYPOINT main)
set_property(SOURCE ${VERTEX_SHADERS} PROPERTY VS_DEPLOYMENT_CONTENT 1)

set_property(SOURCE ${NATIVE_ASSETS} PROPERTY VS_DEPLOYMENT_CONTENT 1)
set_property(SOURCE ${NATIVE_ASSETS} PROPERTY VS_DEPLOYMENT_LOCATION "Assets")

set_property(SOURCE ${DEBUG_CONTENT_FILES} PROPERTY VS_DEPLOYMENT_CONTENT $<CONFIG:Debug>)
set_property(SOURCE ${RELEASE_CONTENT_FILES} PROPERTY VS_DEPLOYMENT_CONTENT $<OR:$<CONFIG:Release>>)
