set (NATIVE_PROJECT_NAME nativeplayer)

# Assets are located in UWP_RESOURCE_DIR and will be copied for this build directory
set(NATIVE_ASSETS
    Assets/LockScreenLogo.scale-200.png
    Assets/SplashScreen.png
    Assets/Square44x44Logo.scale-200.png
    Assets/Square44x44Logo.targetsize-24_altform-unplated.png
    Assets/Square150x150Logo.scale-200.png
    Assets/StoreLogo.png
    Assets/Wide310x150Logo.scale-200.png
)

copy_resources(
  SOURCE ${UWP_RESOURCE_DIR}
  DESTINATION Assets
  FILES ${NATIVE_ASSETS}
)

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

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

set(NATIVE_MANIFEST nativeplayer-Package.appxmanifest)
set_property(SOURCE ${NATIVE_MANIFEST} PROPERTY VS_DEPLOYMENT_CONTENT 1)

set(CERT_KEY playercore_TemporaryKey.pfx)

copy_resources(
  SOURCE ${UWP_RESOURCE_DIR}
  DESTINATION .
  FILES ${CERT_KEY}
)

add_executable( ${NATIVE_PROJECT_NAME}
                ${NATIVE_SOURCE}
                ${NATIVE_ASSETS}
                ${PIXEL_SHADERS}
                ${VERTEX_SHADERS}
                ${CERT_KEY}
                ${NATIVE_MANIFEST}
                )
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 )

# Most header files are in the windows directory.
target_include_directories(${NATIVE_PROJECT_NAME} PRIVATE ../windows)

# 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")

# See https://github.com/Microsoft/CMake/blob/feature/Win10/Tests/VSWinStorePhone/CMakeLists.txt for reference
set_source_files_properties(App.xaml PROPERTIES VS_XAML_TYPE ApplicationDefinition)

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>>)

set_property(TARGET ${NATIVE_PROJECT_NAME} PROPERTY VS_WINRT_COMPONENT TRUE)

message(STATUS "Targeting Windows 10. Setting Extensions to version ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set_property(TARGET ${NATIVE_PROJECT_NAME} PROPERTY VS_DESKTOP_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set_property(TARGET ${NATIVE_PROJECT_NAME} PROPERTY VS_MOBILE_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set_property(TARGET ${NATIVE_PROJECT_NAME} PROPERTY VS_IOT_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
