dxvk_shaders = files([
  'shaders/dxvk_clear_buffer_u.comp',
  'shaders/dxvk_clear_buffer_f.comp',
  'shaders/dxvk_clear_image1d_u.comp',
  'shaders/dxvk_clear_image1d_f.comp',
  'shaders/dxvk_clear_image1darr_u.comp',
  'shaders/dxvk_clear_image1darr_f.comp',
  'shaders/dxvk_clear_image2d_u.comp',
  'shaders/dxvk_clear_image2d_f.comp',
  'shaders/dxvk_clear_image2darr_u.comp',
  'shaders/dxvk_clear_image2darr_f.comp',
  'shaders/dxvk_clear_image3d_u.comp',
  'shaders/dxvk_clear_image3d_f.comp',
  
  'shaders/dxvk_copy_color_1d.frag',
  'shaders/dxvk_copy_color_2d.frag',
  'shaders/dxvk_copy_color_ms.frag',
  'shaders/dxvk_copy_depth_1d.frag',
  'shaders/dxvk_copy_depth_2d.frag',
  'shaders/dxvk_copy_depth_ms.frag',

  'shaders/dxvk_mipgen_vert.vert',
  'shaders/dxvk_mipgen_geom.geom',
  'shaders/dxvk_mipgen_frag_1d.frag',
  'shaders/dxvk_mipgen_frag_2d.frag',
  'shaders/dxvk_mipgen_frag_3d.frag',

  'shaders/dxvk_pack_d24s8.comp',
  'shaders/dxvk_pack_d32s8.comp',
  
  'shaders/dxvk_resolve_vert.vert',
  'shaders/dxvk_resolve_geom.geom',
  'shaders/dxvk_resolve_frag_f.frag',
  'shaders/dxvk_resolve_frag_i.frag',
  'shaders/dxvk_resolve_frag_u.frag',

  'hud/shaders/hud_line.frag',
  'hud/shaders/hud_text.frag',
  'hud/shaders/hud_vert.vert',
])

dxvk_src = files([
  'dxvk_adapter.cpp',
  'dxvk_barrier.cpp',
  'dxvk_buffer.cpp',
  'dxvk_cmdlist.cpp',
  'dxvk_compute.cpp',
  'dxvk_context.cpp',
  'dxvk_cs.cpp',
  'dxvk_data.cpp',
  'dxvk_descriptor.cpp',
  'dxvk_device.cpp',
  'dxvk_device_filter.cpp',
  'dxvk_extensions.cpp',
  'dxvk_event.cpp',
  'dxvk_format.cpp',
  'dxvk_framebuffer.cpp',
  'dxvk_gpu_event.cpp',
  'dxvk_graphics.cpp',
  'dxvk_image.cpp',
  'dxvk_instance.cpp',
  'dxvk_lifetime.cpp',
  'dxvk_main.cpp',
  'dxvk_memory.cpp',
  'dxvk_meta_clear.cpp',
  'dxvk_meta_copy.cpp',
  'dxvk_meta_mipgen.cpp',
  'dxvk_meta_pack.cpp',
  'dxvk_meta_resolve.cpp',
  'dxvk_openvr.cpp',
  'dxvk_options.cpp',
  'dxvk_pipecache.cpp',
  'dxvk_pipelayout.cpp',
  'dxvk_pipemanager.cpp',
  'dxvk_query.cpp',
  'dxvk_query_pool.cpp',
  'dxvk_query_manager.cpp',
  'dxvk_query_tracker.cpp',
  'dxvk_queue.cpp',
  'dxvk_renderpass.cpp',
  'dxvk_resource.cpp',
  'dxvk_sampler.cpp',
  'dxvk_shader.cpp',
  'dxvk_shader_key.cpp',
  'dxvk_spec_const.cpp',
  'dxvk_staging.cpp',
  'dxvk_state_cache.cpp',
  'dxvk_stats.cpp',
  'dxvk_unbound.cpp',
  'dxvk_util.cpp',
  
  'hud/dxvk_hud.cpp',
  'hud/dxvk_hud_config.cpp',
  'hud/dxvk_hud_devinfo.cpp',
  'hud/dxvk_hud_font.cpp',
  'hud/dxvk_hud_fps.cpp',
  'hud/dxvk_hud_renderer.cpp',
  'hud/dxvk_hud_stats.cpp',
])

thread_dep = dependency('threads')

dxvk_lib = static_library('dxvk', dxvk_src, glsl_generator.process(dxvk_shaders), dxvk_version,
  link_with           : [ util_lib, spirv_lib ],
  dependencies        : [ thread_dep, vkcommon_dep ] + dxvk_extradep,
  include_directories : [ dxvk_include_path ],
  override_options    : ['cpp_std='+dxvk_cpp_std])

dxvk_dep = declare_dependency(
  link_with           : [ dxvk_lib ],
  include_directories : [ dxvk_include_path ])