add_library(gfxrecon_decode STATIC "")

target_sources(gfxrecon_decode
               PRIVATE
                   ${GFXRECON_SOURCE_DIR}/framework/decode/annotation_handler.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/api_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/copy_shaders.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/custom_vulkan_struct_decoders.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/custom_vulkan_struct_decoders.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/custom_vulkan_struct_decoders_forward.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/custom_vulkan_struct_handle_mappers.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/custom_vulkan_struct_handle_mappers.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/decode_allocator.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/decode_allocator.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/descriptor_update_template_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/descriptor_update_template_decoder.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/file_processor.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/file_processor.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/file_transformer.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/file_transformer.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/handle_pointer_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/pnext_node.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/pnext_typed_node.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/pointer_decoder_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/pointer_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/portability.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/portability.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/referenced_resource_table.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/referenced_resource_table.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/replay_options.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/resource_util.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/resource_util.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/screenshot_handler.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/screenshot_handler.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/string_array_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/string_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/struct_pointer_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/swapchain_image_tracker.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/value_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_ascii_consumer_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_ascii_consumer_base.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_consumer_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_decoder_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_decoder_base.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_default_allocator.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_default_allocator.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_enum_util.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_feature_util.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_feature_util.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_handle_mapping_util.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_handle_mapping_util.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_object_cleanup_util.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_object_cleanup_util.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_object_info.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_object_info_table.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_object_info_table_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_realign_allocator.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_realign_allocator.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_rebind_allocator.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_rebind_allocator.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_referenced_resource_consumer_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_referenced_resource_consumer_base.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_remap_allocator.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_remap_allocator.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_consumer_base.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_consumer_base.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_options.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_allocator.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_initializer.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_initializer.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_tracking_consumer.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_tracking_consumer.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_tracked_object_info.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_tracked_object_info_table.h
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_tracked_object_info.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_tracked_object_info_table.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/decode/window.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_ascii_consumer.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_ascii_consumer.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_consumer.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_decoder.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_decoder.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_feature_util.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_referenced_resource_consumer.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_referenced_resource_consumer.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_replay_consumer.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_replay_consumer.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_struct_decoders_forward.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_struct_decoders.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_struct_decoders.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_struct_handle_mappers.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_struct_handle_mappers.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_decode_pnext_struct.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_enum_to_string.h
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_enum_to_string.cpp
                   ${GFXRECON_SOURCE_DIR}/framework/generated/generated_vulkan_object_info_table_base2.h
              )

target_include_directories(gfxrecon_decode
                           PUBLIC
                               ${GFXRECON_SOURCE_DIR}/framework)

target_link_libraries(gfxrecon_decode gfxrecon_graphics gfxrecon_format gfxrecon_util vulkan_registry vulkan_memory_allocator platform_specific)
