# It builds two binaries for VulkanSC and Vulkan.
# Vulkan binary is only used to generate the json file, it can be ran on target or host.
# VulkanSC binary is used to demo the VulkanSC APIs, and can only be ran on target.
set(SRC_FILES_COMMON "vksc_01tri.cpp")
set(SRC_WFD_NVSCI "../common/wfd_nvsci.cpp")
set(TARGET_NAME_VK "vk_01tri")
set(TARGET_NAME_VKSC "vksc_01tri")

if (HOST_BUILD)
    set(TARGET_NAME_VK "vk_01tri_host")
endif()

if (NOT TARGET_OS STREQUAL "QNX")
    # Build normal Vulkan binary for all platforms
    add_executable(${TARGET_NAME_VK} ${SRC_FILES_COMMON})
    target_include_directories(${TARGET_NAME_VK}  PUBLIC ${VULKAN_HEADER_PATH})
    target_link_libraries(${TARGET_NAME_VK}  ${VULKAN_LIB})

    # Define 'Vulkan' macro for normal Vulkan build
    set_target_properties(${TARGET_NAME_VK}  PROPERTIES COMPILE_DEFINITIONS VULKAN)
endif()

# We don't build VulkanSC binary for host build.
if (NOT HOST_BUILD)
    add_executable(${TARGET_NAME_VKSC} ${SRC_FILES_COMMON} ${SRC_WFD_NVSCI})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${VULKANSC_HEADER_PATH})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${NVSCI_HEADER_PATH})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${EXTERNAL_HEADERS_PATH})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${COMMON_HEADERS_PATH})
    set_target_properties(${TARGET_NAME_VKSC}  PROPERTIES COMPILE_DEFINITIONS VULKANSC)

    foreach (LIB ${VKSC_DEP_LIBS})
        target_link_libraries(${TARGET_NAME_VKSC} ${LIB})
    endforeach()

    if (OPENWFD_LIBS)
        foreach (LIB ${OPENWFD_LIBS})
            target_link_libraries(${TARGET_NAME_VKSC} ${LIB})
        endforeach()
    endif()
endif()
