# Copyright 2022 Android Open Source Project
# SPDX-License-Identifier: MIT

#===============#
# Options       #
#===============#

with_vulkan_icd_dir = get_option('vulkan-icd-dir')
if with_vulkan_icd_dir == ''
  with_vulkan_icd_dir = join_paths(get_option('datadir'), 'vulkan/icd.d')
endif

subdir('mesa')

#===============#
# Configuration #
#===============#
gfxstream_guest_args = []

# Our internal guest build
gfxstream_guest_args += '-DLINUX_GUEST_BUILD'
# Don't want to goldfish OpenGL
gfxstream_guest_args += '-DGOLDFISH_NO_GL'
# This should just be called NO_TRACE eventually
gfxstream_guest_args += '-DFUCHSIA_NO_TRACE'
# Include the gfxstream private VkStructureType definitions
gfxstream_guest_args += '-DVK_GFXSTREAM_STRUCTURE_TYPE_EXT'

#===============#
# Dependencies  #
#===============#

dl_dep = cc.find_library('dl', required: false)
drm_dep = dependency('libdrm')
thread_dep = dependency('threads')

if with_guest_test
  virtgpu_kumquat_dep = dependency('virtgpu_kumquat_ffi')
endif

#===============#
# Includes      #
#===============#

inc_include_mesa = include_directories('mesa/include')
inc_vulkan_headers = include_directories('../common/vulkan/include')
inc_opengl_headers = include_directories('../common/opengl/include')
inc_fuchsia_magma = include_directories('../third-party/fuchsia/magma/include')
inc_fuchsia_magma_nolib = include_directories('../third-party/fuchsia/magma/include/lib')
inc_android_emu = include_directories('android-emu')
inc_gralloc = include_directories('gralloc_cb/include')
inc_magma = include_directories('magma')
inc_opengl_codec = include_directories('OpenglCodecCommon')
inc_opengl_system = include_directories('OpenglSystemCommon')
inc_render_enc = include_directories('renderControl_enc')
inc_system = include_directories('include')
inc_vulkan_enc = include_directories('vulkan_enc')

#================#
# Mesa compat    #
#================#
# dep_libdrm = drm_dep
# dep_dl = dl_dep
# dep_thread = thread_dep

#================#
# Subdirectories #
#================#

subdir('fuchsia')
subdir('iostream')
subdir('platform')
subdir('android-emu/aemu/base')
subdir('GoldfishAddressSpace')
subdir('qemupipe')
subdir('OpenglCodecCommon')
subdir('renderControl_enc')
subdir('OpenglSystemCommon')
subdir('magma')
subdir('vulkan_enc')
subdir('vulkan')
