if(VMA_BUILD_EXAMPLE_APP_SHADERS)
    add_subdirectory(Shaders)
endif()

if(VMA_BUILD_REPLAY_APP)
    add_subdirectory(VmaReplay)
endif()

set(VMA_LIBRARY_SOURCE_FILES
    VmaUsage.cpp
)

add_library(VulkanMemoryAllocator ${VMA_LIBRARY_SOURCE_FILES})

set_target_properties(
    VulkanMemoryAllocator PROPERTIES

    CXX_EXTENSIONS OFF
    # Use C++14
    CXX_STANDARD 14
    CXX_STANDARD_REQUIRED ON
)

target_include_directories(VulkanMemoryAllocator PUBLIC ${PROJECT_SOURCE_DIR}/include)

target_link_libraries(
    VulkanMemoryAllocator

    PUBLIC
    Vulkan::Vulkan
)

set(VMA_EXAMPLE_SOURCE_FILES
    Common.cpp
    SparseBindingTest.cpp
    Tests.cpp
    VulkanSample.cpp
)

if (VMA_BUILD_EXAMPLE_APP)
    if(WIN32)
        add_executable(VmaExample ${VMA_EXAMPLE_SOURCE_FILES})

        # Visual Studio specific settings
        if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*")
            # Use Unicode instead of multibyte set
            add_definitions(-DUNICODE -D_UNICODE)
            
            # Set VmaExample as startup project
            set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT "VmaExample")
            
            # Enable multithreaded compiling
            target_compile_options(VmaExample PRIVATE "/MP")

            # Set working directory for Visual Studio debugger
            set_target_properties(
                VmaExample
                PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/bin"
            )
        endif()

        set_target_properties(
            VmaExample PROPERTIES

            CXX_EXTENSIONS OFF
            # Use C++14
            CXX_STANDARD 14
            CXX_STANDARD_REQUIRED ON
        )

        target_link_libraries(
            VmaExample

            PRIVATE
            VulkanMemoryAllocator
            Vulkan::Vulkan
        )
    else()
        message(STATUS "VmaExample application is not supported to Linux")
    endif()
endif()
