# 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 "computeparticles.cpp"
               "../external/ktx/lib/texture.c"
               "../external/ktx/lib/hashlist.c"
               "../external/ktx/lib/swap.c"
               "../external/ktx/lib/checkheader.c"
               "../external/ktx/lib/filestream.c"
               "../external/ktx/lib/memstream.c")

set(TARGET_NAME_VK "vk_computeparticles")
set(TARGET_NAME_VKSC "vksc_computeparticles")

set(SRC_WFD_NVSCI "../common/wfd_nvsci.cpp"
                  "../common/wfdSwapChain.cpp")


if (HOST_BUILD)
    # Override the target name on host build
    set(TARGET_NAME_VK "vk_computeparticles_host")
endif()

if (NOT TARGET_OS STREQUAL "QNX")
    # Build normal Vulkan binary for all platforms
    add_executable(${TARGET_NAME_VK} ${SRC_FILES})
    target_include_directories(${TARGET_NAME_VK}  PUBLIC ${VULKAN_HEADER_PATH})
    target_link_libraries(${TARGET_NAME_VK}  ${VULKAN_LIB})
    target_include_directories(${TARGET_NAME_VK}  PUBLIC ${EXTERNAL_HEADERS_PATH})
    # link external libraries
    foreach (LIB ${EXTERNAL_LIBS})
        target_link_libraries(${TARGET_NAME_VK}  ${LIB})
    endforeach()
endif()

# Build VulkanSC only on target
if (NOT HOST_BUILD)
    add_executable(${TARGET_NAME_VKSC} ${SRC_FILES} ${SRC_WFD_NVSCI})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${VULKANSC_HEADER_PATH})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${COMMON_HEADERS_PATH})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${NVSCI_HEADER_PATH})
    target_include_directories(${TARGET_NAME_VKSC}  PUBLIC ${EXTERNAL_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()

    foreach (LIB ${EXTERNAL_LIBS})
        target_link_libraries(${TARGET_NAME_VKSC}  ${LIB})
    endforeach()
endif()
