# Copyright © 2017 Dylan Baker
# Copyright © 2017 Intel Corporation

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

inc_gallium_drivers = include_directories('drivers')
inc_gallium_winsys = include_directories('winsys')

subdir('auxiliary')
subdir('auxiliary/pipe-loader')
subdir('drivers/ddebug')
subdir('drivers/noop')
subdir('drivers/trace')
subdir('drivers/rbug')
subdir('winsys/sw/null')
if with_dri
  subdir('winsys/sw/dri')
else
  libswdri = []
endif
if with_gallium_drisw_kms
  subdir('winsys/sw/kms-dri')
else
  libswkmsdri = []
endif
subdir('winsys/sw/wrapper')
if with_gallium_swr
  if meson.version().version_compare('< 0.44.0')
    error('SWR requires meson 0.44.0 or greater.')
  endif
  subdir('drivers/swr')
else
  driver_swr = declare_dependency()
endif
if with_gallium_softpipe
  subdir('drivers/softpipe')
  if with_llvm
    subdir('drivers/llvmpipe')
  endif
else
  driver_swrast = declare_dependency()
endif
if with_gallium_r300 or with_gallium_radeonsi or with_gallium_r600
  subdir('winsys/radeon/drm')
endif
if with_gallium_r300
  subdir('drivers/r300')
else
  driver_r300 = declare_dependency()
endif
if with_gallium_r600
  subdir('drivers/r600')
else
  driver_r600 = declare_dependency()
endif
if with_gallium_radeonsi
  subdir('winsys/amdgpu/drm')
  subdir('drivers/radeon')
  subdir('drivers/radeonsi')
else
  driver_radeonsi = declare_dependency()
endif
if with_gallium_nouveau
  subdir('winsys/nouveau/drm')
  subdir('drivers/nouveau')
else
  driver_nouveau = declare_dependency()
endif
if with_gallium_freedreno
  subdir('winsys/freedreno/drm')
  subdir('drivers/freedreno')
else
  driver_freedreno = declare_dependency()
endif
if with_gallium_vc4
  subdir('winsys/vc4/drm')
  subdir('drivers/vc4')
else
  driver_vc4 = declare_dependency()
endif
if with_gallium_pl111
  subdir('winsys/pl111/drm')
else
  driver_pl111 = declare_dependency()
endif
if with_gallium_vc5
  subdir('winsys/vc5/drm')
  subdir('drivers/vc5')
else
  driver_vc5 = declare_dependency()
endif
if with_gallium_etnaviv
  subdir('winsys/etnaviv/drm')
  subdir('drivers/etnaviv')
else
  driver_etnaviv = declare_dependency()
endif
if with_gallium_imx
  subdir('winsys/imx/drm')
else
  driver_imx = declare_dependency()
endif
if with_gallium_i915
  subdir('winsys/i915/drm')
  subdir('drivers/i915')
else
  driver_i915 = declare_dependency()
endif
if with_gallium_svga
  subdir('winsys/svga/drm')
  subdir('drivers/svga')
else
  driver_svga = declare_dependency()
endif
if with_gallium_virgl
  subdir('winsys/virgl/drm')
  subdir('winsys/virgl/vtest')
  subdir('drivers/virgl')
else
  driver_virgl = declare_dependency()
endif
if with_gallium_vdpau
  subdir('state_trackers/vdpau')
endif
if with_gallium_xvmc
  subdir('state_trackers/xvmc')
endif
if with_gallium_omx
  subdir('state_trackers/omx_bellagio')
endif
if with_gallium_va
  subdir('state_trackers/va')
endif
if with_gallium_xa
  subdir('state_trackers/xa')
endif
if with_gallium_st_nine
  subdir('state_trackers/nine')
endif
if with_gallium_opencl
  # TODO: this isn't really clover specific, but ATM clover is the only
  # consumer
  subdir('targets/pipe-loader')

  if meson.version().version_compare('< 0.44.0')
    error('OpenCL requires meson 0.44.0 or greater.')
  endif
  subdir('state_trackers/clover')
  subdir('targets/opencl')
endif
if with_dri
  subdir('state_trackers/dri')
  subdir('targets/dri')
endif
if with_osmesa == 'gallium'
  subdir('state_trackers/osmesa')
  subdir('targets/osmesa')
endif
if with_glx == 'gallium-xlib'
  subdir('winsys/sw/xlib')
  subdir('state_trackers/glx/xlib')
  subdir('targets/libgl-xlib')
endif
if with_gallium_vdpau
  subdir('targets/vdpau')
endif
if with_gallium_xvmc
  subdir('targets/xvmc')
endif
if with_gallium_omx
  subdir('targets/omx-bellagio')
endif
if with_gallium_va
  subdir('targets/va')
endif
if with_gallium_xa
  subdir('targets/xa')
endif
if with_gallium_st_nine
  subdir('targets/d3dadapter9')
endif
# TODO: tests